AddTask creates and queues a new task for execution in the task pool. Parameters: - taskObj: The task object with initial configuration - userID: Optional ID of the user initiating the task - username: Username of the user initiating the task - projectID: ID of the project this task belongs to - ne
( taskObj db.Task, userID *int, username string, projectID int, needAlias bool, )
| 757 | // - The newly created task with all properties set |
| 758 | // - An error if task creation or validation fails |
| 759 | func (p *TaskPool) AddTask( |
| 760 | taskObj db.Task, |
| 761 | userID *int, |
| 762 | username string, |
| 763 | projectID int, |
| 764 | needAlias bool, |
| 765 | ) (newTask db.Task, err error) { |
| 766 | taskObj.Created = tz.Now() |
| 767 | taskObj.Status = task_logger.TaskWaitingStatus |
| 768 | taskObj.UserID = userID |
| 769 | taskObj.ProjectID = projectID |
| 770 | extraSecretVars := taskObj.Secret |
| 771 | taskObj.Secret = "{}" |
| 772 | |
| 773 | tpl, err := p.store.GetTemplate(projectID, taskObj.TemplateID) |
| 774 | if err != nil { |
| 775 | return |
| 776 | } |
| 777 | |
| 778 | err = taskObj.ValidateNewTask(tpl) |
| 779 | if err != nil { |
| 780 | return |
| 781 | } |
| 782 | |
| 783 | if tpl.Type == db.TemplateBuild { // get next version for TaskRunner if it is a Build |
| 784 | var builds []db.TaskWithTpl |
| 785 | builds, err = p.store.GetTemplateTasks(tpl.ProjectID, tpl.ID, db.RetrieveQueryParams{Count: 1}) |
| 786 | if err != nil { |
| 787 | return |
| 788 | } |
| 789 | if len(builds) == 0 || builds[0].Version == nil { |
| 790 | taskObj.Version = tpl.StartVersion |
| 791 | } else { |
| 792 | v := getNextBuildVersion(*tpl.StartVersion, *builds[0].Version) |
| 793 | taskObj.Version = &v |
| 794 | } |
| 795 | } |
| 796 | |
| 797 | newTask, err = p.store.CreateTask(taskObj, util.Config.MaxTasksPerTemplate) |
| 798 | if err != nil { |
| 799 | return |
| 800 | } |
| 801 | |
| 802 | taskRunner := NewTaskRunner(newTask, p, username, p.keyInstallationService) |
| 803 | |
| 804 | if needAlias { |
| 805 | // A unique, randomly-generated identifier that persists throughout the task's lifecycle. |
| 806 | taskRunner.Alias = random.String(32) |
| 807 | } |
| 808 | |
| 809 | err = taskRunner.populateDetails() |
| 810 | if err != nil { |
| 811 | taskRunner.Log("Error: " + err.Error()) |
| 812 | taskRunner.SetStatus(task_logger.TaskFailStatus) |
| 813 | return |
| 814 | } |
| 815 | |
| 816 | var job Job |
no test coverage detected