Skip to content

Commit

Permalink
Support structured results for PipelineRunObject
Browse files Browse the repository at this point in the history
  • Loading branch information
ywluogg committed Nov 1, 2022
1 parent 9a47793 commit e58c1eb
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 23 deletions.
30 changes: 13 additions & 17 deletions pkg/artifacts/signable.go
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,10 @@ func extractTargetFromResults(obj objects.TektonObject, identifierSuffix string,

for _, res := range obj.GetResults() {
if strings.HasSuffix(res.Name, identifierSuffix) {
if res.Value.StringVal == "" {
logger.Debugf("error getting string value for %s", res.Name)
continue
}
marker := strings.TrimSuffix(res.Name, identifierSuffix)
if v, ok := ss[marker]; ok {
v.URI = strings.TrimSpace(res.Value.StringVal)
Expand All @@ -276,6 +280,10 @@ func extractTargetFromResults(obj objects.TektonObject, identifierSuffix string,
// TODO: add logic for Intoto signable target as input.
}
if strings.HasSuffix(res.Name, digestSuffix) {
if res.Value.StringVal == "" {
logger.Debugf("error getting string value for %s", res.Name)
continue
}
marker := strings.TrimSuffix(res.Name, digestSuffix)
if v, ok := ss[marker]; ok {
v.Digest = strings.TrimSpace(res.Value.StringVal)
Expand Down Expand Up @@ -319,23 +327,11 @@ func ExtractStructuredTargetFromResults(obj objects.TektonObject, categoryMarker

// TODO(#592): support structured results using Run
results := []objects.Result{}
tr, isTaskRun := obj.GetObject().(*v1beta1.TaskRun)
if isTaskRun {
for _, res := range tr.Status.TaskRunResults {
results = append(results, objects.Result{
Name: res.Name,
Value: res.Value,
})
}

} else {
pr := obj.GetObject().(*v1beta1.PipelineRun)
for _, res := range pr.Status.PipelineResults {
results = append(results, objects.Result{
Name: res.Name,
Value: res.Value,
})
}
for _, res := range obj.GetResults() {
results = append(results, objects.Result{
Name: res.Name,
Value: res.Value,
})
}
for _, res := range results {
if strings.HasSuffix(res.Name, categoryMarker) {
Expand Down
2 changes: 2 additions & 0 deletions pkg/artifacts/signable_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -320,6 +320,8 @@ func TestExtractOCIImagesFromResults(t *testing.T) {
{Name: "IMAGE_DIGEST", Value: *v1beta1.NewArrayOrString(digest1)},
{Name: "img4_IMAGE_URL", Value: *v1beta1.NewArrayOrString("img4")},
{Name: "img5_IMAGE_DIGEST", Value: *v1beta1.NewArrayOrString("sha123:abc")},
{Name: "empty_str_IMAGE_DIGEST", Value: *v1beta1.NewArrayOrString("")},
{Name: "empty_str_IMAGE_URL", Value: *v1beta1.NewArrayOrString("")},
},
},
},
Expand Down
7 changes: 2 additions & 5 deletions pkg/chains/objects/objects.go
Original file line number Diff line number Diff line change
Expand Up @@ -176,11 +176,8 @@ func (pro *PipelineRunObject) GetResults() []Result {
res := []Result{}
for _, key := range pro.Status.PipelineResults {
res = append(res, Result{
Name: key.Name,
Value: v1beta1.ArrayOrString{
Type: v1beta1.ParamTypeString,
StringVal: key.Value.StringVal,
},
Name: key.Name,
Value: key.Value,
})
}
return res
Expand Down
71 changes: 70 additions & 1 deletion pkg/chains/objects/objects_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,21 @@ func getTaskRun() *v1beta1.TaskRun {
Name: "foo",
Namespace: "objects-test",
},
Spec: v1beta1.TaskRunSpec{},
Status: v1beta1.TaskRunStatus{
TaskRunStatusFields: v1beta1.TaskRunStatusFields{
TaskRunResults: []v1beta1.TaskRunResult{
{
Name: "img1_input_ARTIFACT_INPUTS",
Value: *v1beta1.NewObject(map[string]string{
"uri": "gcr.io/foo/bar",
"digest": "sha256:05f95b26ed10668b7183c1e2da98610e91372fa9f510046d4ce5812addad86b7",
}),
},
{Name: "mvn1_ARTIFACT_URI", Value: *v1beta1.NewArrayOrString("projects/test-project/locations/us-west4/repositories/test-repo/mavenArtifacts/com.google.guava:guava:31.0-jre")},
{Name: "mvn1_ARTIFACT_DIGEST", Value: *v1beta1.NewArrayOrString("sha256:05f95b26ed10668b7183c1e2da98610e91372fa9f510046d4ce5812addad86b5")},
},
},
},
}
}

Expand All @@ -54,6 +68,21 @@ func getPipelineRun() *v1beta1.PipelineRun {
Namespace: "objects-test",
},
Spec: v1beta1.PipelineRunSpec{},
Status: v1beta1.PipelineRunStatus{
PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{
PipelineResults: []v1beta1.PipelineRunResult{
{
Name: "img1_input_ARTIFACT_INPUTS",
Value: *v1beta1.NewObject(map[string]string{
"uri": "gcr.io/foo/bar",
"digest": "sha256:05f95b26ed10668b7183c1e2da98610e91372fa9f510046d4ce5812addad86b7",
}),
},
{Name: "mvn1_ARTIFACT_URI", Value: *v1beta1.NewArrayOrString("projects/test-project/locations/us-west4/repositories/test-repo/mavenArtifacts/com.google.guava:guava:31.0-jre")},
{Name: "mvn1_ARTIFACT_DIGEST", Value: *v1beta1.NewArrayOrString("sha256:05f95b26ed10668b7183c1e2da98610e91372fa9f510046d4ce5812addad86b5")},
},
},
},
}
}

Expand Down Expand Up @@ -127,3 +156,43 @@ func TestPipelineRun_ImagePullSecrets(t *testing.T) {
})
}
}

func TestPipelineRun_GetResults(t *testing.T) {

t.Run("TestPipelineRun_GetResults", func(t *testing.T) {
pr := NewPipelineRunObject(getPipelineRun())
got := pr.GetResults()
assert.ElementsMatch(t, got, []Result{
{
Name: "img1_input_ARTIFACT_INPUTS",
Value: *v1beta1.NewObject(map[string]string{
"uri": "gcr.io/foo/bar",
"digest": "sha256:05f95b26ed10668b7183c1e2da98610e91372fa9f510046d4ce5812addad86b7",
}),
},
{Name: "mvn1_ARTIFACT_URI", Value: *v1beta1.NewArrayOrString("projects/test-project/locations/us-west4/repositories/test-repo/mavenArtifacts/com.google.guava:guava:31.0-jre")},
{Name: "mvn1_ARTIFACT_DIGEST", Value: *v1beta1.NewArrayOrString("sha256:05f95b26ed10668b7183c1e2da98610e91372fa9f510046d4ce5812addad86b5")},
})
})

}

func TestTaskRun_GetResults(t *testing.T) {

t.Run("TestTaskRun_GetResults", func(t *testing.T) {
pr := NewTaskRunObject(getTaskRun())
got := pr.GetResults()
assert.ElementsMatch(t, got, []Result{
{
Name: "img1_input_ARTIFACT_INPUTS",
Value: *v1beta1.NewObject(map[string]string{
"uri": "gcr.io/foo/bar",
"digest": "sha256:05f95b26ed10668b7183c1e2da98610e91372fa9f510046d4ce5812addad86b7",
}),
},
{Name: "mvn1_ARTIFACT_URI", Value: *v1beta1.NewArrayOrString("projects/test-project/locations/us-west4/repositories/test-repo/mavenArtifacts/com.google.guava:guava:31.0-jre")},
{Name: "mvn1_ARTIFACT_DIGEST", Value: *v1beta1.NewArrayOrString("sha256:05f95b26ed10668b7183c1e2da98610e91372fa9f510046d4ce5812addad86b5")},
})
})

}

0 comments on commit e58c1eb

Please sign in to comment.