Skip to content

Commit d5b6c91

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 1b37def commit d5b6c91

File tree

5 files changed

+44
-15
lines changed

5 files changed

+44
-15
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/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{Provenance: &v1.Provenance{}}, "ImageID"))
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{Provenance: &v1.Provenance{}}, "ImageID"))
458458
if d := cmp.Diff(taskrun.Status.Steps, tc.expected, ops); d != "" {
459459
t.Fatalf("-got, +want: %v", d)
460460
}

test/stepaction_results_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -224,12 +224,14 @@ status:
224224
- name: result1
225225
type: string
226226
value: inlined-step
227+
provenance: {}
227228
- name: step2
228229
container: step-step2
229230
results:
230231
- name: result1
231232
type: string
232233
value: step-action
234+
provenance: {}
233235
`, namespace))
234236
return taskRun, expectedTaskRun
235237
}

test/taskrun_test.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ spec:
279279
Reason: "Completed",
280280
},
281281
},
282+
Provenance: &v1.Provenance{},
282283
},
283284
},
284285
},
@@ -308,6 +309,7 @@ spec:
308309
Reason: "Completed",
309310
},
310311
},
312+
Provenance: &v1.Provenance{},
311313
},
312314
},
313315
},
@@ -336,6 +338,7 @@ spec:
336338
Reason: "Error",
337339
},
338340
},
341+
Provenance: &v1.Provenance{},
339342
},
340343
},
341344
},
@@ -365,6 +368,7 @@ spec:
365368
Reason: "Error",
366369
},
367370
},
371+
Provenance: &v1.Provenance{},
368372
},
369373
},
370374
},
@@ -397,6 +401,7 @@ spec:
397401
Reason: "Error",
398402
},
399403
},
404+
Provenance: &v1.Provenance{},
400405
},
401406
{
402407
Container: "step-second",
@@ -408,6 +413,7 @@ spec:
408413
Reason: "Error",
409414
},
410415
},
416+
Provenance: &v1.Provenance{},
411417
},
412418
},
413419
},
@@ -437,6 +443,7 @@ spec:
437443
Reason: "TaskRunCancelled",
438444
},
439445
},
446+
Provenance: &v1.Provenance{},
440447
},
441448
},
442449
},

0 commit comments

Comments
 (0)