runservice: convert RunConfigTask.Depends to a map

This commit is contained in:
Simone Gotti 2019-04-12 17:04:07 +02:00
parent 991fcc59de
commit 5165984030
5 changed files with 107 additions and 184 deletions

View File

@ -197,8 +197,8 @@ func GenRunConfigTasks(uuid util.UUIDGenerator, c *config.Config, pipelineName s
for _, rct := range rcts { for _, rct := range rcts {
cpe := cp.Elements[rct.Name] cpe := cp.Elements[rct.Name]
depends := make([]*rstypes.RunConfigTaskDepend, len(cpe.Depends)) depends := make(map[string]*rstypes.RunConfigTaskDepend, len(cpe.Depends))
for id, d := range cpe.Depends { for _, d := range cpe.Depends {
conditions := make([]rstypes.RunConfigTaskDependCondition, len(d.Conditions)) conditions := make([]rstypes.RunConfigTaskDependCondition, len(d.Conditions))
// when no conditions are defined default to on_success // when no conditions are defined default to on_success
if len(d.Conditions) == 0 { if len(d.Conditions) == 0 {
@ -217,7 +217,7 @@ func GenRunConfigTasks(uuid util.UUIDGenerator, c *config.Config, pipelineName s
} }
drct := getRunConfigTaskByName(rcts, d.ElementName) drct := getRunConfigTaskByName(rcts, d.ElementName)
depends[id] = &rstypes.RunConfigTaskDepend{ depends[drct.ID] = &rstypes.RunConfigTaskDepend{
TaskID: drct.ID, TaskID: drct.ID,
Conditions: conditions, Conditions: conditions,
} }
@ -331,13 +331,7 @@ func GenTasksLevels(rcts map[string]*rstypes.RunConfigTask) error {
func GetParents(rcts map[string]*rstypes.RunConfigTask, task *rstypes.RunConfigTask) []*rstypes.RunConfigTask { func GetParents(rcts map[string]*rstypes.RunConfigTask, task *rstypes.RunConfigTask) []*rstypes.RunConfigTask {
parents := []*rstypes.RunConfigTask{} parents := []*rstypes.RunConfigTask{}
for _, t := range rcts { for _, t := range rcts {
isParent := false if _, ok := task.Depends[t.ID]; ok {
for _, d := range task.Depends {
if d.TaskID == t.ID {
isParent = true
}
}
if isParent {
parents = append(parents, t) parents = append(parents, t)
} }
} }
@ -387,5 +381,4 @@ func genValue(val config.Value, variables map[string]string) string {
default: default:
panic(fmt.Errorf("wrong value type: %q", val.Value)) panic(fmt.Errorf("wrong value type: %q", val.Value))
} }
return ""
} }

View File

@ -33,7 +33,7 @@ func TestGenTasksLevels(t *testing.T) {
type task struct { type task struct {
ID string ID string
Level int Level int
Depends []*rstypes.RunConfigTaskDepend Depends map[string]*rstypes.RunConfigTaskDepend
} }
tests := []struct { tests := []struct {
name string name string
@ -89,10 +89,8 @@ func TestGenTasksLevels(t *testing.T) {
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "1": &rstypes.RunConfigTaskDepend{TaskID: "1"},
TaskID: "1",
},
}, },
}, },
}, },
@ -104,10 +102,8 @@ func TestGenTasksLevels(t *testing.T) {
{ {
ID: "2", ID: "2",
Level: 1, Level: 1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "1": &rstypes.RunConfigTaskDepend{TaskID: "1"},
TaskID: "1",
},
}, },
}, },
}, },
@ -118,19 +114,15 @@ func TestGenTasksLevels(t *testing.T) {
{ {
ID: "1", ID: "1",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "1": &rstypes.RunConfigTaskDepend{TaskID: "1"},
TaskID: "1",
},
}, },
}, },
}, },
@ -142,28 +134,22 @@ func TestGenTasksLevels(t *testing.T) {
{ {
ID: "1", ID: "1",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "3": &rstypes.RunConfigTaskDepend{TaskID: "3"},
TaskID: "3",
},
}, },
}, },
{ {
ID: "3", ID: "3",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "1": &rstypes.RunConfigTaskDepend{TaskID: "1"},
TaskID: "1",
},
}, },
}, },
}, },
@ -175,28 +161,22 @@ func TestGenTasksLevels(t *testing.T) {
{ {
ID: "1", ID: "1",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "3": &rstypes.RunConfigTaskDepend{TaskID: "3"},
TaskID: "3",
},
}, },
}, },
{ {
ID: "3", ID: "3",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
}, },
@ -243,7 +223,7 @@ func TestGetAllParents(t *testing.T) {
type task struct { type task struct {
ID string ID string
Level int Level int
Depends []*rstypes.RunConfigTaskDepend Depends map[string]*rstypes.RunConfigTaskDepend
} }
tests := []struct { tests := []struct {
name string name string
@ -285,10 +265,8 @@ func TestGetAllParents(t *testing.T) {
{ {
ID: "1", ID: "1",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "1": &rstypes.RunConfigTaskDepend{TaskID: "1"},
TaskID: "1",
},
}, },
}, },
}, },
@ -306,10 +284,8 @@ func TestGetAllParents(t *testing.T) {
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "1": &rstypes.RunConfigTaskDepend{TaskID: "1"},
TaskID: "1",
},
}, },
}, },
}, },
@ -324,31 +300,23 @@ func TestGetAllParents(t *testing.T) {
{ {
ID: "1", ID: "1",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2", "3": &rstypes.RunConfigTaskDepend{TaskID: "3"},
},
&rstypes.RunConfigTaskDepend{
TaskID: "3",
},
}, },
}, },
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "4": &rstypes.RunConfigTaskDepend{TaskID: "4"},
TaskID: "4",
},
}, },
}, },
{ {
ID: "3", ID: "3",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "5": &rstypes.RunConfigTaskDepend{TaskID: "5"},
TaskID: "5",
},
}, },
}, },
{ {
@ -374,19 +342,15 @@ func TestGetAllParents(t *testing.T) {
{ {
ID: "1", ID: "1",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "1": &rstypes.RunConfigTaskDepend{TaskID: "1"},
TaskID: "1",
},
}, },
}, },
}, },
@ -401,28 +365,22 @@ func TestGetAllParents(t *testing.T) {
{ {
ID: "1", ID: "1",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "3": &rstypes.RunConfigTaskDepend{TaskID: "3"},
TaskID: "3",
},
}, },
}, },
{ {
ID: "3", ID: "3",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "1": &rstypes.RunConfigTaskDepend{TaskID: "1"},
TaskID: "1",
},
}, },
}, },
}, },
@ -438,28 +396,22 @@ func TestGetAllParents(t *testing.T) {
{ {
ID: "1", ID: "1",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "3": &rstypes.RunConfigTaskDepend{TaskID: "3"},
TaskID: "3",
},
}, },
}, },
{ {
ID: "3", ID: "3",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
}, },
@ -502,7 +454,7 @@ func TestCheckRunConfig(t *testing.T) {
type task struct { type task struct {
ID string ID string
Level int Level int
Depends []*rstypes.RunConfigTaskDepend Depends map[string]*rstypes.RunConfigTaskDepend
} }
tests := []struct { tests := []struct {
name string name string
@ -541,10 +493,8 @@ func TestCheckRunConfig(t *testing.T) {
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "1": &rstypes.RunConfigTaskDepend{TaskID: "1"},
TaskID: "1",
},
}, },
}, },
}, },
@ -555,19 +505,15 @@ func TestCheckRunConfig(t *testing.T) {
{ {
ID: "1", ID: "1",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "1": &rstypes.RunConfigTaskDepend{TaskID: "1"},
TaskID: "1",
},
}, },
}, },
}, },
@ -584,28 +530,22 @@ func TestCheckRunConfig(t *testing.T) {
{ {
ID: "1", ID: "1",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "3": &rstypes.RunConfigTaskDepend{TaskID: "3"},
TaskID: "3",
},
}, },
}, },
{ {
ID: "3", ID: "3",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "1": &rstypes.RunConfigTaskDepend{TaskID: "1"},
TaskID: "1",
},
}, },
}, },
}, },
@ -623,28 +563,22 @@ func TestCheckRunConfig(t *testing.T) {
{ {
ID: "1", ID: "1",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
{ {
ID: "2", ID: "2",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "3": &rstypes.RunConfigTaskDepend{TaskID: "3"},
TaskID: "3",
},
}, },
}, },
{ {
ID: "3", ID: "3",
Level: -1, Level: -1,
Depends: []*rstypes.RunConfigTaskDepend{ Depends: map[string]*rstypes.RunConfigTaskDepend{
&rstypes.RunConfigTaskDepend{ "2": &rstypes.RunConfigTaskDepend{TaskID: "2"},
TaskID: "2",
},
}, },
}, },
}, },
@ -795,7 +729,7 @@ func TestGenRunConfig(t *testing.T) {
out: map[string]*rstypes.RunConfigTask{ out: map[string]*rstypes.RunConfigTask{
uuid.New("element01").String(): &rstypes.RunConfigTask{ uuid.New("element01").String(): &rstypes.RunConfigTask{
ID: uuid.New("element01").String(), ID: uuid.New("element01").String(),
Name: "element01", Depends: []*rstypes.RunConfigTaskDepend{}, Name: "element01", Depends: map[string]*rstypes.RunConfigTaskDepend{},
Runtime: &rstypes.Runtime{Type: rstypes.RuntimeType("pod"), Runtime: &rstypes.Runtime{Type: rstypes.RuntimeType("pod"),
Containers: []*rstypes.Container{ Containers: []*rstypes.Container{
{ {
@ -879,7 +813,7 @@ func TestGenRunConfig(t *testing.T) {
out: map[string]*rstypes.RunConfigTask{ out: map[string]*rstypes.RunConfigTask{
uuid.New("element01").String(): &rstypes.RunConfigTask{ uuid.New("element01").String(): &rstypes.RunConfigTask{
ID: uuid.New("element01").String(), ID: uuid.New("element01").String(),
Name: "element01", Depends: []*rstypes.RunConfigTaskDepend{}, Name: "element01", Depends: map[string]*rstypes.RunConfigTaskDepend{},
Runtime: &rstypes.Runtime{Type: rstypes.RuntimeType("pod"), Runtime: &rstypes.Runtime{Type: rstypes.RuntimeType("pod"),
Containers: []*rstypes.Container{ Containers: []*rstypes.Container{
{ {
@ -959,7 +893,7 @@ func TestGenRunConfig(t *testing.T) {
out: map[string]*rstypes.RunConfigTask{ out: map[string]*rstypes.RunConfigTask{
uuid.New("element01").String(): &rstypes.RunConfigTask{ uuid.New("element01").String(): &rstypes.RunConfigTask{
ID: uuid.New("element01").String(), ID: uuid.New("element01").String(),
Name: "element01", Depends: []*rstypes.RunConfigTaskDepend{}, Name: "element01", Depends: map[string]*rstypes.RunConfigTaskDepend{},
Runtime: &rstypes.Runtime{Type: rstypes.RuntimeType("pod"), Runtime: &rstypes.Runtime{Type: rstypes.RuntimeType("pod"),
Containers: []*rstypes.Container{ Containers: []*rstypes.Container{
{ {

View File

@ -67,11 +67,11 @@ type RunResponse struct {
} }
type RunResponseTask struct { type RunResponseTask struct {
ID string `json:"id"` ID string `json:"id"`
Name string `json:"name"` Name string `json:"name"`
Status rstypes.RunTaskStatus `json:"status"` Status rstypes.RunTaskStatus `json:"status"`
Level int `json:"level"` Level int `json:"level"`
Depends []*rstypes.RunConfigTaskDepend `json:"depends"` Depends map[string]*rstypes.RunConfigTaskDepend `json:"depends"`
WaitingApproval bool `json:"waiting_approval"` WaitingApproval bool `json:"waiting_approval"`
Approved bool `json:"approved"` Approved bool `json:"approved"`

View File

@ -30,7 +30,7 @@ func TestAdvanceRunTasks(t *testing.T) {
"task01": &types.RunConfigTask{ "task01": &types.RunConfigTask{
ID: "task01", ID: "task01",
Name: "task01", Name: "task01",
Depends: []*types.RunConfigTaskDepend{}, Depends: map[string]*types.RunConfigTaskDepend{},
Runtime: &types.Runtime{Type: types.RuntimeType("pod"), Runtime: &types.Runtime{Type: types.RuntimeType("pod"),
Containers: []*types.Container{{Image: "image01"}}, Containers: []*types.Container{{Image: "image01"}},
}, },
@ -41,10 +41,8 @@ func TestAdvanceRunTasks(t *testing.T) {
"task02": &types.RunConfigTask{ "task02": &types.RunConfigTask{
ID: "task02", ID: "task02",
Name: "task02", Name: "task02",
Depends: []*types.RunConfigTaskDepend{ Depends: map[string]*types.RunConfigTaskDepend{
&types.RunConfigTaskDepend{ "task01": &types.RunConfigTaskDepend{TaskID: "task01"},
TaskID: "task01",
},
}, },
Runtime: &types.Runtime{Type: types.RuntimeType("pod"), Runtime: &types.Runtime{Type: types.RuntimeType("pod"),
Containers: []*types.Container{{Image: "image01"}}, Containers: []*types.Container{{Image: "image01"}},
@ -56,7 +54,7 @@ func TestAdvanceRunTasks(t *testing.T) {
"task03": &types.RunConfigTask{ "task03": &types.RunConfigTask{
ID: "task03", ID: "task03",
Name: "task03", Name: "task03",
Depends: []*types.RunConfigTaskDepend{}, Depends: map[string]*types.RunConfigTaskDepend{},
Runtime: &types.Runtime{Type: types.RuntimeType("pod"), Runtime: &types.Runtime{Type: types.RuntimeType("pod"),
Containers: []*types.Container{{Image: "image01"}}, Containers: []*types.Container{{Image: "image01"}},
}, },
@ -77,9 +75,9 @@ func TestAdvanceRunTasks(t *testing.T) {
"task05": &types.RunConfigTask{ "task05": &types.RunConfigTask{
ID: "task05", ID: "task05",
Name: "task05", Name: "task05",
Depends: []*types.RunConfigTaskDepend{ Depends: map[string]*types.RunConfigTaskDepend{
&types.RunConfigTaskDepend{TaskID: "task03"}, "task03": &types.RunConfigTaskDepend{TaskID: "task03"},
&types.RunConfigTaskDepend{TaskID: "task04"}, "task04": &types.RunConfigTaskDepend{TaskID: "task04"},
}, },
Runtime: &types.Runtime{Type: types.RuntimeType("pod"), Runtime: &types.Runtime{Type: types.RuntimeType("pod"),
Containers: []*types.Container{{Image: "image01"}}, Containers: []*types.Container{{Image: "image01"}},
@ -215,7 +213,7 @@ func TestGetTasksToRun(t *testing.T) {
"task01": &types.RunConfigTask{ "task01": &types.RunConfigTask{
ID: "task01", ID: "task01",
Name: "task01", Name: "task01",
Depends: []*types.RunConfigTaskDepend{}, Depends: map[string]*types.RunConfigTaskDepend{},
Runtime: &types.Runtime{Type: types.RuntimeType("pod"), Runtime: &types.Runtime{Type: types.RuntimeType("pod"),
Containers: []*types.Container{{Image: "image01"}}, Containers: []*types.Container{{Image: "image01"}},
}, },
@ -226,10 +224,8 @@ func TestGetTasksToRun(t *testing.T) {
"task02": &types.RunConfigTask{ "task02": &types.RunConfigTask{
ID: "task02", ID: "task02",
Name: "task02", Name: "task02",
Depends: []*types.RunConfigTaskDepend{ Depends: map[string]*types.RunConfigTaskDepend{
&types.RunConfigTaskDepend{ "task01": &types.RunConfigTaskDepend{TaskID: "task01"},
TaskID: "task01",
},
}, },
Runtime: &types.Runtime{Type: types.RuntimeType("pod"), Runtime: &types.Runtime{Type: types.RuntimeType("pod"),
Containers: []*types.Container{{Image: "image01"}}, Containers: []*types.Container{{Image: "image01"}},
@ -241,7 +237,7 @@ func TestGetTasksToRun(t *testing.T) {
"task03": &types.RunConfigTask{ "task03": &types.RunConfigTask{
ID: "task03", ID: "task03",
Name: "task03", Name: "task03",
Depends: []*types.RunConfigTaskDepend{}, Depends: map[string]*types.RunConfigTaskDepend{},
Runtime: &types.Runtime{Type: types.RuntimeType("pod"), Runtime: &types.Runtime{Type: types.RuntimeType("pod"),
Containers: []*types.Container{{Image: "image01"}}, Containers: []*types.Container{{Image: "image01"}},
}, },
@ -262,9 +258,9 @@ func TestGetTasksToRun(t *testing.T) {
"task05": &types.RunConfigTask{ "task05": &types.RunConfigTask{
ID: "task05", ID: "task05",
Name: "task05", Name: "task05",
Depends: []*types.RunConfigTaskDepend{ Depends: map[string]*types.RunConfigTaskDepend{
&types.RunConfigTaskDepend{TaskID: "task03"}, "task03": &types.RunConfigTaskDepend{TaskID: "task03"},
&types.RunConfigTaskDepend{TaskID: "task04"}, "task04": &types.RunConfigTaskDepend{TaskID: "task04"},
}, },
Runtime: &types.Runtime{Type: types.RuntimeType("pod"), Runtime: &types.Runtime{Type: types.RuntimeType("pod"),
Containers: []*types.Container{{Image: "image01"}}, Containers: []*types.Container{{Image: "image01"}},

View File

@ -316,19 +316,19 @@ func (rc *RunConfig) DeepCopy() *RunConfig {
} }
type RunConfigTask struct { type RunConfigTask struct {
Level int `json:"level,omitempty"` Level int `json:"level,omitempty"`
ID string `json:"id,omitempty"` ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"` Name string `json:"name,omitempty"`
Depends []*RunConfigTaskDepend `json:"depends"` Depends map[string]*RunConfigTaskDepend `json:"depends"`
Runtime *Runtime `json:"runtime,omitempty"` Runtime *Runtime `json:"runtime,omitempty"`
Environment map[string]string `json:"environment,omitempty"` Environment map[string]string `json:"environment,omitempty"`
WorkingDir string `json:"working_dir,omitempty"` WorkingDir string `json:"working_dir,omitempty"`
Shell string `json:"shell,omitempty"` Shell string `json:"shell,omitempty"`
User string `json:"user,omitempty"` User string `json:"user,omitempty"`
Steps []interface{} `json:"steps,omitempty"` Steps []interface{} `json:"steps,omitempty"`
IgnoreFailure bool `json:"ignore_failure,omitempty"` IgnoreFailure bool `json:"ignore_failure,omitempty"`
NeedsApproval bool `json:"needs_approval,omitempty"` NeedsApproval bool `json:"needs_approval,omitempty"`
Skip bool `json:"skip,omitempty"` Skip bool `json:"skip,omitempty"`
} }
type RunConfigTaskDependCondition string type RunConfigTaskDependCondition string