Skip to content

Commit 9d70974

Browse files
committed
feat(taskspec): create Status.Steps even without StepActions
With this change, TaskRun.Status.Steps are now populated even when there is only inline steps defined.
1 parent dce6d3f commit 9d70974

File tree

8 files changed

+44
-24
lines changed

8 files changed

+44
-24
lines changed

pkg/reconciler/taskrun/resources/taskspec.go

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -197,9 +197,24 @@ func updateTaskRunProvenance(taskRun *v1.TaskRun, stepName string, stepIndex int
197197

198198
// GetStepActionsData extracts the StepActions and merges them with the inlined Step specification.
199199
func GetStepActionsData(ctx context.Context, taskSpec v1.TaskSpec, taskRun *v1.TaskRun, tekton clientset.Interface, k8s kubernetes.Interface, requester remoteresource.Requester) ([]v1.Step, error) {
200-
// If there are no step-ref to resolve, return immediately
200+
steps := make([]v1.Step, len(taskSpec.Steps))
201+
202+
// Init step states and known step states indexes lookup map
203+
if taskRun.Status.Steps == nil {
204+
taskRun.Status.Steps = []v1.StepState{}
205+
}
206+
stepStatusIndex := make(map[string]int, len(taskRun.Status.Steps))
207+
for i, stepState := range taskRun.Status.Steps {
208+
stepStatusIndex[stepState.Name] = i
209+
}
210+
211+
// If there are no step-ref to resolve, return immediately with nil provenance
201212
if !hasStepRefs(&taskSpec) {
202-
return taskSpec.Steps, nil
213+
for i, step := range taskSpec.Steps {
214+
steps[i] = step
215+
updateTaskRunProvenance(taskRun, step.Name, i, nil, stepStatusIndex) // create StepState with nil provenance
216+
}
217+
return steps, nil
203218
}
204219

205220
// Phase 1: Concurrently resolve all StepActions
@@ -229,15 +244,6 @@ func GetStepActionsData(ctx context.Context, taskSpec v1.TaskSpec, taskRun *v1.T
229244
}
230245

231246
// Phase 2: Sequentially merge results into the final step list and update status
232-
if taskRun.Status.Steps == nil {
233-
taskRun.Status.Steps = []v1.StepState{}
234-
}
235-
stepStatusIndex := make(map[string]int, len(taskRun.Status.Steps))
236-
for i, stepState := range taskRun.Status.Steps {
237-
stepStatusIndex[stepState.Name] = i
238-
}
239-
240-
steps := make([]v1.Step, len(taskSpec.Steps))
241247
for i, step := range taskSpec.Steps {
242248
if step.Ref == nil {
243249
steps[i] = step

pkg/reconciler/taskrun/resources/taskspec_test.go

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -737,7 +737,8 @@ spec:
737737
Status: v1.TaskRunStatus{
738738
TaskRunStatusFields: v1.TaskRunStatusFields{
739739
Steps: []v1.StepState{{
740-
Name: "step1",
740+
Name: "step1",
741+
Provenance: &v1.Provenance{},
741742
}},
742743
},
743744
},
@@ -804,7 +805,20 @@ spec:
804805
},
805806
},
806807
},
807-
want: v1.TaskRunStatus{},
808+
want: v1.TaskRunStatus{
809+
TaskRunStatusFields: v1.TaskRunStatusFields{
810+
Steps: []v1.StepState{
811+
{
812+
Name: "first-inline",
813+
Provenance: &v1.Provenance{},
814+
},
815+
{
816+
Name: "second-inline",
817+
Provenance: &v1.Provenance{},
818+
},
819+
},
820+
},
821+
},
808822
}, {
809823
name: "StepAction only",
810824
tr: &v1.TaskRun{

test/conformance_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,7 @@ spec:
189189
}
190190

191191
ignoreTerminatedFields := cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID")
192-
ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "Name", "Container")
192+
ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "Name", "Container", "Provenance")
193193
if d := cmp.Diff(tr.Status.Steps, tc.expectedStepState, ignoreTerminatedFields, ignoreStepFields); d != "" {
194194
t.Fatalf("-got, +want: %v", d)
195195
}

test/conversion_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ var (
4343
filterV1beta1TaskRunStatus = cmpopts.IgnoreFields(v1beta1.TaskRunStatusFields{}, "StartTime", "CompletionTime")
4444
filterV1beta1PipelineRunStatus = cmpopts.IgnoreFields(v1beta1.PipelineRunStatusFields{}, "StartTime", "CompletionTime")
4545
filterContainerStateTerminated = cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID", "Message")
46-
filterV1StepState = cmpopts.IgnoreFields(v1.StepState{}, "Name", "ImageID", "Container")
47-
filterV1beta1StepState = cmpopts.IgnoreFields(v1beta1.StepState{}, "Name", "ImageID", "ContainerName")
46+
filterV1StepState = cmpopts.IgnoreFields(v1.StepState{}, "Name", "ImageID", "Container", "Provenance")
47+
filterV1beta1StepState = cmpopts.IgnoreFields(v1beta1.StepState{}, "Name", "ImageID", "ContainerName", "Provenance")
4848
filterV1TaskRunSA = cmpopts.IgnoreFields(v1.TaskRunSpec{}, "ServiceAccountName")
4949
filterV1PipelineRunSA = cmpopts.IgnoreFields(v1.PipelineTaskRunTemplate{}, "ServiceAccountName")
5050

test/step_when_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ spec:
238238
}
239239
var ops cmp.Options
240240
ops = append(ops, cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID", "Message"))
241-
ops = append(ops, cmpopts.IgnoreFields(v1.StepState{}, "ImageID"))
241+
ops = append(ops, cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "Provenance"))
242242
if d := cmp.Diff(taskrun.Status.Steps, tc.expected, ops); d != "" {
243243
t.Fatalf("-got, +want: %v", d)
244244
}
@@ -454,7 +454,7 @@ spec:
454454
}
455455
var ops cmp.Options
456456
ops = append(ops, cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID", "Message"))
457-
ops = append(ops, cmpopts.IgnoreFields(v1.StepState{}, "ImageID"))
457+
ops = append(ops, cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "Provenance"))
458458
if d := cmp.Diff(taskrun.Status.Steps, tc.expected, ops); d != "" {
459459
t.Fatalf("-got, +want: %v", d)
460460
}

test/taskrun_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@ spec:
132132
t.Fatalf("expected at least %d steps, got %d", expectedStepNumber, len(taskrun.Status.Steps))
133133
}
134134
ignoreTerminatedFields := cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID")
135-
ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "Running")
135+
ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "Running", "Provenance")
136136
lastStepIndex := len(expectedStepState) - 1
137137
for i := range lastStepIndex {
138138
if d := cmp.Diff(taskrun.Status.Steps[i], expectedStepState[i], ignoreTerminatedFields, ignoreStepFields); d != "" {
@@ -227,7 +227,7 @@ spec:
227227
}}
228228

229229
ignoreTerminatedFields := cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID")
230-
ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID")
230+
ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "Provenance")
231231
if d := cmp.Diff(taskrun.Status.Steps, expectedStepState, ignoreTerminatedFields, ignoreStepFields); d != "" {
232232
t.Fatalf("-got, +want: %v", d)
233233
}
@@ -481,7 +481,7 @@ spec:
481481
}
482482

483483
ignoreTerminatedFields := cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID", "Message")
484-
ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID")
484+
ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "Provenance")
485485
if d := cmp.Diff(taskRunState.Status.Steps, test.expectedStepStatus, ignoreTerminatedFields, ignoreStepFields); d != "" {
486486
t.Fatalf("-got, +want: %v", d)
487487
}
@@ -596,7 +596,7 @@ spec:
596596
Container: "step-unnamed-0",
597597
}}
598598
ignoreTerminatedFields := cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID")
599-
ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID")
599+
ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "Provenance")
600600
if d := cmp.Diff(taskrun.Status.Steps, expectedStepState, ignoreTerminatedFields, ignoreStepFields); d != "" {
601601
t.Fatalf("-got, +want: %v", d)
602602
}

test/util.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ var (
5454
ignoreObjectMeta = cmpopts.IgnoreFields(metav1.ObjectMeta{}, "ResourceVersion", "UID", "CreationTimestamp", "Generation", "ManagedFields", "Labels", "Annotations", "OwnerReferences")
5555
ignoreCondition = cmpopts.IgnoreFields(apis.Condition{}, "LastTransitionTime.Inner.Time", "Message")
5656
ignoreConditions = cmpopts.IgnoreFields(duckv1.Status{}, "Conditions")
57-
ignoreStepState = cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "TerminationReason")
57+
ignoreStepState = cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "TerminationReason", "Provenance")
5858
ignoreContainerStates = cmpopts.IgnoreFields(corev1.ContainerState{}, "Terminated")
5959
// ignoreSATaskRunSpec ignores the service account in the TaskRunSpec as it may differ across platforms
6060
ignoreSATaskRunSpec = cmpopts.IgnoreFields(v1.TaskRunSpec{}, "ServiceAccountName")

test/windows_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ import (
3636

3737
var (
3838
ignoreTerminatedFields = cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID")
39-
ignoreStepFields = cmpopts.IgnoreFields(v1.StepState{}, "ImageID")
39+
ignoreStepFields = cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "Provenance")
4040
)
4141

4242
func TestWindows(t *testing.T) {

0 commit comments

Comments
 (0)