コード例 #1
0
ファイル: job.go プロジェクト: icsnju/apt-mesos
func (core *Core) BuildImage(job *registry.Job) error {
	// Build Images before run test task
	// TaskID: build-{JobID}-{randID}-{NumberOfScale}
	log.Infof("Create task for job(%v) to build image", job.ID)
	job.Image = "image-" + job.ID
	for index := 1; index <= job.BuildNodeNumber(); index++ {
		task := &registry.Task{
			Cpus:       BuildCPU,
			Mem:        BuildMem,
			ID:         "build-" + job.ID + "-" + strconv.Itoa(index),
			Name:       job.Name,
			Type:       registry.TaskTypeBuild,
			CreateTime: time.Now().UnixNano(),
			JobID:      job.ID,
			State:      "TASK_WAITING",
			SLA:        registry.SLAOnePerNode,
		}

		err := core.AddTask(task.ID, task)
		job.PushTask(task)
		if err != nil {
			log.Errorf("Error when add %d build image task: %v", index, err)
			task.State = "TASK_FAILED"
			job.PopLastTask()
			continue
		}

	}
	return nil
}