MCPcopy
hub / github.com/semaphoreui/semaphore / AddTask

Method AddTask

services/tasks/TaskPool.go:759–859  ·  view source on GitHub ↗

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,
)

Source from the content-addressed store, hash-verified

757// - The newly created task with all properties set
758// - An error if task creation or validation fails
759func (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

Callers 4

RunMethod · 0.80
runMethod · 0.80
RunIntegrationFunction · 0.80
AddTaskFunction · 0.80

Calls 15

populateDetailsMethod · 0.95
LogMethod · 0.95
SetStatusMethod · 0.95
createTaskEventMethod · 0.95
NowFunction · 0.92
StringFunction · 0.92
CreateAppFunction · 0.92
getNextBuildVersionFunction · 0.85
NewTaskRunnerFunction · 0.85
ValidateNewTaskMethod · 0.80
GetTemplateMethod · 0.65
GetTemplateTasksMethod · 0.65

Tested by

no test coverage detected