diff --git a/pipeline/frontend/yaml/compiler/dag.go b/pipeline/frontend/yaml/compiler/dag.go index 935100600..1ce6a9f73 100644 --- a/pipeline/frontend/yaml/compiler/dag.go +++ b/pipeline/frontend/yaml/compiler/dag.go @@ -102,6 +102,8 @@ func dfsVisit(steps map[string]*dagCompilerStep, name string, visited map[string } } + delete(visited, name) + return nil } diff --git a/pipeline/frontend/yaml/compiler/dag_test.go b/pipeline/frontend/yaml/compiler/dag_test.go index 1bde0cfc7..e5a9d975d 100644 --- a/pipeline/frontend/yaml/compiler/dag_test.go +++ b/pipeline/frontend/yaml/compiler/dag_test.go @@ -51,6 +51,26 @@ func TestConvertDAGToStages(t *testing.T) { _, err = convertDAGToStages(steps, "") assert.NoError(t, err) + steps = map[string]*dagCompilerStep{ + "a": { + step: &backend_types.Step{}, + }, + "b": { + step: &backend_types.Step{}, + dependsOn: []string{"a"}, + }, + "c": { + step: &backend_types.Step{}, + dependsOn: []string{"a"}, + }, + "d": { + step: &backend_types.Step{}, + dependsOn: []string{"b", "c"}, + }, + } + _, err = convertDAGToStages(steps, "") + assert.NoError(t, err) + steps = map[string]*dagCompilerStep{ "step1": { step: &backend_types.Step{},