Skip to content

Commit 4e6baf9

Browse files
chitrangpateltekton-robot
authored andcommitted
Capture Remote StepAction Location in TaskRun Status
Prior to this, we captured remote Task and pipeline origin information (uri and digest) in the TaskRun/PipelineRun Status. This allowed Chains to pull this information and insert it into the intoto provenance. A similar capability was missing for the newly implemented StepActions. This PR fixes that gap. Fixes #8091
1 parent eb38a4e commit 4e6baf9

16 files changed

+645
-21
lines changed

docs/pipeline-api.md

+26-2
Original file line numberDiff line numberDiff line change
@@ -3437,7 +3437,7 @@ ParamType
34373437
<h3 id="tekton.dev/v1.Provenance">Provenance
34383438
</h3>
34393439
<p>
3440-
(<em>Appears on:</em><a href="#tekton.dev/v1.PipelineRunStatusFields">PipelineRunStatusFields</a>, <a href="#tekton.dev/v1.TaskRunStatusFields">TaskRunStatusFields</a>)
3440+
(<em>Appears on:</em><a href="#tekton.dev/v1.PipelineRunStatusFields">PipelineRunStatusFields</a>, <a href="#tekton.dev/v1.StepState">StepState</a>, <a href="#tekton.dev/v1.TaskRunStatusFields">TaskRunStatusFields</a>)
34413441
</p>
34423442
<div>
34433443
<p>Provenance contains metadata about resources used in the TaskRun/PipelineRun
@@ -4858,6 +4858,18 @@ string
48584858
</tr>
48594859
<tr>
48604860
<td>
4861+
<code>provenance</code><br/>
4862+
<em>
4863+
<a href="#tekton.dev/v1.Provenance">
4864+
Provenance
4865+
</a>
4866+
</em>
4867+
</td>
4868+
<td>
4869+
</td>
4870+
</tr>
4871+
<tr>
4872+
<td>
48614873
<code>terminationReason</code><br/>
48624874
<em>
48634875
string
@@ -12776,7 +12788,7 @@ ParamType
1277612788
<h3 id="tekton.dev/v1beta1.Provenance">Provenance
1277712789
</h3>
1277812790
<p>
12779-
(<em>Appears on:</em><a href="#tekton.dev/v1beta1.PipelineRunStatusFields">PipelineRunStatusFields</a>, <a href="#tekton.dev/v1beta1.TaskRunStatusFields">TaskRunStatusFields</a>)
12791+
(<em>Appears on:</em><a href="#tekton.dev/v1beta1.PipelineRunStatusFields">PipelineRunStatusFields</a>, <a href="#tekton.dev/v1beta1.StepState">StepState</a>, <a href="#tekton.dev/v1beta1.TaskRunStatusFields">TaskRunStatusFields</a>)
1278012792
</p>
1278112793
<div>
1278212794
<p>Provenance contains metadata about resources used in the TaskRun/PipelineRun
@@ -14444,6 +14456,18 @@ string
1444414456
</tr>
1444514457
<tr>
1444614458
<td>
14459+
<code>provenance</code><br/>
14460+
<em>
14461+
<a href="#tekton.dev/v1beta1.Provenance">
14462+
Provenance
14463+
</a>
14464+
</em>
14465+
</td>
14466+
<td>
14467+
</td>
14468+
</tr>
14469+
<tr>
14470+
<td>
1444714471
<code>inputs</code><br/>
1444814472
<em>
1444914473
<a href="#tekton.dev/v1beta1.Artifact">

pkg/apis/pipeline/v1/openapi_generated.go

+6-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/pipeline/v1/swagger.json

+3
Original file line numberDiff line numberDiff line change
@@ -1675,6 +1675,9 @@
16751675
"$ref": "#/definitions/v1.Artifact"
16761676
}
16771677
},
1678+
"provenance": {
1679+
"$ref": "#/definitions/v1.Provenance"
1680+
},
16781681
"results": {
16791682
"type": "array",
16801683
"items": {

pkg/apis/pipeline/v1/taskrun_types.go

+1
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,7 @@ type StepState struct {
364364
Container string `json:"container,omitempty"`
365365
ImageID string `json:"imageID,omitempty"`
366366
Results []TaskRunStepResult `json:"results,omitempty"`
367+
Provenance *Provenance `json:"provenance,omitempty"`
367368
TerminationReason string `json:"terminationReason,omitempty"`
368369
Inputs []TaskRunStepArtifact `json:"inputs,omitempty"`
369370
Outputs []TaskRunStepArtifact `json:"outputs,omitempty"`

pkg/apis/pipeline/v1/zz_generated.deepcopy.go

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/pipeline/v1beta1/openapi_generated.go

+6-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/apis/pipeline/v1beta1/swagger.json

+3
Original file line numberDiff line numberDiff line change
@@ -2437,6 +2437,9 @@
24372437
"$ref": "#/definitions/v1beta1.Artifact"
24382438
}
24392439
},
2440+
"provenance": {
2441+
"$ref": "#/definitions/v1beta1.Provenance"
2442+
},
24402443
"results": {
24412444
"type": "array",
24422445
"items": {

pkg/apis/pipeline/v1beta1/taskrun_conversion.go

+11
Original file line numberDiff line numberDiff line change
@@ -345,6 +345,12 @@ func (ss StepState) convertTo(ctx context.Context, sink *v1.StepState) {
345345
sink.ImageID = ss.ImageID
346346
sink.Results = nil
347347

348+
if ss.Provenance != nil {
349+
new := v1.Provenance{}
350+
ss.Provenance.convertTo(ctx, &new)
351+
sink.Provenance = &new
352+
}
353+
348354
if ss.ContainerState.Terminated != nil {
349355
sink.TerminationReason = ss.ContainerState.Terminated.Reason
350356
}
@@ -379,6 +385,11 @@ func (ss *StepState) convertFrom(ctx context.Context, source v1.StepState) {
379385
new.convertFrom(ctx, r)
380386
ss.Results = append(ss.Results, new)
381387
}
388+
if source.Provenance != nil {
389+
new := Provenance{}
390+
new.convertFrom(ctx, *source.Provenance)
391+
ss.Provenance = &new
392+
}
382393
for _, o := range source.Outputs {
383394
new := TaskRunStepArtifact{}
384395
new.convertFrom(ctx, o)

pkg/apis/pipeline/v1beta1/taskrun_conversion_test.go

+21
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,27 @@ func TestTaskRunConversion(t *testing.T) {
126126
},
127127
},
128128
},
129+
}, {
130+
name: "taskrun with provenance in step state",
131+
in: &v1beta1.TaskRun{
132+
ObjectMeta: metav1.ObjectMeta{
133+
Name: "foo",
134+
Namespace: "bar",
135+
},
136+
Spec: v1beta1.TaskRunSpec{},
137+
Status: v1beta1.TaskRunStatus{
138+
TaskRunStatusFields: v1beta1.TaskRunStatusFields{
139+
Steps: []v1beta1.StepState{{
140+
Provenance: &v1beta1.Provenance{
141+
RefSource: &v1beta1.RefSource{
142+
URI: "test-uri",
143+
Digest: map[string]string{"sha256": "digest"},
144+
},
145+
},
146+
}},
147+
},
148+
},
149+
},
129150
}, {
130151
name: "taskrun conversion all non deprecated fields",
131152
in: &v1beta1.TaskRun{

pkg/apis/pipeline/v1beta1/taskrun_types.go

+1
Original file line numberDiff line numberDiff line change
@@ -372,6 +372,7 @@ type StepState struct {
372372
ContainerName string `json:"container,omitempty"`
373373
ImageID string `json:"imageID,omitempty"`
374374
Results []TaskRunStepResult `json:"results,omitempty"`
375+
Provenance *Provenance `json:"provenance,omitempty"`
375376
Inputs []TaskRunStepArtifact `json:"inputs,omitempty"`
376377
Outputs []TaskRunStepArtifact `json:"outputs,omitempty"`
377378
}

pkg/apis/pipeline/v1beta1/zz_generated.deepcopy.go

+5
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/pod/entrypoint.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -352,8 +352,8 @@ func IsContainerStep(name string) bool { return strings.HasPrefix(name, stepPref
352352
// represents a sidecar.
353353
func IsContainerSidecar(name string) bool { return strings.HasPrefix(name, sidecarPrefix) }
354354

355-
// trimStepPrefix returns the container name, stripped of its step prefix.
356-
func trimStepPrefix(name string) string { return strings.TrimPrefix(name, stepPrefix) }
355+
// TrimStepPrefix returns the container name, stripped of its step prefix.
356+
func TrimStepPrefix(name string) string { return strings.TrimPrefix(name, stepPrefix) }
357357

358358
// TrimSidecarPrefix returns the container name, stripped of its sidecar
359359
// prefix.

pkg/pod/status.go

+15-5
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,6 @@ func MakeTaskRunStatus(ctx context.Context, logger *zap.SugaredLogger, tr v1.Tas
139139
}
140140

141141
trs.PodName = pod.Name
142-
trs.Steps = []v1.StepState{}
143142
trs.Sidecars = []v1.SidecarState{}
144143

145144
var stepStatuses []corev1.ContainerStatus
@@ -365,17 +364,28 @@ func setTaskRunStatusBasedOnStepStatus(ctx context.Context, logger *zap.SugaredL
365364
terminationReason = getTerminationReason(state.Terminated.Reason, terminationFromResults, exitCode)
366365
}
367366
}
368-
369-
trs.Steps = append(trs.Steps, v1.StepState{
367+
stepState := v1.StepState{
370368
ContainerState: *state,
371-
Name: trimStepPrefix(s.Name),
369+
Name: TrimStepPrefix(s.Name),
372370
Container: s.Name,
373371
ImageID: s.ImageID,
374372
Results: taskRunStepResults,
375373
TerminationReason: terminationReason,
376374
Inputs: sas.Inputs,
377375
Outputs: sas.Outputs,
378-
})
376+
}
377+
foundStep := false
378+
for i, ss := range trs.Steps {
379+
if ss.Name == stepState.Name {
380+
stepState.Provenance = ss.Provenance
381+
trs.Steps[i] = stepState
382+
foundStep = true
383+
break
384+
}
385+
}
386+
if !foundStep {
387+
trs.Steps = append(trs.Steps, stepState)
388+
}
379389
}
380390

381391
return merr

0 commit comments

Comments
 (0)