diff --git a/pkg/apis/pipeline/v1alpha1/resource_types.go b/pkg/apis/pipeline/v1alpha1/resource_types.go index 69e5d363e87..10f630aba30 100644 --- a/pkg/apis/pipeline/v1alpha1/resource_types.go +++ b/pkg/apis/pipeline/v1alpha1/resource_types.go @@ -149,7 +149,6 @@ type PipelineResource struct { metav1.ObjectMeta `json:"metadata,omitempty"` // Spec holds the desired state of the PipelineResource from the client - // +optional Spec PipelineResourceSpec `json:"spec,omitempty"` // Status communicates the observed state of the PipelineResource from the controller // +optional @@ -163,10 +162,11 @@ type PipelineResourceBinding struct { Name string `json:"name,omitempty"` // ResourceRef is a reference to the instance of the actual PipelineResource // that should be used - ResourceRef PipelineResourceRef `json:"resourceRef,omitempty"` // +optional + ResourceRef *PipelineResourceRef `json:"resourceRef,omitempty"` // ResourceSpec is specification of a resource that should be created and // consumed by the task + // +optional ResourceSpec *PipelineResourceSpec `json:"resourceSpec,omitempty"` } diff --git a/pkg/apis/pipeline/v1alpha1/taskrun_validation.go b/pkg/apis/pipeline/v1alpha1/taskrun_validation.go index dc00053583b..5051dcbf473 100644 --- a/pkg/apis/pipeline/v1alpha1/taskrun_validation.go +++ b/pkg/apis/pipeline/v1alpha1/taskrun_validation.go @@ -101,11 +101,11 @@ func validatePipelineResources(ctx context.Context, resources []TaskResourceBind } encountered[name] = struct{}{} // Check that both resource ref and resource Spec are not present - if r.ResourceRef.Name != "" && r.ResourceSpec != nil { + if r.ResourceRef != nil && r.ResourceSpec != nil { return apis.ErrDisallowedFields(fmt.Sprintf("%s.ResourceRef", path), fmt.Sprintf("%s.ResourceSpec", path)) } // Check that one of resource ref and resource Spec is present - if r.ResourceRef.Name == "" && r.ResourceSpec == nil { + if (r.ResourceRef == nil || r.ResourceRef.Name == "") && r.ResourceSpec == nil { return apis.ErrMissingField(fmt.Sprintf("%s.ResourceRef", path), fmt.Sprintf("%s.ResourceSpec", path)) } if r.ResourceSpec != nil && r.ResourceSpec.Validate(ctx) != nil { diff --git a/pkg/apis/pipeline/v1alpha1/taskrun_validation_test.go b/pkg/apis/pipeline/v1alpha1/taskrun_validation_test.go index 1dc63fba9b7..cf69907e7de 100644 --- a/pkg/apis/pipeline/v1alpha1/taskrun_validation_test.go +++ b/pkg/apis/pipeline/v1alpha1/taskrun_validation_test.go @@ -173,7 +173,7 @@ func TestInput_Validate(t *testing.T) { }}, Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "testresource", }, Name: "workspace", @@ -195,14 +195,14 @@ func TestInput_Invalidate(t *testing.T) { inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "testresource1", }, Name: "workspace", }, }, { PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "testresource2", }, Name: "workspace", @@ -215,7 +215,7 @@ func TestInput_Invalidate(t *testing.T) { inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "testresource", }, Name: "resource", @@ -235,7 +235,7 @@ func TestInput_Invalidate(t *testing.T) { inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "testresource", }, ResourceSpec: &v1alpha1.PipelineResourceSpec{ @@ -284,7 +284,7 @@ func TestOutput_Validate(t *testing.T) { i := v1alpha1.TaskRunOutputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "testresource", }, Name: "someimage", @@ -305,14 +305,14 @@ func TestOutput_Invalidate(t *testing.T) { outputs: v1alpha1.TaskRunOutputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "testresource1", }, Name: "workspace", }, }, { PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "testresource2", }, Name: "workspace", diff --git a/pkg/apis/pipeline/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/pipeline/v1alpha1/zz_generated.deepcopy.go index af5e97c4e39..a6466a997d6 100644 --- a/pkg/apis/pipeline/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/pipeline/v1alpha1/zz_generated.deepcopy.go @@ -787,7 +787,11 @@ func (in *PipelineResource) DeepCopyObject() runtime.Object { // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *PipelineResourceBinding) DeepCopyInto(out *PipelineResourceBinding) { *out = *in - out.ResourceRef = in.ResourceRef + if in.ResourceRef != nil { + in, out := &in.ResourceRef, &out.ResourceRef + *out = new(PipelineResourceRef) + **out = **in + } if in.ResourceSpec != nil { in, out := &in.ResourceSpec, &out.ResourceSpec *out = new(PipelineResourceSpec) diff --git a/pkg/reconciler/pipelinerun/resources/conditionresolution.go b/pkg/reconciler/pipelinerun/resources/conditionresolution.go index ed4b447f928..b6396039a8e 100644 --- a/pkg/reconciler/pipelinerun/resources/conditionresolution.go +++ b/pkg/reconciler/pipelinerun/resources/conditionresolution.go @@ -180,7 +180,7 @@ func (rcc *ResolvedConditionCheck) ToTaskResourceBindings() []v1alpha1.TaskResou }, } if r.SelfLink != "" { - tr.ResourceRef = v1alpha1.PipelineResourceRef{ + tr.ResourceRef = &v1alpha1.PipelineResourceRef{ Name: r.Name, APIVersion: r.APIVersion, } diff --git a/pkg/reconciler/pipelinerun/resources/input_output_steps.go b/pkg/reconciler/pipelinerun/resources/input_output_steps.go index abf2ddd8cf0..840fa12857e 100644 --- a/pkg/reconciler/pipelinerun/resources/input_output_steps.go +++ b/pkg/reconciler/pipelinerun/resources/input_output_steps.go @@ -36,7 +36,7 @@ func GetOutputSteps(outputs map[string]*v1alpha1.PipelineResource, taskName, sto // SelfLink is being checked there to determine if this PipelineResource is an instance that // exists in the cluster (in which case Kubernetes will populate this field) or is specified by Spec if outputResource.SelfLink != "" { - taskOutputResource.ResourceRef = v1alpha1.PipelineResourceRef{ + taskOutputResource.ResourceRef = &v1alpha1.PipelineResourceRef{ Name: outputResource.Name, APIVersion: outputResource.APIVersion, } @@ -66,7 +66,7 @@ func GetInputSteps(inputs map[string]*v1alpha1.PipelineResource, pt *v1alpha1.Pi // SelfLink is being checked there to determine if this PipelineResource is an instance that // exists in the cluster (in which case Kubernetes will populate this field) or is specified by Spec if inputResource.SelfLink != "" { - taskInputResource.ResourceRef = v1alpha1.PipelineResourceRef{ + taskInputResource.ResourceRef = &v1alpha1.PipelineResourceRef{ Name: inputResource.Name, APIVersion: inputResource.APIVersion, } diff --git a/pkg/reconciler/pipelinerun/resources/input_output_steps_test.go b/pkg/reconciler/pipelinerun/resources/input_output_steps_test.go index 84c664d7cd5..ba9cd54d2fc 100644 --- a/pkg/reconciler/pipelinerun/resources/input_output_steps_test.go +++ b/pkg/reconciler/pipelinerun/resources/input_output_steps_test.go @@ -62,7 +62,7 @@ func TestGetOutputSteps(t *testing.T) { expectedtaskOuputResources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "test-output", - ResourceRef: v1alpha1.PipelineResourceRef{Name: "resource1"}, + ResourceRef: &v1alpha1.PipelineResourceRef{Name: "resource1"}, }, Paths: []string{"/pvc/test-taskname/test-output"}, }}, @@ -76,13 +76,13 @@ func TestGetOutputSteps(t *testing.T) { expectedtaskOuputResources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "test-output", - ResourceRef: v1alpha1.PipelineResourceRef{Name: "resource1"}, + ResourceRef: &v1alpha1.PipelineResourceRef{Name: "resource1"}, }, Paths: []string{"/pvc/test-multiple-outputs/test-output"}, }, { PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "test-output-2", - ResourceRef: v1alpha1.PipelineResourceRef{Name: "resource2"}, + ResourceRef: &v1alpha1.PipelineResourceRef{Name: "resource2"}, }, Paths: []string{"/pvc/test-multiple-outputs/test-output-2"}, }}, @@ -166,7 +166,7 @@ func TestGetInputSteps(t *testing.T) { }, expectedtaskInputResources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{Name: "resource1"}, + ResourceRef: &v1alpha1.PipelineResourceRef{Name: "resource1"}, Name: "test-input", }, Paths: []string{"/pvc/prev-task-1/test-input"}, @@ -176,7 +176,7 @@ func TestGetInputSteps(t *testing.T) { inputs: map[string]*v1alpha1.PipelineResource{"test-input": r1}, expectedtaskInputResources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{Name: "resource1"}, + ResourceRef: &v1alpha1.PipelineResourceRef{Name: "resource1"}, Name: "test-input", }, }}, @@ -196,7 +196,7 @@ func TestGetInputSteps(t *testing.T) { }, expectedtaskInputResources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{Name: "resource1"}, + ResourceRef: &v1alpha1.PipelineResourceRef{Name: "resource1"}, Name: "test-input", }, Paths: []string{"/pvc/prev-task-1/test-input", "/pvc/prev-task-2/test-input"}, @@ -305,13 +305,13 @@ func TestWrapSteps(t *testing.T) { expectedtaskInputResources := []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{Name: "resource1"}, + ResourceRef: &v1alpha1.PipelineResourceRef{Name: "resource1"}, Name: "test-input", }, Paths: []string{"/pvc/prev-task/test-input"}, }, { PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{Name: "resource1"}, + ResourceRef: &v1alpha1.PipelineResourceRef{Name: "resource1"}, Name: "test-input-2", }, }, { @@ -322,7 +322,7 @@ func TestWrapSteps(t *testing.T) { }} expectedtaskOuputResources := []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{Name: "resource1"}, + ResourceRef: &v1alpha1.PipelineResourceRef{Name: "resource1"}, Name: "test-output", }, Paths: []string{"/pvc/test-task/test-output"}, diff --git a/pkg/reconciler/taskrun/resources/image_exporter_test.go b/pkg/reconciler/taskrun/resources/image_exporter_test.go index cd26da2332a..a6acd2efe12 100644 --- a/pkg/reconciler/taskrun/resources/image_exporter_test.go +++ b/pkg/reconciler/taskrun/resources/image_exporter_test.go @@ -70,7 +70,7 @@ func TestAddOutputImageDigestExporter(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-image", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image-1", }, }, @@ -80,7 +80,7 @@ func TestAddOutputImageDigestExporter(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-image", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image-1", }, }, @@ -137,7 +137,7 @@ func TestAddOutputImageDigestExporter(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-image", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image-1", }, }, @@ -147,7 +147,7 @@ func TestAddOutputImageDigestExporter(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-image", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image-1", }, }, diff --git a/pkg/reconciler/taskrun/resources/input_resource_test.go b/pkg/reconciler/taskrun/resources/input_resource_test.go index 6927496b272..0a051a88364 100644 --- a/pkg/reconciler/taskrun/resources/input_resource_test.go +++ b/pkg/reconciler/taskrun/resources/input_resource_test.go @@ -293,7 +293,7 @@ func TestAddResourceToTask(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "the-git", }, Name: "gitspace", @@ -340,7 +340,7 @@ func TestAddResourceToTask(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "the-git-with-branch", }, Name: "gitspace", @@ -376,14 +376,14 @@ func TestAddResourceToTask(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "the-git-with-branch", }, Name: "gitspace", }, }, { PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "the-git-with-branch", }, Name: "git-duplicate-space", @@ -426,7 +426,7 @@ func TestAddResourceToTask(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "the-git", }, Name: "gitspace", @@ -462,7 +462,7 @@ func TestAddResourceToTask(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "the-git-with-branch", }, Name: "gitspace", @@ -499,7 +499,7 @@ func TestAddResourceToTask(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "the-git", }, Name: "gitspace", @@ -543,7 +543,7 @@ func TestAddResourceToTask(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "storage1", }, Name: "workspace", @@ -583,7 +583,7 @@ func TestAddResourceToTask(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "storage1", }, Name: "workspace", @@ -627,7 +627,7 @@ func TestAddResourceToTask(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "storage-gcs-invalid", }, Name: "workspace", @@ -649,7 +649,7 @@ func TestAddResourceToTask(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "storage-gcs-invalid", }, Name: "workspace", @@ -702,7 +702,7 @@ func TestAddResourceToTask(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "target-cluster", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "cluster3", }, }, @@ -746,7 +746,7 @@ func TestAddResourceToTask(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "target-cluster", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "cluster2", }, }, @@ -923,7 +923,7 @@ func TestStorageInputResource(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "gcs-input-resource", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "storage-gcs-keys", }, }, @@ -1043,7 +1043,7 @@ func TestAddStepsToTaskWithBucketFromConfigMap(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "the-git", }, Name: "gitspace", @@ -1086,7 +1086,7 @@ func TestAddStepsToTaskWithBucketFromConfigMap(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "storage1", }, Name: "workspace", @@ -1129,7 +1129,7 @@ func TestAddStepsToTaskWithBucketFromConfigMap(t *testing.T) { Inputs: v1alpha1.TaskRunInputs{ Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "storage1", }, Name: "workspace", @@ -1137,7 +1137,7 @@ func TestAddStepsToTaskWithBucketFromConfigMap(t *testing.T) { Paths: []string{"prev-task-path"}, }, { PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "storage2", }, Name: "workspace2", @@ -1221,7 +1221,7 @@ func mockResolveTaskResources(taskRun *v1alpha1.TaskRun) map[string]v1alpha1.Pip for _, r := range taskRun.Spec.Inputs.Resources { var i v1alpha1.PipelineResourceInterface switch { - case r.ResourceRef.Name != "": + case r.ResourceRef != nil && r.ResourceRef.Name != "": i = inputResourceInterfaces[r.ResourceRef.Name] resolved[r.Name] = i case r.ResourceSpec != nil: diff --git a/pkg/reconciler/taskrun/resources/output_resource_test.go b/pkg/reconciler/taskrun/resources/output_resource_test.go index 9f11cf1f5c8..fc8c2372040 100644 --- a/pkg/reconciler/taskrun/resources/output_resource_test.go +++ b/pkg/reconciler/taskrun/resources/output_resource_test.go @@ -123,7 +123,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-git", }, }, @@ -133,7 +133,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-git", }, }, @@ -205,7 +205,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-git", }, }, @@ -270,7 +270,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image", }, }, @@ -314,7 +314,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-git", }, }, @@ -360,7 +360,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-gcs", }, }, @@ -370,7 +370,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-gcs", }, }, @@ -461,7 +461,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-gcs", }, }, @@ -538,7 +538,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-gcs", }, }, @@ -601,7 +601,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-gcs", }, }, @@ -667,7 +667,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image", }, }, @@ -713,7 +713,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image", }, }, @@ -755,7 +755,7 @@ func TestValidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image", }, }, @@ -844,7 +844,7 @@ func TestValidOutputResourcesWithBucketStorage(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-git", }, }, @@ -854,7 +854,7 @@ func TestValidOutputResourcesWithBucketStorage(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-git", }, }, @@ -913,7 +913,7 @@ func TestValidOutputResourcesWithBucketStorage(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-git", }, }, @@ -961,7 +961,7 @@ func TestValidOutputResourcesWithBucketStorage(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-git", }, }, @@ -1075,7 +1075,7 @@ func TestInvalidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-gcs", }, }, @@ -1125,7 +1125,7 @@ func TestInvalidOutputResources(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-workspace", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "invalid-source-storage", }, }, diff --git a/pkg/reconciler/taskrun/resources/taskresourceresolution.go b/pkg/reconciler/taskrun/resources/taskresourceresolution.go index 0084d11d6f9..ad50ab216bb 100644 --- a/pkg/reconciler/taskrun/resources/taskresourceresolution.go +++ b/pkg/reconciler/taskrun/resources/taskresourceresolution.go @@ -54,7 +54,7 @@ func ResolveTaskResources(ts *v1alpha1.TaskSpec, taskName string, kind v1alpha1. for _, r := range inputs { rr, err := GetResourceFromBinding(&r.PipelineResourceBinding, gr) if err != nil { - return nil, xerrors.Errorf("couldn't retrieve referenced input PipelineResource %q: %w", r.ResourceRef.Name, err) + return nil, xerrors.Errorf("couldn't retrieve referenced input PipelineResource: %w", err) } rtr.Inputs[r.Name] = rr @@ -64,7 +64,7 @@ func ResolveTaskResources(ts *v1alpha1.TaskSpec, taskName string, kind v1alpha1. rr, err := GetResourceFromBinding(&r.PipelineResourceBinding, gr) if err != nil { - return nil, xerrors.Errorf("couldn't retrieve referenced output PipelineResource %q: %w", r.ResourceRef.Name, err) + return nil, xerrors.Errorf("couldn't retrieve referenced output PipelineResource: %w", err) } rtr.Outputs[r.Name] = rr @@ -75,10 +75,10 @@ func ResolveTaskResources(ts *v1alpha1.TaskSpec, taskName string, kind v1alpha1. // GetResourceFromBinding will return an instance of a PipelineResource to use for r, either by getting it with getter or by // instantiating it from the embedded spec. func GetResourceFromBinding(r *v1alpha1.PipelineResourceBinding, getter GetResource) (*v1alpha1.PipelineResource, error) { - if r.ResourceRef.Name != "" && r.ResourceSpec != nil { + if (r.ResourceRef != nil && r.ResourceRef.Name != "") && r.ResourceSpec != nil { return nil, xerrors.New("Both ResourseRef and ResourceSpec are defined. Expected only one") } - if r.ResourceRef.Name != "" { + if r.ResourceRef != nil && r.ResourceRef.Name != "" { return getter(r.ResourceRef.Name) } if r.ResourceSpec != nil { diff --git a/pkg/reconciler/taskrun/resources/taskresourceresolution_test.go b/pkg/reconciler/taskrun/resources/taskresourceresolution_test.go index 1cb2e4de700..2bd42e468db 100644 --- a/pkg/reconciler/taskrun/resources/taskresourceresolution_test.go +++ b/pkg/reconciler/taskrun/resources/taskresourceresolution_test.go @@ -30,14 +30,14 @@ func TestResolveTaskRun(t *testing.T) { inputs := []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "repoToBuildFrom", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "git-repo", }, }, }, { PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "clusterToUse", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "k8s-cluster", }, }, @@ -53,14 +53,14 @@ func TestResolveTaskRun(t *testing.T) { outputs := []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "imageToBuild", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "image", }, }, }, { PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "gitRepoToUpdate", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "another-git-repo", }, }, @@ -168,7 +168,7 @@ func TestResolveTaskRun_missingOutput(t *testing.T) { outputs := []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "repoToUpdate", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "another-git-repo", }, }}} @@ -184,7 +184,7 @@ func TestResolveTaskRun_missingInput(t *testing.T) { inputs := []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "repoToBuildFrom", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "git-repo", }, }}} @@ -230,7 +230,7 @@ func TestResolveTaskRun_InvalidBothSpecified(t *testing.T) { PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "repoToBuildFrom", // Can't specify both ResourceRef and ResourceSpec - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "git-repo", }, ResourceSpec: &v1alpha1.PipelineResourceSpec{ @@ -267,7 +267,7 @@ func TestGetResourceFromBinding_Ref(t *testing.T) { }, } binding := &v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "foo-resource", }, } @@ -331,7 +331,7 @@ func TestGetResourceFromBinding_NameAndSpec(t *testing.T) { Value: "github.com/mycoolorg/mycoolrepo", }}, }, - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "foo-resource", }, } @@ -347,7 +347,7 @@ func TestGetResourceFromBinding_NameAndSpec(t *testing.T) { func TestGetResourceFromBinding_ErrorGettingResource(t *testing.T) { binding := &v1alpha1.PipelineResourceBinding{ - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "foo-resource", }, } diff --git a/pkg/reconciler/taskrun/taskrun_test.go b/pkg/reconciler/taskrun/taskrun_test.go index 0c4ae0680bf..814163fae3e 100644 --- a/pkg/reconciler/taskrun/taskrun_test.go +++ b/pkg/reconciler/taskrun/taskrun_test.go @@ -2048,7 +2048,7 @@ func TestUpdateTaskRunStatus_withValidJson(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-image", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image-1", }, }, @@ -2058,7 +2058,7 @@ func TestUpdateTaskRunStatus_withValidJson(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-image", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image-1", }, }, @@ -2106,7 +2106,7 @@ func TestUpdateTaskRunStatus_withInvalidJson(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-image", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image-1", }, }, @@ -2116,7 +2116,7 @@ func TestUpdateTaskRunStatus_withInvalidJson(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "source-image", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "source-image-1", }, }, diff --git a/test/builder/pipeline.go b/test/builder/pipeline.go index c805f31003f..4548607e2bc 100644 --- a/test/builder/pipeline.go +++ b/test/builder/pipeline.go @@ -330,7 +330,9 @@ func PipelineRunResourceBinding(name string, ops ...PipelineResourceBindingOp) P // PipelineResourceBindingRef set the ResourceRef name to the Resource called Name. func PipelineResourceBindingRef(name string) PipelineResourceBindingOp { return func(b *v1alpha1.PipelineResourceBinding) { - b.ResourceRef.Name = name + b.ResourceRef = &v1alpha1.PipelineResourceRef{ + Name: name, + } } } diff --git a/test/builder/pipeline_test.go b/test/builder/pipeline_test.go index b8242b0e87d..116d32c6cb7 100644 --- a/test/builder/pipeline_test.go +++ b/test/builder/pipeline_test.go @@ -165,7 +165,7 @@ func TestPipelineRun(t *testing.T) { Timeout: &metav1.Duration{Duration: 1 * time.Hour}, Resources: []v1alpha1.PipelineResourceBinding{{ Name: "some-resource", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "my-special-resource", }, }}, diff --git a/test/builder/task.go b/test/builder/task.go index e133b677fdb..54e89604614 100644 --- a/test/builder/task.go +++ b/test/builder/task.go @@ -571,7 +571,9 @@ func TaskRunInputsResource(name string, ops ...TaskResourceBindingOp) TaskRunInp // TaskResourceBindingRef set the PipelineResourceRef name to the TaskResourceBinding. func TaskResourceBindingRef(name string) TaskResourceBindingOp { return func(b *v1alpha1.TaskResourceBinding) { - b.ResourceRef.Name = name + b.ResourceRef = &v1alpha1.PipelineResourceRef{ + Name: name, + } } } diff --git a/test/builder/task_test.go b/test/builder/task_test.go index 077d7c8e01f..c426ce00253 100644 --- a/test/builder/task_test.go +++ b/test/builder/task_test.go @@ -190,7 +190,7 @@ func TestTaskRunWithTaskRef(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "git-resource", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "my-git", APIVersion: "a1", }, @@ -215,7 +215,7 @@ func TestTaskRunWithTaskRef(t *testing.T) { Resources: []v1alpha1.TaskResourceBinding{{ PipelineResourceBinding: v1alpha1.PipelineResourceBinding{ Name: "git-resource", - ResourceRef: v1alpha1.PipelineResourceRef{ + ResourceRef: &v1alpha1.PipelineResourceRef{ Name: "git-resource", }, }, diff --git a/third_party/VENDOR-LICENSE b/third_party/VENDOR-LICENSE index a1c1f86abf4..be452eec13a 100644 --- a/third_party/VENDOR-LICENSE +++ b/third_party/VENDOR-LICENSE @@ -5402,6 +5402,33 @@ Import: github.com/tektoncd/pipeline/vendor/github.com/modern-go/reflect2 +=========================================================== +Import: github.com/tektoncd/pipeline/vendor/github.com/mohae/deepcopy + +The MIT License (MIT) + +Copyright (c) 2014 Joel + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + + =========================================================== Import: github.com/tektoncd/pipeline/vendor/github.com/peterbourgon/diskv