diff --git a/config/300-pipeline.yaml b/config/300-pipeline.yaml index 678bbe0024d..f24e5572908 100644 --- a/config/300-pipeline.yaml +++ b/config/300-pipeline.yaml @@ -27,7 +27,7 @@ spec: versions: - name: v1beta1 served: true - storage: true + storage: false subresources: status: {} schema: @@ -43,7 +43,7 @@ spec: x-kubernetes-preserve-unknown-fields: true - name: v1 served: true - storage: false + storage: true schema: openAPIV3Schema: type: object diff --git a/config/300-pipelinerun.yaml b/config/300-pipelinerun.yaml index ec6b384f521..29df069109a 100644 --- a/config/300-pipelinerun.yaml +++ b/config/300-pipelinerun.yaml @@ -27,7 +27,7 @@ spec: versions: - name: v1beta1 served: true - storage: true + storage: false schema: openAPIV3Schema: type: object @@ -58,7 +58,7 @@ spec: status: {} - name: v1 served: true - storage: false + storage: true schema: openAPIV3Schema: type: object diff --git a/config/300-task.yaml b/config/300-task.yaml index 2a11c9ce30f..456774306ba 100644 --- a/config/300-task.yaml +++ b/config/300-task.yaml @@ -27,7 +27,7 @@ spec: versions: - name: v1beta1 served: true - storage: true + storage: false schema: openAPIV3Schema: type: object @@ -45,7 +45,7 @@ spec: status: {} - name: v1 served: true - storage: false + storage: true schema: openAPIV3Schema: type: object diff --git a/config/300-taskrun.yaml b/config/300-taskrun.yaml index b6bb3d1a549..13080c1dc73 100644 --- a/config/300-taskrun.yaml +++ b/config/300-taskrun.yaml @@ -27,7 +27,7 @@ spec: versions: - name: v1beta1 served: true - storage: true + storage: false schema: openAPIV3Schema: type: object @@ -58,7 +58,7 @@ spec: status: {} - name: v1 served: true - storage: false + storage: true schema: openAPIV3Schema: type: object diff --git a/docs/how-to-write-a-resolver.md b/docs/how-to-write-a-resolver.md index e9ff07eca4e..f3d159b69ad 100644 --- a/docs/how-to-write-a-resolver.md +++ b/docs/how-to-write-a-resolver.md @@ -197,7 +197,7 @@ import ( "github.com/tektoncd/pipeline/pkg/resolution/common" "github.com/tektoncd/pipeline/pkg/resolution/resolver/framework" "knative.dev/pkg/injection/sharedmain" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" ) ``` @@ -269,7 +269,7 @@ func (*myResolvedResource) Annotations() map[string]string { // RefSource is the source reference of the remote data that records where the remote // file came from including the url, digest and the entrypoint. None atm. -func (*myResolvedResource) RefSource() *pipelinev1beta1.RefSource { +func (*myResolvedResource) RefSource() *pipelinev1.RefSource { return nil } ``` @@ -282,8 +282,8 @@ following example. ```go // RefSource is the source reference of the remote data that records where the remote // file came from including the url, digest and the entrypoint. -func (*myResolvedResource) RefSource() *pipelinev1beta1.RefSource { - return &v1alpha1.RefSource{ +func (*myResolvedResource) RefSource() *pipelinev1.RefSource { + return &v1.RefSource{ URI: "https://github.com/user/example", Digest: map[string]string{ "sha1": "example", diff --git a/docs/pipeline-api.md b/docs/pipeline-api.md index b7a7d47b6c9..4f7bba7bbea 100644 --- a/docs/pipeline-api.md +++ b/docs/pipeline-api.md @@ -225,7 +225,7 @@ object.

refSource
- + RefSource @@ -291,7 +291,7 @@ ResolutionRequestSpec params
- + []Param @@ -345,7 +345,7 @@ ResolutionRequest CRD.

params
- + []Param @@ -443,8 +443,8 @@ object.

source
- -ConfigSource + +RefSource @@ -456,7 +456,7 @@ ConfigSource refSource
- + RefSource @@ -1569,6 +1569,9 @@ IncludeParamsList

Param

+

+(Appears on:ResolutionRequestSpec) +

Param declares an ParamValues to use for the parameter called name.

@@ -3125,7 +3128,7 @@ github.com/tektoncd/pipeline/pkg/apis/config.FeatureFlags

RefSource

-(Appears on:Provenance) +(Appears on:Provenance, ResolutionRequestStatusFields, ResolutionRequestStatusFields)

RefSource contains the information that can uniquely identify where a remote @@ -8825,7 +8828,7 @@ int32

ConfigSource

-(Appears on:Provenance, ResolutionRequestStatusFields) +(Appears on:Provenance)

ConfigSource contains the information that can uniquely identify where a remote @@ -9348,7 +9351,7 @@ IncludeParamsList

Param

-(Appears on:TaskRunInputs, ResolutionRequestSpec) +(Appears on:TaskRunInputs)

Param declares an ParamValues to use for the parameter called name.

@@ -11258,7 +11261,7 @@ github.com/tektoncd/pipeline/pkg/apis/config.FeatureFlags

RefSource

-(Appears on:Provenance, ResolutionRequestStatusFields, ResolutionRequestStatusFields) +(Appears on:Provenance)

RefSource contains the information that can uniquely identify where a remote diff --git a/docs/resolver-template/cmd/demoresolver/main.go b/docs/resolver-template/cmd/demoresolver/main.go index 89ebe801194..4c11d7164c2 100644 --- a/docs/resolver-template/cmd/demoresolver/main.go +++ b/docs/resolver-template/cmd/demoresolver/main.go @@ -17,7 +17,7 @@ import ( "context" "errors" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" "github.com/tektoncd/pipeline/pkg/resolution/common" "github.com/tektoncd/pipeline/pkg/resolution/resolver/framework" @@ -52,7 +52,7 @@ func (r *resolver) GetSelector(context.Context) map[string]string { } // ValidateParams ensures parameters from a request are as expected. -func (r *resolver) ValidateParams(ctx context.Context, params []pipelinev1beta1.Param) error { +func (r *resolver) ValidateParams(ctx context.Context, params []pipelinev1.Param) error { if len(params) > 0 { return errors.New("no params allowed") } @@ -60,13 +60,13 @@ func (r *resolver) ValidateParams(ctx context.Context, params []pipelinev1beta1. } // Resolve uses the given params to resolve the requested file or resource. -func (r *resolver) Resolve(ctx context.Context, params []pipelinev1beta1.Param) (framework.ResolvedResource, error) { +func (r *resolver) Resolve(ctx context.Context, params []pipelinev1.Param) (framework.ResolvedResource, error) { return &myResolvedResource{}, nil } // our hard-coded resolved file to return const pipeline = ` -apiVersion: tekton.dev/v1beta1 +apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: my-pipeline @@ -95,6 +95,6 @@ func (*myResolvedResource) Annotations() map[string]string { // RefSource is the source reference of the remote data that records where the remote // file came from including the url, digest and the entrypoint. None atm. -func (*myResolvedResource) RefSource() *pipelinev1beta1.RefSource { +func (*myResolvedResource) RefSource() *pipelinev1.RefSource { return nil } diff --git a/examples/v1beta1/pipelineruns/git-resolver.yaml b/examples/v1beta1/pipelineruns/beta/git-resolver.yaml similarity index 100% rename from examples/v1beta1/pipelineruns/git-resolver.yaml rename to examples/v1beta1/pipelineruns/beta/git-resolver.yaml diff --git a/examples/v1beta1/pipelineruns/pipelinerun-with-final-tasks.yaml b/examples/v1beta1/pipelineruns/beta/pipelinerun-with-final-tasks.yaml similarity index 100% rename from examples/v1beta1/pipelineruns/pipelinerun-with-final-tasks.yaml rename to examples/v1beta1/pipelineruns/beta/pipelinerun-with-final-tasks.yaml diff --git a/examples/v1beta1/pipelineruns/pipelinerun.yaml b/examples/v1beta1/pipelineruns/beta/pipelinerun.yaml similarity index 100% rename from examples/v1beta1/pipelineruns/pipelinerun.yaml rename to examples/v1beta1/pipelineruns/beta/pipelinerun.yaml diff --git a/examples/v1beta1/taskruns/bundles-resolver.yaml b/examples/v1beta1/taskruns/beta/bundles-resolver.yaml similarity index 100% rename from examples/v1beta1/taskruns/bundles-resolver.yaml rename to examples/v1beta1/taskruns/beta/bundles-resolver.yaml diff --git a/examples/v1beta1/taskruns/git-resolver.yaml b/examples/v1beta1/taskruns/beta/git-resolver.yaml similarity index 100% rename from examples/v1beta1/taskruns/git-resolver.yaml rename to examples/v1beta1/taskruns/beta/git-resolver.yaml diff --git a/examples/v1beta1/taskruns/hub-resolver.yaml b/examples/v1beta1/taskruns/beta/hub-resolver.yaml similarity index 100% rename from examples/v1beta1/taskruns/hub-resolver.yaml rename to examples/v1beta1/taskruns/beta/hub-resolver.yaml diff --git a/pkg/apis/pipeline/v1beta1/openapi_generated.go b/pkg/apis/pipeline/v1beta1/openapi_generated.go index 54ad5688958..266b5711b9d 100644 --- a/pkg/apis/pipeline/v1beta1/openapi_generated.go +++ b/pkg/apis/pipeline/v1beta1/openapi_generated.go @@ -6012,7 +6012,7 @@ func schema_pkg_apis_resolution_v1beta1_ResolutionRequestSpec(ref common.Referen Schema: &spec.Schema{ SchemaProps: spec.SchemaProps{ Default: map[string]interface{}{}, - Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.Param"), + Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1.Param"), }, }, }, @@ -6022,7 +6022,7 @@ func schema_pkg_apis_resolution_v1beta1_ResolutionRequestSpec(ref common.Referen }, }, Dependencies: []string{ - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.Param"}, + "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1.Param"}, } } @@ -6087,13 +6087,13 @@ func schema_pkg_apis_resolution_v1beta1_ResolutionRequestStatus(ref common.Refer "source": { SchemaProps: spec.SchemaProps{ Description: "Deprecated: Use RefSource instead", - Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.ConfigSource"), + Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1.RefSource"), }, }, "refSource": { SchemaProps: spec.SchemaProps{ Description: "RefSource is the source reference of the remote data that records the url, digest and the entrypoint.", - Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.RefSource"), + Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1.RefSource"), }, }, }, @@ -6101,7 +6101,7 @@ func schema_pkg_apis_resolution_v1beta1_ResolutionRequestStatus(ref common.Refer }, }, Dependencies: []string{ - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.ConfigSource", "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.RefSource", "knative.dev/pkg/apis.Condition"}, + "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1.RefSource", "knative.dev/pkg/apis.Condition"}, } } @@ -6123,13 +6123,13 @@ func schema_pkg_apis_resolution_v1beta1_ResolutionRequestStatusFields(ref common "source": { SchemaProps: spec.SchemaProps{ Description: "Deprecated: Use RefSource instead", - Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.ConfigSource"), + Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1.RefSource"), }, }, "refSource": { SchemaProps: spec.SchemaProps{ Description: "RefSource is the source reference of the remote data that records the url, digest and the entrypoint.", - Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.RefSource"), + Ref: ref("github.com/tektoncd/pipeline/pkg/apis/pipeline/v1.RefSource"), }, }, }, @@ -6137,6 +6137,6 @@ func schema_pkg_apis_resolution_v1beta1_ResolutionRequestStatusFields(ref common }, }, Dependencies: []string{ - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.ConfigSource", "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1.RefSource"}, + "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1.RefSource"}, } } diff --git a/pkg/apis/pipeline/v1beta1/param_conversion.go b/pkg/apis/pipeline/v1beta1/param_conversion.go index 18de6bd71d2..5ac4f50a863 100644 --- a/pkg/apis/pipeline/v1beta1/param_conversion.go +++ b/pkg/apis/pipeline/v1beta1/param_conversion.go @@ -77,7 +77,8 @@ func (p Param) convertTo(ctx context.Context, sink *v1.Param) { sink.Value = newValue } -func (p *Param) convertFrom(ctx context.Context, source v1.Param) { +// ConvertFrom converts v1beta1 Param from v1 Param +func (p *Param) ConvertFrom(ctx context.Context, source v1.Param) { p.Name = source.Name newValue := ParamValue{} newValue.convertFrom(ctx, source.Value) diff --git a/pkg/apis/pipeline/v1beta1/pipeline_conversion.go b/pkg/apis/pipeline/v1beta1/pipeline_conversion.go index fb37b4ce886..d6b4c770ee2 100644 --- a/pkg/apis/pipeline/v1beta1/pipeline_conversion.go +++ b/pkg/apis/pipeline/v1beta1/pipeline_conversion.go @@ -191,7 +191,7 @@ func (pt *PipelineTask) convertFrom(ctx context.Context, source v1.PipelineTask, pt.Description = source.Description if source.TaskRef != nil { newTaskRef := TaskRef{} - newTaskRef.convertFrom(ctx, *source.TaskRef) + newTaskRef.ConvertFrom(ctx, *source.TaskRef) pt.TaskRef = &newTaskRef } if source.TaskSpec != nil { @@ -213,7 +213,7 @@ func (pt *PipelineTask) convertFrom(ctx context.Context, source v1.PipelineTask, pt.Params = nil for _, p := range source.Params { new := Param{} - new.convertFrom(ctx, p) + new.ConvertFrom(ctx, p) pt.Params = append(pt.Params, new) } pt.Matrix = nil @@ -280,7 +280,7 @@ func (m *Matrix) convertTo(ctx context.Context, sink *v1.Matrix) { func (m *Matrix) convertFrom(ctx context.Context, source v1.Matrix) { for _, param := range source.Params { new := Param{} - new.convertFrom(ctx, param) + new.ConvertFrom(ctx, param) m.Params = append(m.Params, new) } @@ -288,7 +288,7 @@ func (m *Matrix) convertFrom(ctx context.Context, source v1.Matrix) { m.Include = append(m.Include, IncludeParams{Name: include.Name}) for _, p := range include.Params { new := Param{} - new.convertFrom(ctx, p) + new.ConvertFrom(ctx, p) m.Include[i].Params = append(m.Include[i].Params, new) } } diff --git a/pkg/apis/pipeline/v1beta1/pipelinerun_conversion.go b/pkg/apis/pipeline/v1beta1/pipelinerun_conversion.go index 5792ab20abf..0b3f45274ca 100644 --- a/pkg/apis/pipeline/v1beta1/pipelinerun_conversion.go +++ b/pkg/apis/pipeline/v1beta1/pipelinerun_conversion.go @@ -123,7 +123,7 @@ func (prs *PipelineRunSpec) ConvertFrom(ctx context.Context, source *v1.Pipeline prs.Params = nil for _, p := range source.Params { new := Param{} - new.convertFrom(ctx, p) + new.ConvertFrom(ctx, p) prs.Params = append(prs.Params, new) } prs.ServiceAccountName = source.TaskRunTemplate.ServiceAccountName @@ -137,7 +137,7 @@ func (prs *PipelineRunSpec) ConvertFrom(ctx context.Context, source *v1.Pipeline prs.Workspaces = nil for _, w := range source.Workspaces { new := WorkspaceBinding{} - new.convertFrom(ctx, w) + new.ConvertFrom(ctx, w) prs.Workspaces = append(prs.Workspaces, new) } prs.TaskRunSpecs = nil diff --git a/pkg/apis/pipeline/v1beta1/resolver_conversion.go b/pkg/apis/pipeline/v1beta1/resolver_conversion.go index 3bbed850324..93c6b7d2aa1 100644 --- a/pkg/apis/pipeline/v1beta1/resolver_conversion.go +++ b/pkg/apis/pipeline/v1beta1/resolver_conversion.go @@ -37,7 +37,7 @@ func (rr *ResolverRef) convertFrom(ctx context.Context, source v1.ResolverRef) { rr.Params = nil for _, r := range source.Params { new := Param{} - new.convertFrom(ctx, r) + new.ConvertFrom(ctx, r) rr.Params = append(rr.Params, new) } } diff --git a/pkg/apis/pipeline/v1beta1/swagger.json b/pkg/apis/pipeline/v1beta1/swagger.json index 8d21207aff4..f14c57edbb0 100644 --- a/pkg/apis/pipeline/v1beta1/swagger.json +++ b/pkg/apis/pipeline/v1beta1/swagger.json @@ -1630,7 +1630,7 @@ "type": "array", "items": { "default": {}, - "$ref": "#/definitions/v1beta1.Param" + "$ref": "#/definitions/v1.Param" }, "x-kubernetes-list-type": "atomic" } @@ -1675,11 +1675,11 @@ }, "refSource": { "description": "RefSource is the source reference of the remote data that records the url, digest and the entrypoint.", - "$ref": "#/definitions/v1beta1.RefSource" + "$ref": "#/definitions/v1.RefSource" }, "source": { "description": "Deprecated: Use RefSource instead", - "$ref": "#/definitions/v1beta1.ConfigSource" + "$ref": "#/definitions/v1.RefSource" } } }, @@ -1699,11 +1699,11 @@ }, "refSource": { "description": "RefSource is the source reference of the remote data that records the url, digest and the entrypoint.", - "$ref": "#/definitions/v1beta1.RefSource" + "$ref": "#/definitions/v1.RefSource" }, "source": { "description": "Deprecated: Use RefSource instead", - "$ref": "#/definitions/v1beta1.ConfigSource" + "$ref": "#/definitions/v1.RefSource" } } }, diff --git a/pkg/apis/pipeline/v1beta1/taskref_conversion.go b/pkg/apis/pipeline/v1beta1/taskref_conversion.go index e8e695194bc..ab5f2a5614e 100644 --- a/pkg/apis/pipeline/v1beta1/taskref_conversion.go +++ b/pkg/apis/pipeline/v1beta1/taskref_conversion.go @@ -34,7 +34,8 @@ func (tr TaskRef) convertTo(ctx context.Context, sink *v1.TaskRef) { tr.convertBundleToResolver(sink) } -func (tr *TaskRef) convertFrom(ctx context.Context, source v1.TaskRef) { +// ConvertFrom converts v1beta1 TaskRef from v1 TaskRef +func (tr *TaskRef) ConvertFrom(ctx context.Context, source v1.TaskRef) { tr.Name = source.Name tr.Kind = TaskKind(source.Kind) tr.APIVersion = source.APIVersion diff --git a/pkg/apis/pipeline/v1beta1/taskrun_conversion.go b/pkg/apis/pipeline/v1beta1/taskrun_conversion.go index 1819cfe2645..d97da847a3a 100644 --- a/pkg/apis/pipeline/v1beta1/taskrun_conversion.go +++ b/pkg/apis/pipeline/v1beta1/taskrun_conversion.go @@ -134,13 +134,13 @@ func (trs *TaskRunSpec) ConvertFrom(ctx context.Context, source *v1.TaskRunSpec, trs.Params = nil for _, p := range source.Params { new := Param{} - new.convertFrom(ctx, p) + new.ConvertFrom(ctx, p) trs.Params = append(trs.Params, new) } trs.ServiceAccountName = source.ServiceAccountName if source.TaskRef != nil { newTaskRef := TaskRef{} - newTaskRef.convertFrom(ctx, *source.TaskRef) + newTaskRef.ConvertFrom(ctx, *source.TaskRef) trs.TaskRef = &newTaskRef } if source.TaskSpec != nil { @@ -159,7 +159,7 @@ func (trs *TaskRunSpec) ConvertFrom(ctx context.Context, source *v1.TaskRunSpec, trs.Workspaces = nil for _, w := range source.Workspaces { new := WorkspaceBinding{} - new.convertFrom(ctx, w) + new.ConvertFrom(ctx, w) trs.Workspaces = append(trs.Workspaces, new) } trs.StepOverrides = nil diff --git a/pkg/apis/pipeline/v1beta1/workspace_conversion.go b/pkg/apis/pipeline/v1beta1/workspace_conversion.go index f7daa5cfb43..e1f33a7fbb5 100644 --- a/pkg/apis/pipeline/v1beta1/workspace_conversion.go +++ b/pkg/apis/pipeline/v1beta1/workspace_conversion.go @@ -84,7 +84,8 @@ func (w WorkspaceBinding) convertTo(ctx context.Context, sink *v1.WorkspaceBindi sink.CSI = w.CSI } -func (w *WorkspaceBinding) convertFrom(ctx context.Context, source v1.WorkspaceBinding) { +// ConvertFrom converts v1beta1 Param from v1 Param +func (w *WorkspaceBinding) ConvertFrom(ctx context.Context, source v1.WorkspaceBinding) { w.Name = source.Name w.SubPath = source.SubPath w.VolumeClaimTemplate = source.VolumeClaimTemplate diff --git a/pkg/apis/resolution/v1alpha1/resolution_request_conversion.go b/pkg/apis/resolution/v1alpha1/resolution_request_conversion.go index 7ed4befd078..10d4da384b7 100644 --- a/pkg/apis/resolution/v1alpha1/resolution_request_conversion.go +++ b/pkg/apis/resolution/v1alpha1/resolution_request_conversion.go @@ -22,7 +22,7 @@ import ( "fmt" "strings" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" "knative.dev/pkg/apis" ) @@ -47,10 +47,10 @@ func (rr *ResolutionRequest) ConvertTo(ctx context.Context, sink apis.Convertibl // ConvertTo converts a v1alpha1.ResolutionRequestSpec to a v1beta1.ResolutionRequestSpec func (rrs *ResolutionRequestSpec) ConvertTo(ctx context.Context, sink *v1beta1.ResolutionRequestSpec) error { for k, v := range rrs.Parameters { - sink.Params = append(sink.Params, pipelinev1beta1.Param{ + sink.Params = append(sink.Params, pipelinev1.Param{ Name: k, - Value: pipelinev1beta1.ParamValue{ - Type: pipelinev1beta1.ParamTypeString, + Value: pipelinev1.ParamValue{ + Type: pipelinev1.ParamTypeString, StringVal: v, }, }) @@ -63,7 +63,7 @@ func (rrs *ResolutionRequestSpec) ConvertTo(ctx context.Context, sink *v1beta1.R func (rrs *ResolutionRequestStatus) convertTo(ctx context.Context, sink *v1beta1.ResolutionRequestStatus) { sink.Data = rrs.Data if rrs.RefSource != nil { - refSource := pipelinev1beta1.RefSource{} + refSource := pipelinev1.RefSource{} refSource.URI = rrs.RefSource.URI refSource.EntryPoint = rrs.RefSource.EntryPoint digest := make(map[string]string) @@ -95,7 +95,7 @@ func (rrs *ResolutionRequestSpec) ConvertFrom(ctx context.Context, from *v1beta1 var nonStringParams []string for _, p := range from.Params { - if p.Value.Type != pipelinev1beta1.ParamTypeString { + if p.Value.Type != pipelinev1.ParamTypeString { nonStringParams = append(nonStringParams, p.Name) } else { if rrs.Parameters == nil { @@ -117,7 +117,7 @@ func (rrs *ResolutionRequestStatus) convertFrom(ctx context.Context, from *v1bet rrs.Data = from.Data if from.RefSource != nil { - refSource := pipelinev1beta1.RefSource{} + refSource := pipelinev1.RefSource{} refSource.URI = from.RefSource.URI refSource.EntryPoint = from.RefSource.EntryPoint digest := make(map[string]string) @@ -127,7 +127,7 @@ func (rrs *ResolutionRequestStatus) convertFrom(ctx context.Context, from *v1bet refSource.Digest = digest rrs.RefSource = &refSource } else if from.Source != nil { - refSource := pipelinev1beta1.RefSource{} + refSource := pipelinev1.RefSource{} refSource.URI = from.Source.URI refSource.EntryPoint = from.Source.EntryPoint digest := make(map[string]string) diff --git a/pkg/apis/resolution/v1alpha1/resolution_request_conversion_test.go b/pkg/apis/resolution/v1alpha1/resolution_request_conversion_test.go index 7ebc5868d38..8d46eae16b5 100644 --- a/pkg/apis/resolution/v1alpha1/resolution_request_conversion_test.go +++ b/pkg/apis/resolution/v1alpha1/resolution_request_conversion_test.go @@ -23,7 +23,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" v1alpha1 "github.com/tektoncd/pipeline/pkg/apis/resolution/v1alpha1" "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" "github.com/tektoncd/pipeline/test/diff" @@ -32,7 +32,7 @@ import ( ) func TestResolutionRequestConversionBadType(t *testing.T) { - good, bad := &v1alpha1.ResolutionRequest{}, &pipelinev1beta1.Task{} + good, bad := &v1alpha1.ResolutionRequest{}, &pipelinev1.Task{} if err := good.ConvertTo(context.Background(), bad); err == nil { t.Errorf("ConvertTo() = %#v, wanted error", bad) @@ -90,9 +90,9 @@ func TestResolutionRequestConvertTo(t *testing.T) { Namespace: "bar", }, Spec: v1beta1.ResolutionRequestSpec{ - Params: []pipelinev1beta1.Param{{ + Params: []pipelinev1.Param{{ Name: "some-param", - Value: *pipelinev1beta1.NewStructuredValues("some-value"), + Value: *pipelinev1.NewStructuredValues("some-value"), }}, }, }, @@ -152,9 +152,9 @@ func TestResolutionRequestConvertFrom(t *testing.T) { Namespace: "bar", }, Spec: v1beta1.ResolutionRequestSpec{ - Params: []pipelinev1beta1.Param{{ + Params: []pipelinev1.Param{{ Name: "some-param", - Value: *pipelinev1beta1.NewStructuredValues("some-value"), + Value: *pipelinev1.NewStructuredValues("some-value"), }}, }, }, @@ -177,16 +177,16 @@ func TestResolutionRequestConvertFrom(t *testing.T) { Namespace: "bar", }, Spec: v1beta1.ResolutionRequestSpec{ - Params: []pipelinev1beta1.Param{ + Params: []pipelinev1.Param{ { Name: "array-val", - Value: *pipelinev1beta1.NewStructuredValues("one", "two"), + Value: *pipelinev1.NewStructuredValues("one", "two"), }, { Name: "string-val", - Value: *pipelinev1beta1.NewStructuredValues("a-string"), + Value: *pipelinev1.NewStructuredValues("a-string"), }, { Name: "object-val", - Value: *pipelinev1beta1.NewObject(map[string]string{ + Value: *pipelinev1.NewObject(map[string]string{ "key-one": "value-one", "key-two": "value-two", }), diff --git a/pkg/apis/resolution/v1alpha1/resolution_request_types.go b/pkg/apis/resolution/v1alpha1/resolution_request_types.go index 87364244112..ca0605829da 100644 --- a/pkg/apis/resolution/v1alpha1/resolution_request_types.go +++ b/pkg/apis/resolution/v1alpha1/resolution_request_types.go @@ -17,7 +17,7 @@ limitations under the License. package v1alpha1 import ( - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" duckv1 "knative.dev/pkg/apis/duck/v1" ) @@ -81,7 +81,7 @@ type ResolutionRequestStatusFields struct { Data string `json:"data"` // RefSource is the source reference of the remote data that records where the remote // file came from including the url, digest and the entrypoint. - RefSource *pipelinev1beta1.RefSource `json:"refSource"` + RefSource *pipelinev1.RefSource `json:"refSource"` } // GetStatus implements KRShaped. diff --git a/pkg/apis/resolution/v1alpha1/zz_generated.deepcopy.go b/pkg/apis/resolution/v1alpha1/zz_generated.deepcopy.go index 6c431cd0cb2..95a778ec346 100644 --- a/pkg/apis/resolution/v1alpha1/zz_generated.deepcopy.go +++ b/pkg/apis/resolution/v1alpha1/zz_generated.deepcopy.go @@ -22,7 +22,7 @@ limitations under the License. package v1alpha1 import ( - v1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -133,7 +133,7 @@ func (in *ResolutionRequestStatusFields) DeepCopyInto(out *ResolutionRequestStat *out = *in if in.RefSource != nil { in, out := &in.RefSource, &out.RefSource - *out = new(v1beta1.RefSource) + *out = new(v1.RefSource) (*in).DeepCopyInto(*out) } return diff --git a/pkg/apis/resolution/v1beta1/resolution_request_types.go b/pkg/apis/resolution/v1beta1/resolution_request_types.go index 966cf1a30f2..60b51fa0498 100644 --- a/pkg/apis/resolution/v1beta1/resolution_request_types.go +++ b/pkg/apis/resolution/v1beta1/resolution_request_types.go @@ -17,7 +17,7 @@ limitations under the License. package v1beta1 import ( - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" duckv1 "knative.dev/pkg/apis/duck/v1" ) @@ -63,7 +63,7 @@ type ResolutionRequestSpec struct { // path to file, the kind of authentication to leverage, etc. // +optional // +listType=atomic - Params []pipelinev1beta1.Param `json:"params,omitempty"` + Params []pipelinev1.Param `json:"params,omitempty"` } // ResolutionRequestStatus are all the fields in a ResolutionRequest's @@ -81,11 +81,11 @@ type ResolutionRequestStatusFields struct { // object. Data string `json:"data"` // Deprecated: Use RefSource instead - Source *pipelinev1beta1.ConfigSource `json:"source"` + Source *pipelinev1.RefSource `json:"source"` // RefSource is the source reference of the remote data that records the url, digest // and the entrypoint. - RefSource *pipelinev1beta1.RefSource `json:"refSource"` + RefSource *pipelinev1.RefSource `json:"refSource"` } // GetStatus implements KRShaped. diff --git a/pkg/apis/resolution/v1beta1/zz_generated.deepcopy.go b/pkg/apis/resolution/v1beta1/zz_generated.deepcopy.go index a0cb54ee65a..bc5f5c9bedb 100644 --- a/pkg/apis/resolution/v1beta1/zz_generated.deepcopy.go +++ b/pkg/apis/resolution/v1beta1/zz_generated.deepcopy.go @@ -22,7 +22,7 @@ limitations under the License. package v1beta1 import ( - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" runtime "k8s.io/apimachinery/pkg/runtime" ) @@ -92,7 +92,7 @@ func (in *ResolutionRequestSpec) DeepCopyInto(out *ResolutionRequestSpec) { *out = *in if in.Params != nil { in, out := &in.Params, &out.Params - *out = make([]pipelinev1beta1.Param, len(*in)) + *out = make([]v1.Param, len(*in)) for i := range *in { (*in)[i].DeepCopyInto(&(*out)[i]) } @@ -133,12 +133,12 @@ func (in *ResolutionRequestStatusFields) DeepCopyInto(out *ResolutionRequestStat *out = *in if in.Source != nil { in, out := &in.Source, &out.Source - *out = new(pipelinev1beta1.ConfigSource) + *out = new(v1.RefSource) (*in).DeepCopyInto(*out) } if in.RefSource != nil { in, out := &in.RefSource, &out.RefSource - *out = new(pipelinev1beta1.RefSource) + *out = new(v1.RefSource) (*in).DeepCopyInto(*out) } return diff --git a/pkg/container/container_replacements.go b/pkg/container/container_replacements.go index 64d92d2485a..6a6d66c5b8d 100644 --- a/pkg/container/container_replacements.go +++ b/pkg/container/container_replacements.go @@ -17,20 +17,20 @@ package container import ( - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/substitution" corev1 "k8s.io/api/core/v1" ) // applyStepReplacements returns a StepContainer with variable interpolation applied. -func applyStepReplacements(step *v1beta1.Step, stringReplacements map[string]string, arrayReplacements map[string][]string) { +func applyStepReplacements(step *v1.Step, stringReplacements map[string]string, arrayReplacements map[string][]string) { c := step.ToK8sContainer() applyContainerReplacements(c, stringReplacements, arrayReplacements) step.SetContainerFields(*c) } // applySidecarReplacements returns a SidecarContainer with variable interpolation applied. -func applySidecarReplacements(sidecar *v1beta1.Sidecar, stringReplacements map[string]string, arrayReplacements map[string][]string) { +func applySidecarReplacements(sidecar *v1.Sidecar, stringReplacements map[string]string, arrayReplacements map[string][]string) { c := sidecar.ToK8sContainer() applyContainerReplacements(c, stringReplacements, arrayReplacements) sidecar.SetContainerFields(*c) diff --git a/pkg/container/sidecar_replacements.go b/pkg/container/sidecar_replacements.go index 908677a11f4..2054d858a4b 100644 --- a/pkg/container/sidecar_replacements.go +++ b/pkg/container/sidecar_replacements.go @@ -17,12 +17,12 @@ package container import ( - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/substitution" ) // ApplySidecarReplacements applies variable interpolation on a Sidecar. -func ApplySidecarReplacements(sidecar *v1beta1.Sidecar, stringReplacements map[string]string, arrayReplacements map[string][]string) { +func ApplySidecarReplacements(sidecar *v1.Sidecar, stringReplacements map[string]string, arrayReplacements map[string][]string) { sidecar.Script = substitution.ApplyReplacements(sidecar.Script, stringReplacements) applySidecarReplacements(sidecar, stringReplacements, arrayReplacements) } diff --git a/pkg/container/sidecar_replacements_test.go b/pkg/container/sidecar_replacements_test.go index e93bdcc955f..1e29bede487 100644 --- a/pkg/container/sidecar_replacements_test.go +++ b/pkg/container/sidecar_replacements_test.go @@ -20,7 +20,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/container" corev1 "k8s.io/api/core/v1" ) @@ -34,7 +34,7 @@ func TestApplySidecarReplacements(t *testing.T) { "array.replace.me": {"val1", "val2"}, } - s := v1beta1.Sidecar{ + s := v1.Sidecar{ Script: "$(replace.me)", Name: "$(replace.me)", Image: "$(replace.me)", @@ -78,7 +78,7 @@ func TestApplySidecarReplacements(t *testing.T) { }}, } - expected := v1beta1.Sidecar{ + expected := v1.Sidecar{ Script: "replaced!", Name: "replaced!", Image: "replaced!", diff --git a/pkg/container/step_replacements.go b/pkg/container/step_replacements.go index 1640e749ce9..921995157a2 100644 --- a/pkg/container/step_replacements.go +++ b/pkg/container/step_replacements.go @@ -17,14 +17,14 @@ package container import ( - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/substitution" ) // ApplyStepReplacements applies variable interpolation on a Step. -func ApplyStepReplacements(step *v1beta1.Step, stringReplacements map[string]string, arrayReplacements map[string][]string) { +func ApplyStepReplacements(step *v1.Step, stringReplacements map[string]string, arrayReplacements map[string][]string) { step.Script = substitution.ApplyReplacements(step.Script, stringReplacements) - step.OnError = (v1beta1.OnErrorType)(substitution.ApplyReplacements(string(step.OnError), stringReplacements)) + step.OnError = (v1.OnErrorType)(substitution.ApplyReplacements(string(step.OnError), stringReplacements)) if step.StdoutConfig != nil { step.StdoutConfig.Path = substitution.ApplyReplacements(step.StdoutConfig.Path, stringReplacements) } @@ -35,7 +35,7 @@ func ApplyStepReplacements(step *v1beta1.Step, stringReplacements map[string]str } // ApplyStepTemplateReplacements applies variable interpolation on a StepTemplate (aka a container) -func ApplyStepTemplateReplacements(stepTemplate *v1beta1.StepTemplate, stringReplacements map[string]string, arrayReplacements map[string][]string) { +func ApplyStepTemplateReplacements(stepTemplate *v1.StepTemplate, stringReplacements map[string]string, arrayReplacements map[string][]string) { container := stepTemplate.ToK8sContainer() applyContainerReplacements(container, stringReplacements, arrayReplacements) stepTemplate.SetContainerFields(*container) diff --git a/pkg/container/step_replacements_test.go b/pkg/container/step_replacements_test.go index 05a7b805fb7..4da6e4acf70 100644 --- a/pkg/container/step_replacements_test.go +++ b/pkg/container/step_replacements_test.go @@ -20,7 +20,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/container" corev1 "k8s.io/api/core/v1" ) @@ -35,7 +35,7 @@ func TestApplyStepReplacements(t *testing.T) { "array.replace.me": {"val1", "val2"}, } - s := v1beta1.Step{ + s := v1.Step{ Script: "$(replace.me)", Name: "$(replace.me)", Image: "$(replace.me)", @@ -78,15 +78,15 @@ func TestApplyStepReplacements(t *testing.T) { MountPath: "$(replace.me)", SubPath: "$(replace.me)", }}, - StdoutConfig: &v1beta1.StepOutputConfig{ + StdoutConfig: &v1.StepOutputConfig{ Path: "$(workspaces.data.path)/stdout.txt", }, - StderrConfig: &v1beta1.StepOutputConfig{ + StderrConfig: &v1.StepOutputConfig{ Path: "$(workspaces.data.path)/stderr.txt", }, } - expected := v1beta1.Step{ + expected := v1.Step{ Script: "replaced!", Name: "replaced!", Image: "replaced!", @@ -129,10 +129,10 @@ func TestApplyStepReplacements(t *testing.T) { MountPath: "replaced!", SubPath: "replaced!", }}, - StdoutConfig: &v1beta1.StepOutputConfig{ + StdoutConfig: &v1.StepOutputConfig{ Path: "/workspace/data/stdout.txt", }, - StderrConfig: &v1beta1.StepOutputConfig{ + StderrConfig: &v1.StepOutputConfig{ Path: "/workspace/data/stderr.txt", }, } diff --git a/pkg/internal/computeresources/tasklevel/tasklevel.go b/pkg/internal/computeresources/tasklevel/tasklevel.go index 447affa6a5a..87a39d56a0d 100644 --- a/pkg/internal/computeresources/tasklevel/tasklevel.go +++ b/pkg/internal/computeresources/tasklevel/tasklevel.go @@ -17,13 +17,13 @@ limitations under the License. package tasklevel import ( - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" ) // ApplyTaskLevelComputeResources applies the task-level compute resource requirements to each Step. -func ApplyTaskLevelComputeResources(steps []v1beta1.Step, computeResources *corev1.ResourceRequirements) { +func ApplyTaskLevelComputeResources(steps []v1.Step, computeResources *corev1.ResourceRequirements) { if computeResources == nil { return } @@ -35,12 +35,12 @@ func ApplyTaskLevelComputeResources(steps []v1beta1.Step, computeResources *core for i := range steps { // if no requests are specified in step or task level, the limits are used to avoid // unnecessary higher requests by Kubernetes default behavior. - if steps[i].Resources.Requests == nil && computeResources.Requests == nil { - steps[i].Resources.Requests = averageLimits + if steps[i].ComputeResources.Requests == nil && computeResources.Requests == nil { + steps[i].ComputeResources.Requests = averageLimits } else { - steps[i].Resources.Requests = averageRequests + steps[i].ComputeResources.Requests = averageRequests } - steps[i].Resources.Limits = computeResources.Limits + steps[i].ComputeResources.Limits = computeResources.Limits } } diff --git a/pkg/internal/computeresources/tasklevel/tasklevel_test.go b/pkg/internal/computeresources/tasklevel/tasklevel_test.go index 00114476681..3002510aec5 100644 --- a/pkg/internal/computeresources/tasklevel/tasklevel_test.go +++ b/pkg/internal/computeresources/tasklevel/tasklevel_test.go @@ -21,7 +21,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/internal/computeresources/tasklevel" "github.com/tektoncd/pipeline/test/diff" corev1 "k8s.io/api/core/v1" @@ -31,12 +31,12 @@ import ( func TestApplyTaskLevelResourceRequirements(t *testing.T) { testcases := []struct { desc string - Steps []v1beta1.Step + Steps []v1.Step ComputeResources corev1.ResourceRequirements expectedComputeResources []corev1.ResourceRequirements }{{ desc: "only with requests", - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "1st-step", Image: "image", Command: []string{"cmd"}, @@ -55,7 +55,7 @@ func TestApplyTaskLevelResourceRequirements(t *testing.T) { }}, }, { desc: "only with limits", - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "1st-step", Image: "image", Command: []string{"cmd"}, @@ -76,7 +76,7 @@ func TestApplyTaskLevelResourceRequirements(t *testing.T) { }}, }, { desc: "both with requests and limits", - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "1st-step", Image: "image", Command: []string{"cmd"}, @@ -98,11 +98,11 @@ func TestApplyTaskLevelResourceRequirements(t *testing.T) { }}, }, { desc: "steps with compute resources are overridden by task-level compute resources", - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "1st-step", Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("100m")}, Limits: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("1")}, }, @@ -110,7 +110,7 @@ func TestApplyTaskLevelResourceRequirements(t *testing.T) { Name: "2nd-step", Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("200m")}, Limits: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("1")}, }, @@ -128,11 +128,11 @@ func TestApplyTaskLevelResourceRequirements(t *testing.T) { }}, }, { desc: "steps with partial compute resources are overridden by task-level compute resources", - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "1st-step", Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("100m")}, Limits: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("1")}, }, @@ -154,11 +154,11 @@ func TestApplyTaskLevelResourceRequirements(t *testing.T) { }}, }, { desc: "steps with compute resources are preserved, if there are no task-level compute resources", - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "1st-step", Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("100m")}, Limits: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("1")}, }, @@ -166,7 +166,7 @@ func TestApplyTaskLevelResourceRequirements(t *testing.T) { Name: "2nd-step", Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("200m")}, Limits: corev1.ResourceList{corev1.ResourceCPU: resource.MustParse("1")}, }, @@ -193,12 +193,12 @@ func TestApplyTaskLevelResourceRequirements(t *testing.T) { } // verifyTaskLevelComputeResources verifies that the given TaskRun's containers have the expected compute resources. -func verifyTaskLevelComputeResources(steps []v1beta1.Step, expectedComputeResources []corev1.ResourceRequirements) error { +func verifyTaskLevelComputeResources(steps []v1.Step, expectedComputeResources []corev1.ResourceRequirements) error { if len(expectedComputeResources) != len(steps) { return fmt.Errorf("expected %d compute resource requirements, got %d", len(expectedComputeResources), len(steps)) } for id, step := range steps { - if d := cmp.Diff(expectedComputeResources[id], step.Resources); d != "" { + if d := cmp.Diff(expectedComputeResources[id], step.ComputeResources); d != "" { return fmt.Errorf("container \"#%d\" resource requirements don't match %s", id, diff.PrintWantGot(d)) } } diff --git a/pkg/internal/resolution/resolved_meta.go b/pkg/internal/resolution/resolved_meta.go index 0aa0ea72979..40347130547 100644 --- a/pkg/internal/resolution/resolved_meta.go +++ b/pkg/internal/resolution/resolved_meta.go @@ -17,7 +17,7 @@ limitations under the License. package resolution import ( - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/trustedresources" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -26,7 +26,7 @@ import ( type ResolvedObjectMeta struct { *metav1.ObjectMeta `json:",omitempty"` // RefSource identifies where the spec came from. - RefSource *v1beta1.RefSource `json:",omitempty"` + RefSource *v1.RefSource `json:",omitempty"` // VerificationResult contains the result of trusted resources verification VerificationResult *trustedresources.VerificationResult `json:",omitempty"` } diff --git a/pkg/pipelinerunmetrics/fake/fake.go b/pkg/pipelinerunmetrics/fake/fake.go index c578d4a2110..1234bbcfda2 100644 --- a/pkg/pipelinerunmetrics/fake/fake.go +++ b/pkg/pipelinerunmetrics/fake/fake.go @@ -19,7 +19,7 @@ package fake import ( "context" - _ "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/pipelinerun/fake" // Make sure the fake pipelinerun informer is setup + _ "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/pipelinerun/fake" // Make sure the fake pipelinerun informer is setup "github.com/tektoncd/pipeline/pkg/pipelinerunmetrics" "k8s.io/client-go/rest" "knative.dev/pkg/injection" diff --git a/pkg/pipelinerunmetrics/injection.go b/pkg/pipelinerunmetrics/injection.go index 31571a96646..d6a6750213d 100644 --- a/pkg/pipelinerunmetrics/injection.go +++ b/pkg/pipelinerunmetrics/injection.go @@ -19,8 +19,8 @@ package pipelinerunmetrics import ( "context" - pipelineruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/pipelinerun" - listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1beta1" + pipelineruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/pipelinerun" + listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1" "k8s.io/client-go/rest" "knative.dev/pkg/controller" "knative.dev/pkg/injection" diff --git a/pkg/pipelinerunmetrics/metrics.go b/pkg/pipelinerunmetrics/metrics.go index f245e109946..f89a5b46e06 100644 --- a/pkg/pipelinerunmetrics/metrics.go +++ b/pkg/pipelinerunmetrics/metrics.go @@ -24,8 +24,8 @@ import ( "time" "github.com/tektoncd/pipeline/pkg/apis/config" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" - listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" + listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1" "go.opencensus.io/stats" "go.opencensus.io/stats/view" "go.opencensus.io/tag" @@ -208,7 +208,7 @@ func nilInsertTag(task, taskrun string) []tag.Mutator { // DurationAndCount logs the duration of PipelineRun execution and // count for number of PipelineRuns succeed or failed // returns an error if its failed to log the metrics -func (r *Recorder) DurationAndCount(pr *v1beta1.PipelineRun, beforeCondition *apis.Condition) error { +func (r *Recorder) DurationAndCount(pr *v1.PipelineRun, beforeCondition *apis.Condition) error { if !r.initialized { return fmt.Errorf("ignoring the metrics recording for %s , failed to initialize the metrics recorder", pr.Name) } diff --git a/pkg/pipelinerunmetrics/metrics_test.go b/pkg/pipelinerunmetrics/metrics_test.go index 74cf2a7189f..4ac3ff73ab6 100644 --- a/pkg/pipelinerunmetrics/metrics_test.go +++ b/pkg/pipelinerunmetrics/metrics_test.go @@ -24,8 +24,8 @@ import ( "time" "github.com/tektoncd/pipeline/pkg/apis/config" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" - fakepipelineruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/pipelinerun/fake" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" + fakepipelineruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/pipelinerun/fake" "github.com/tektoncd/pipeline/pkg/names" ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" "go.uber.org/zap" @@ -58,7 +58,7 @@ func getConfigContext() context.Context { func TestUninitializedMetrics(t *testing.T) { metrics := Recorder{} - if err := metrics.DurationAndCount(&v1beta1.PipelineRun{}, nil); err == nil { + if err := metrics.DurationAndCount(&v1.PipelineRun{}, nil); err == nil { t.Error("DurationAndCount recording expected to return error but got nil") } if err := metrics.RunningPipelineRuns(nil); err == nil { @@ -111,7 +111,7 @@ func TestMetricsOnStore(t *testing.T) { func TestRecordPipelineRunDurationCount(t *testing.T) { for _, test := range []struct { name string - pipelineRun *v1beta1.PipelineRun + pipelineRun *v1.PipelineRun expectedDurationTags map[string]string expectedCountTags map[string]string expectedDuration float64 @@ -119,19 +119,19 @@ func TestRecordPipelineRunDurationCount(t *testing.T) { beforeCondition *apis.Condition }{{ name: "for succeeded pipeline", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-1", Namespace: "ns"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{Name: "pipeline-1"}, + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{Name: "pipeline-1"}, }, - Status: v1beta1.PipelineRunStatus{ + Status: v1.PipelineRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, }}, }, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ StartTime: &startTime, CompletionTime: &completionTime, }, @@ -151,19 +151,19 @@ func TestRecordPipelineRunDurationCount(t *testing.T) { beforeCondition: nil, }, { name: "for succeeded pipeline different condition", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-1", Namespace: "ns"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{Name: "pipeline-1"}, + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{Name: "pipeline-1"}, }, - Status: v1beta1.PipelineRunStatus{ + Status: v1.PipelineRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, }}, }, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ StartTime: &startTime, CompletionTime: &completionTime, }, @@ -186,19 +186,19 @@ func TestRecordPipelineRunDurationCount(t *testing.T) { }, }, { name: "for succeeded pipeline recount", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-1", Namespace: "ns"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{Name: "pipeline-1"}, + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{Name: "pipeline-1"}, }, - Status: v1beta1.PipelineRunStatus{ + Status: v1.PipelineRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, }}, }, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ StartTime: &startTime, CompletionTime: &completionTime, }, @@ -214,12 +214,12 @@ func TestRecordPipelineRunDurationCount(t *testing.T) { }, }, { name: "for cancelled pipeline", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-1", Namespace: "ns"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{Name: "pipeline-1"}, + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{Name: "pipeline-1"}, }, - Status: v1beta1.PipelineRunStatus{ + Status: v1.PipelineRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, @@ -227,7 +227,7 @@ func TestRecordPipelineRunDurationCount(t *testing.T) { Reason: ReasonCancelled, }}, }, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ StartTime: &startTime, CompletionTime: &completionTime, }, @@ -247,19 +247,19 @@ func TestRecordPipelineRunDurationCount(t *testing.T) { beforeCondition: nil, }, { name: "for failed pipeline", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-1", Namespace: "ns"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{Name: "pipeline-1"}, + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{Name: "pipeline-1"}, }, - Status: v1beta1.PipelineRunStatus{ + Status: v1.PipelineRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, }}, }, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ StartTime: &startTime, CompletionTime: &completionTime, }, @@ -279,13 +279,13 @@ func TestRecordPipelineRunDurationCount(t *testing.T) { beforeCondition: nil, }, { name: "for pipeline without start or completion time", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-1", Namespace: "ns"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{Name: "pipeline-1"}, - Status: v1beta1.PipelineRunSpecStatusPending, + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{Name: "pipeline-1"}, + Status: v1.PipelineRunSpecStatusPending, }, - Status: v1beta1.PipelineRunStatus{ + Status: v1.PipelineRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, @@ -336,10 +336,10 @@ func TestRecordPipelineRunDurationCount(t *testing.T) { func TestRecordRunningPipelineRunsCount(t *testing.T) { unregisterMetrics() - newPipelineRun := func(status corev1.ConditionStatus) *v1beta1.PipelineRun { - return &v1beta1.PipelineRun{ + newPipelineRun := func(status corev1.ConditionStatus) *v1.PipelineRun { + return &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: names.SimpleNameGenerator.RestrictLengthWithRandomSuffix("pipelinerun-")}, - Status: v1beta1.PipelineRunStatus{ + Status: v1.PipelineRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, @@ -353,7 +353,7 @@ func TestRecordRunningPipelineRunsCount(t *testing.T) { ctx, _ := ttesting.SetupFakeContext(t) informer := fakepipelineruninformer.Get(ctx) // Add N randomly-named PipelineRuns with differently-succeeded statuses. - for _, tr := range []*v1beta1.PipelineRun{ + for _, tr := range []*v1.PipelineRun{ newPipelineRun(corev1.ConditionTrue), newPipelineRun(corev1.ConditionUnknown), newPipelineRun(corev1.ConditionFalse), diff --git a/pkg/pod/entrypoint.go b/pkg/pod/entrypoint.go index e62b04b6fc3..aebd06cafbd 100644 --- a/pkg/pod/entrypoint.go +++ b/pkg/pod/entrypoint.go @@ -28,7 +28,7 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "gomodules.xyz/jsonpatch/v2" corev1 "k8s.io/api/core/v1" k8serrors "k8s.io/apimachinery/pkg/api/errors" @@ -114,7 +114,7 @@ var ( // command, we must have fetched the image's ENTRYPOINT before calling this // method, using entrypoint_lookup.go. // Additionally, Step timeouts are added as entrypoint flag. -func orderContainers(commonExtraEntrypointArgs []string, steps []corev1.Container, taskSpec *v1beta1.TaskSpec, breakpointConfig *v1beta1.TaskRunDebug, waitForReadyAnnotation bool) ([]corev1.Container, error) { +func orderContainers(commonExtraEntrypointArgs []string, steps []corev1.Container, taskSpec *v1.TaskSpec, breakpointConfig *v1.TaskRunDebug, waitForReadyAnnotation bool) ([]corev1.Container, error) { if len(steps) == 0 { return nil, errors.New("No steps specified") } @@ -143,9 +143,9 @@ func orderContainers(commonExtraEntrypointArgs []string, steps []corev1.Containe if taskSpec != nil { if taskSpec.Steps != nil && len(taskSpec.Steps) >= i+1 { if taskSpec.Steps[i].OnError != "" { - if taskSpec.Steps[i].OnError != v1beta1.Continue && taskSpec.Steps[i].OnError != v1beta1.StopAndFail { + if taskSpec.Steps[i].OnError != v1.Continue && taskSpec.Steps[i].OnError != v1.StopAndFail { return nil, fmt.Errorf("task step onError must be either \"%s\" or \"%s\" but it is set to an invalid value \"%s\"", - v1beta1.Continue, v1beta1.StopAndFail, taskSpec.Steps[i].OnError) + v1.Continue, v1.StopAndFail, taskSpec.Steps[i].OnError) } argsForEntrypoint = append(argsForEntrypoint, "-on_error", string(taskSpec.Steps[i].OnError)) } @@ -194,14 +194,14 @@ func orderContainers(commonExtraEntrypointArgs []string, steps []corev1.Containe return steps, nil } -func resultArgument(steps []corev1.Container, results []v1beta1.TaskResult) []string { +func resultArgument(steps []corev1.Container, results []v1.TaskResult) []string { if len(results) == 0 { return nil } return []string{"-results", collectResultsName(results)} } -func collectResultsName(results []v1beta1.TaskResult) string { +func collectResultsName(results []v1.TaskResult) string { var resultNames []string for _, r := range results { resultNames = append(resultNames, r.Name) @@ -283,7 +283,7 @@ func StopSidecars(ctx context.Context, nopImage string, kubeclient kubernetes.In // IsSidecarStatusRunning determines if any SidecarStatus on a TaskRun // is still running. -func IsSidecarStatusRunning(tr *v1beta1.TaskRun) bool { +func IsSidecarStatusRunning(tr *v1.TaskRun) bool { for _, sidecar := range tr.Status.Sidecars { if sidecar.Terminated == nil { return true diff --git a/pkg/pod/entrypoint_lookup_impl_test.go b/pkg/pod/entrypoint_lookup_impl_test.go index 50620597b31..6c6178a8b16 100644 --- a/pkg/pod/entrypoint_lookup_impl_test.go +++ b/pkg/pod/entrypoint_lookup_impl_test.go @@ -33,7 +33,7 @@ import ( "github.com/google/go-containerregistry/pkg/v1/empty" "github.com/google/go-containerregistry/pkg/v1/mutate" "github.com/google/go-containerregistry/pkg/v1/random" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" remotetest "github.com/tektoncd/pipeline/test" "github.com/tektoncd/pipeline/test/diff" corev1 "k8s.io/api/core/v1" @@ -111,9 +111,9 @@ func TestGetImageWithImagePullSecrets(t *testing.T) { t.Errorf("Parsing url with an error: %v", err) } - task := &v1beta1.Task{ + task := &pipelinev1.Task{ TypeMeta: metav1.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "Task"}, ObjectMeta: metav1.ObjectMeta{ Name: "test-create-image"}, diff --git a/pkg/pod/entrypoint_test.go b/pkg/pod/entrypoint_test.go index 261862f1360..38ac79b68ba 100644 --- a/pkg/pod/entrypoint_test.go +++ b/pkg/pod/entrypoint_test.go @@ -25,7 +25,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/diff" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -240,7 +240,7 @@ func TestOrderContainersWithDebugOnFailure(t *testing.T) { VolumeMounts: []corev1.VolumeMount{downwardMount}, TerminationMessagePath: "/tekton/termination", }} - taskRunDebugConfig := &v1beta1.TaskRunDebug{ + taskRunDebugConfig := &v1.TaskRunDebug{ Breakpoint: []string{"onFailure"}, } got, err := orderContainers([]string{}, steps, nil, taskRunDebugConfig, true) @@ -253,8 +253,8 @@ func TestOrderContainersWithDebugOnFailure(t *testing.T) { } func TestEntryPointResults(t *testing.T) { - taskSpec := v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + taskSpec := v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "sum", Description: "This is the sum result of the task", }, { @@ -331,8 +331,8 @@ func TestEntryPointResults(t *testing.T) { } func TestEntryPointResultsSingleStep(t *testing.T) { - taskSpec := v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + taskSpec := v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "sum", Description: "This is the sum result of the task", }, { @@ -371,8 +371,8 @@ func TestEntryPointResultsSingleStep(t *testing.T) { } } func TestEntryPointSingleResultsSingleStep(t *testing.T) { - taskSpec := v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + taskSpec := v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "sum", Description: "This is the sum result of the task", }}, @@ -421,15 +421,15 @@ func TestEntryPointOnError(t *testing.T) { for _, tc := range []struct { desc string - taskSpec v1beta1.TaskSpec + taskSpec v1.TaskSpec wantContainers []corev1.Container err error }{{ - taskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ - OnError: v1beta1.Continue, + taskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ + OnError: v1.Continue, }, { - OnError: v1beta1.StopAndFail, + OnError: v1.StopAndFail, }}, }, wantContainers: []corev1.Container{{ @@ -462,8 +462,8 @@ func TestEntryPointOnError(t *testing.T) { TerminationMessagePath: "/tekton/termination", }}, }, { - taskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + taskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ OnError: "invalid-on-error", }}, }, @@ -491,20 +491,20 @@ func TestEntryPointOnError(t *testing.T) { } func TestEntryPointStepOutputConfigs(t *testing.T) { - taskSpec := v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ - StdoutConfig: &v1beta1.StepOutputConfig{ + taskSpec := v1.TaskSpec{ + Steps: []v1.Step{{ + StdoutConfig: &v1.StepOutputConfig{ Path: "step-1-out", }, }, { - StderrConfig: &v1beta1.StepOutputConfig{ + StderrConfig: &v1.StepOutputConfig{ Path: "step-2-err", }, }, { - StdoutConfig: &v1beta1.StepOutputConfig{ + StdoutConfig: &v1.StepOutputConfig{ Path: "step-3-out", }, - StderrConfig: &v1beta1.StepOutputConfig{ + StderrConfig: &v1.StepOutputConfig{ Path: "step-3-err", }, }}, diff --git a/pkg/pod/pod.go b/pkg/pod/pod.go index 794014783a2..74468b12761 100644 --- a/pkg/pod/pod.go +++ b/pkg/pod/pod.go @@ -28,7 +28,7 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" "github.com/tektoncd/pipeline/pkg/apis/pipeline/pod" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/internal/computeresources/tasklevel" "github.com/tektoncd/pipeline/pkg/names" "github.com/tektoncd/pipeline/pkg/spire" @@ -67,8 +67,8 @@ var ( ReleaseAnnotation = "pipeline.tekton.dev/release" groupVersionKind = schema.GroupVersionKind{ - Group: v1beta1.SchemeGroupVersion.Group, - Version: v1beta1.SchemeGroupVersion.Version, + Group: v1.SchemeGroupVersion.Group, + Version: v1.SchemeGroupVersion.Version, Kind: "TaskRun", } // These are injected into all of the source/step containers. @@ -139,7 +139,7 @@ type Transformer func(*corev1.Pod) (*corev1.Pod, error) // Build creates a Pod using the configuration options set on b and the TaskRun // and TaskSpec provided in its arguments. An error is returned if there are // any problems during the conversion. -func (b *Builder) Build(ctx context.Context, taskRun *v1beta1.TaskRun, taskSpec v1beta1.TaskSpec, transformers ...Transformer) (*corev1.Pod, error) { +func (b *Builder) Build(ctx context.Context, taskRun *v1.TaskRun, taskSpec v1.TaskSpec, transformers ...Transformer) (*corev1.Pod, error) { var ( scriptsInit *corev1.Container initContainers, stepContainers, sidecarContainers []corev1.Container @@ -175,11 +175,11 @@ func (b *Builder) Build(ctx context.Context, taskRun *v1beta1.TaskRun, taskSpec // Merge step template with steps. // TODO(#1605): Move MergeSteps to pkg/pod - steps, err := v1beta1.MergeStepsWithStepTemplate(taskSpec.StepTemplate, taskSpec.Steps) + steps, err := v1.MergeStepsWithStepTemplate(taskSpec.StepTemplate, taskSpec.Steps) if err != nil { return nil, err } - steps, err = v1beta1.MergeStepsWithOverrides(steps, taskRun.Spec.StepOverrides) + steps, err = v1.MergeStepsWithSpecs(steps, taskRun.Spec.StepSpecs) if err != nil { return nil, err } @@ -193,7 +193,7 @@ func (b *Builder) Build(ctx context.Context, taskRun *v1beta1.TaskRun, taskSpec taskSpec.Sidecars = append(taskSpec.Sidecars, resultsSidecar) commonExtraEntrypointArgs = append(commonExtraEntrypointArgs, "-result_from", config.ResultExtractionMethodSidecarLogs) } - sidecars, err := v1beta1.MergeSidecarsWithOverrides(taskSpec.Sidecars, taskRun.Spec.SidecarOverrides) + sidecars, err := v1.MergeSidecarsWithSpecs(taskSpec.Sidecars, taskRun.Spec.SidecarSpecs) if err != nil { return nil, err } @@ -352,7 +352,7 @@ func (b *Builder) Build(ctx context.Context, taskRun *v1beta1.TaskRun, taskSpec volumes = append(volumes, taskSpec.Volumes...) volumes = append(volumes, podTemplate.Volumes...) - if err := v1beta1.ValidateVolumes(volumes); err != nil { + if err := v1.ValidateVolumes(volumes); err != nil { return nil, err } @@ -477,7 +477,7 @@ func (b *Builder) Build(ctx context.Context, taskRun *v1beta1.TaskRun, taskSpec } // makeLabels constructs the labels we will propagate from TaskRuns to Pods. -func makeLabels(s *v1beta1.TaskRun) map[string]string { +func makeLabels(s *v1.TaskRun) map[string]string { labels := make(map[string]string, len(s.ObjectMeta.Labels)+1) // NB: Set this *before* passing through TaskRun labels. If the TaskRun // has a managed-by label, it should override this default. @@ -497,7 +497,7 @@ func makeLabels(s *v1beta1.TaskRun) map[string]string { // controller should consider the Pod "Ready" as soon as it's deployed. // This will add the `Ready` annotation when creating the Pod, // and prevent the first step from waiting for the annotation to appear before starting. -func isPodReadyImmediately(featureFlags config.FeatureFlags, sidecars []v1beta1.Sidecar) bool { +func isPodReadyImmediately(featureFlags config.FeatureFlags, sidecars []v1.Sidecar) bool { // If the TaskRun has sidecars, we must wait for them if len(sidecars) > 0 || featureFlags.RunningInEnvWithInjectedSidecars { if featureFlags.AwaitSidecarReadiness { @@ -527,7 +527,7 @@ func runVolume(i int) corev1.Volume { // This should effectively merge multiple command and volumes together. // If setSecurityContext is true, the init container will include a security context // allowing it to run in namespaces with restriced pod security admission. -func entrypointInitContainer(image string, steps []v1beta1.Step, setSecurityContext, windows bool) corev1.Container { +func entrypointInitContainer(image string, steps []v1.Step, setSecurityContext, windows bool) corev1.Container { // Invoke the entrypoint binary in "cp mode" to copy itself // into the correct location for later steps and initialize steps folder command := []string{"/ko-app/entrypoint", "init", "/ko-app/entrypoint", entrypointBinary} @@ -563,7 +563,7 @@ func entrypointInitContainer(image string, steps []v1beta1.Step, setSecurityCont // based on the spec of the Task, the image that should run in the results sidecar, // whether it will run on a windows node, and whether the sidecar should include a security context // that will allow it to run in namespaces with "restricted" pod security admission. -func createResultsSidecar(taskSpec v1beta1.TaskSpec, image string, setSecurityContext, windows bool) v1beta1.Sidecar { +func createResultsSidecar(taskSpec v1.TaskSpec, image string, setSecurityContext, windows bool) v1.Sidecar { names := make([]string, 0, len(taskSpec.Results)) for _, r := range taskSpec.Results { names = append(names, r.Name) @@ -574,7 +574,7 @@ func createResultsSidecar(taskSpec v1beta1.TaskSpec, image string, setSecurityCo } resultsStr := strings.Join(names, ",") command := []string{"/ko-app/sidecarlogresults", "-results-dir", pipeline.DefaultResultPath, "-result-names", resultsStr} - sidecar := v1beta1.Sidecar{ + sidecar := v1.Sidecar{ Name: pipeline.ReservedResultsSidecarName, Image: image, Command: command, @@ -588,7 +588,7 @@ func createResultsSidecar(taskSpec v1beta1.TaskSpec, image string, setSecurityCo // usesWindows returns true if the TaskRun will run on a windows node, // based on its node selector. // See https://kubernetes.io/docs/concepts/windows/user-guide/ for more info. -func usesWindows(tr *v1beta1.TaskRun) bool { +func usesWindows(tr *v1.TaskRun) bool { if tr.Spec.PodTemplate == nil || tr.Spec.PodTemplate.NodeSelector == nil { return false } diff --git a/pkg/pod/pod_test.go b/pkg/pod/pod_test.go index ad94f752026..a0929a5835b 100644 --- a/pkg/pod/pod_test.go +++ b/pkg/pod/pod_test.go @@ -29,12 +29,11 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" "github.com/tektoncd/pipeline/pkg/apis/pipeline/pod" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/spire" "github.com/tektoncd/pipeline/test/diff" "github.com/tektoncd/pipeline/test/names" corev1 "k8s.io/api/core/v1" - v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" fakek8s "k8s.io/client-go/kubernetes/fake" @@ -88,11 +87,11 @@ func TestPodBuild(t *testing.T) { for _, c := range []struct { desc string - trs v1beta1.TaskRunSpec + trs v1.TaskRunSpec trAnnotation map[string]string - trStatus v1beta1.TaskRunStatus + trStatus v1.TaskRunStatus trName string - ts v1beta1.TaskSpec + ts v1.TaskSpec configDefaults map[string]string featureFlags map[string]string want *corev1.PodSpec @@ -100,8 +99,8 @@ func TestPodBuild(t *testing.T) { wantPodName string }{{ desc: "simple", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -109,7 +108,7 @@ func TestPodBuild(t *testing.T) { }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -142,13 +141,13 @@ func TestPodBuild(t *testing.T) { }, }, { desc: "simple with breakpoint onFailure enabled, alpha api fields disabled", - trs: v1beta1.TaskRunSpec{ - Debug: &v1beta1.TaskRunDebug{ + trs: v1.TaskRunSpec{ + Debug: &v1.TaskRunDebug{ Breakpoint: []string{breakpointOnFailure}, }, }, - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -156,7 +155,7 @@ func TestPodBuild(t *testing.T) { }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -189,8 +188,8 @@ func TestPodBuild(t *testing.T) { }, }, { desc: "simple with running-in-environment-with-injected-sidecar set to false", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -201,7 +200,7 @@ func TestPodBuild(t *testing.T) { }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -234,20 +233,20 @@ func TestPodBuild(t *testing.T) { }, }, { desc: "with service account", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. }}, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ ServiceAccountName: "service-account", }, want: &corev1.PodSpec{ ServiceAccountName: "service-account", RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -287,14 +286,14 @@ func TestPodBuild(t *testing.T) { }, }, { desc: "with-pod-template", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. }}, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ PodTemplate: &pod.Template{ SecurityContext: &corev1.PodSecurityContext{ Sysctls: []corev1.Sysctl{ @@ -314,7 +313,7 @@ func TestPodBuild(t *testing.T) { }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -362,8 +361,8 @@ func TestPodBuild(t *testing.T) { }, }, { desc: "very long step name", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "a-very-very-long-character-step-name-to-trigger-max-len----and-invalid-characters", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -371,7 +370,7 @@ func TestPodBuild(t *testing.T) { }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "a-very-very-long-character-step-name-to-trigger-max-len----and-invalid-characters"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "a-very-very-long-character-step-name-to-trigger-max-len----and-invalid-characters"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-a-very-very-long-character-step-name-to-trigger-max-len", // step name trimmed. Image: "image", @@ -404,8 +403,8 @@ func TestPodBuild(t *testing.T) { }, }, { desc: "step name ends with non alphanumeric", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ends-with-invalid-%%__$$", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -413,7 +412,7 @@ func TestPodBuild(t *testing.T) { }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "ends-with-invalid-%%__$$"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "ends-with-invalid-%%__$$"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-ends-with-invalid", // invalid suffix removed. Image: "image", @@ -446,8 +445,8 @@ func TestPodBuild(t *testing.T) { }, }, { desc: "workingDir in workspace", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -457,7 +456,7 @@ func TestPodBuild(t *testing.T) { want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, InitContainers: []corev1.Container{ - entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */), + entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */), { Name: "working-dir-initializer", Image: images.WorkingDirInitImage, @@ -500,13 +499,13 @@ func TestPodBuild(t *testing.T) { }, }, { desc: "sidecar container", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "primary-name", Image: "primary-image", Command: []string{"cmd"}, // avoid entrypoint lookup. }}, - Sidecars: []v1beta1.Sidecar{{ + Sidecars: []v1.Sidecar{{ Name: "sc-name", Image: "sidecar-image", }}, @@ -514,7 +513,7 @@ func TestPodBuild(t *testing.T) { wantAnnotations: map[string]string{}, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "primary-name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "primary-name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-primary-name", Image: "primary-image", @@ -553,13 +552,13 @@ func TestPodBuild(t *testing.T) { }, }, { desc: "sidecar container with script", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "primary-name", Image: "primary-image", Command: []string{"cmd"}, // avoid entrypoint lookup. }}, - Sidecars: []v1beta1.Sidecar{{ + Sidecars: []v1.Sidecar{{ Name: "sc-name", Image: "sidecar-image", Script: "#!/bin/sh\necho hello from sidecar", @@ -569,7 +568,7 @@ func TestPodBuild(t *testing.T) { want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, InitContainers: []corev1.Container{ - entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "primary-name"}}, false /* setSecurityContext */, false /* windows */), + entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "primary-name"}}, false /* setSecurityContext */, false /* windows */), { Name: "place-scripts", Image: "busybox", @@ -621,13 +620,13 @@ _EOF_ }, }, { desc: "sidecar container with enable-ready-annotation-on-pod-create", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "primary-name", Image: "primary-image", Command: []string{"cmd"}, // avoid entrypoint lookup. }}, - Sidecars: []v1beta1.Sidecar{{ + Sidecars: []v1.Sidecar{{ Name: "sc-name", Image: "sidecar-image", }}, @@ -638,7 +637,7 @@ _EOF_ wantAnnotations: map[string]string{}, // no ready annotations on pod create since sidecars are present want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "primary-name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "primary-name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-primary-name", Image: "primary-image", @@ -674,11 +673,11 @@ _EOF_ }, }, { desc: "resource request", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("10Gi"), @@ -687,7 +686,7 @@ _EOF_ }, { Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("1"), corev1.ResourceMemory: resource.MustParse("100Gi"), @@ -697,7 +696,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{ + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{ {Name: "unnamed-0"}, {Name: "unnamed-1"}, }, false /* setSecurityContext */, false /* windows */)}, @@ -770,12 +769,12 @@ _EOF_ }, }, { desc: "with stepOverrides", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("10Gi"), @@ -783,10 +782,10 @@ _EOF_ }, }}, }, - trs: v1beta1.TaskRunSpec{ - StepOverrides: []v1beta1.TaskRunStepOverride{{ + trs: v1.TaskRunSpec{ + StepSpecs: []v1.TaskRunStepSpec{{ Name: "step1", - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("6"), corev1.ResourceMemory: resource.MustParse("5Gi"), @@ -796,7 +795,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{ + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{ {Name: "step1"}, }, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ @@ -837,25 +836,25 @@ _EOF_ }, }, { desc: "with stepOverrides and stepTemplate", - ts: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ - Resources: corev1.ResourceRequirements{ + ts: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("10Gi"), }, }, }, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "image", Command: []string{"cmd"}, }}, }, - trs: v1beta1.TaskRunSpec{ - StepOverrides: []v1beta1.TaskRunStepOverride{{ + trs: v1.TaskRunSpec{ + StepSpecs: []v1.TaskRunStepSpec{{ Name: "step1", - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("6"), corev1.ResourceMemory: resource.MustParse("5Gi"), @@ -865,7 +864,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{ + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{ {Name: "step1"}, }, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ @@ -906,16 +905,16 @@ _EOF_ }, }, { desc: "with sidecarOverrides", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "primary-name", Image: "primary-image", Command: []string{"cmd"}, // avoid entrypoint lookup. }}, - Sidecars: []v1beta1.Sidecar{{ + Sidecars: []v1.Sidecar{{ Name: "sc-name", Image: "sidecar-image", - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("10Gi"), @@ -923,10 +922,10 @@ _EOF_ }, }}, }, - trs: v1beta1.TaskRunSpec{ - SidecarOverrides: []v1beta1.TaskRunSidecarOverride{{ + trs: v1.TaskRunSpec{ + SidecarSpecs: []v1.TaskRunSidecarSpec{{ Name: "sc-name", - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("6"), corev1.ResourceMemory: resource.MustParse("5Gi"), @@ -937,7 +936,7 @@ _EOF_ wantAnnotations: map[string]string{}, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "primary-name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "primary-name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-primary-name", Image: "primary-image", @@ -979,12 +978,12 @@ _EOF_ }, }, { desc: "step with script and stepTemplate", - ts: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + ts: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ Env: []corev1.EnvVar{{Name: "FOO", Value: "bar"}}, Args: []string{"template", "args"}, }, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "one", Image: "image", Script: "#!/bin/sh\necho hello from step one", @@ -1003,7 +1002,7 @@ print("Hello from Python")`, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, InitContainers: []corev1.Container{ - entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{ + entrypointInitContainer(images.EntrypointImage, []v1.Step{ {Name: "one"}, {Name: "two"}, {Name: "regular-step"}, @@ -1120,8 +1119,8 @@ _EOF_ }, }, { desc: "step with script that uses two dollar signs", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "one", Image: "image", Script: "#!/bin/sh\n$$", @@ -1129,7 +1128,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "one"}}, false /* setSecurityContext */, false /* windows */), + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "one"}}, false /* setSecurityContext */, false /* windows */), { Name: "place-scripts", Image: images.ShellImage, @@ -1176,8 +1175,8 @@ _EOF_ }, }, { desc: "using another scheduler", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{ + ts: v1.TaskSpec{ + Steps: []v1.Step{ { Name: "schedule-me", Image: "image", @@ -1185,14 +1184,14 @@ _EOF_ }, }, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ PodTemplate: &pod.Template{ SchedulerName: "there-scheduler", }, }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "schedule-me"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "schedule-me"}}, false /* setSecurityContext */, false /* windows */)}, SchedulerName: "there-scheduler", Volumes: append(implicitVolumes, binVolume, runVolume(0), downwardVolume, corev1.Volume{ Name: "tekton-creds-init-home-0", @@ -1227,8 +1226,8 @@ _EOF_ }, }, { desc: "setting image pull secret", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{ + ts: v1.TaskSpec{ + Steps: []v1.Step{ { Name: "image-pull", Image: "image", @@ -1236,14 +1235,14 @@ _EOF_ }, }, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ PodTemplate: &pod.Template{ ImagePullSecrets: []corev1.LocalObjectReference{{Name: "imageSecret"}}, }, }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "image-pull"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "image-pull"}}, false /* setSecurityContext */, false /* windows */)}, Volumes: append(implicitVolumes, binVolume, runVolume(0), downwardVolume, corev1.Volume{ Name: "tekton-creds-init-home-0", VolumeSource: corev1.VolumeSource{EmptyDir: &corev1.EmptyDirVolumeSource{Medium: corev1.StorageMediumMemory}}, @@ -1277,8 +1276,8 @@ _EOF_ }}, { desc: "setting host aliases", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{ + ts: v1.TaskSpec{ + Steps: []v1.Step{ { Name: "host-aliases", Image: "image", @@ -1286,14 +1285,14 @@ _EOF_ }, }, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ PodTemplate: &pod.Template{ HostAliases: []corev1.HostAlias{{IP: "127.0.0.1", Hostnames: []string{"foo.bar"}}}, }, }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "host-aliases"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "host-aliases"}}, false /* setSecurityContext */, false /* windows */)}, Volumes: append(implicitVolumes, binVolume, runVolume(0), downwardVolume, corev1.Volume{ Name: "tekton-creds-init-home-0", VolumeSource: corev1.VolumeSource{EmptyDir: &corev1.EmptyDirVolumeSource{Medium: corev1.StorageMediumMemory}}, @@ -1326,8 +1325,8 @@ _EOF_ ActiveDeadlineSeconds: &defaultActiveDeadlineSeconds, }}, { desc: "using hostNetwork", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{ + ts: v1.TaskSpec{ + Steps: []v1.Step{ { Name: "use-my-hostNetwork", Image: "image", @@ -1335,14 +1334,14 @@ _EOF_ }, }, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ PodTemplate: &pod.Template{ HostNetwork: true, }, }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "use-my-hostNetwork"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "use-my-hostNetwork"}}, false /* setSecurityContext */, false /* windows */)}, HostNetwork: true, Volumes: append(implicitVolumes, binVolume, runVolume(0), downwardVolume, corev1.Volume{ Name: "tekton-creds-init-home-0", @@ -1376,8 +1375,8 @@ _EOF_ }, }, { desc: "step-with-timeout", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -1386,7 +1385,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -1421,20 +1420,20 @@ _EOF_ }, }, { desc: "step-with-no-timeout-equivalent-to-0-second-timeout", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. Timeout: &metav1.Duration{Duration: 0 * time.Second}, }}, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ Timeout: &metav1.Duration{Duration: 0 * time.Second}, }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -1472,8 +1471,8 @@ _EOF_ featureFlags: map[string]string{ "disable-creds-init": "true", }, - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -1481,7 +1480,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -1508,8 +1507,8 @@ _EOF_ }, }, { desc: "default-forbidden-env - disallowed via podTemplate.", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -1518,7 +1517,7 @@ _EOF_ }}, }, configDefaults: map[string]string{"default-forbidden-env": "FORBIDDEN_ENV, TEST_ENV"}, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ PodTemplate: &pod.Template{ Env: []corev1.EnvVar{{Name: "FORBIDDEN_ENV", Value: "overridden_val"}, {Name: "TEST_ENV", Value: "new_val"}}, @@ -1526,7 +1525,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -1563,15 +1562,15 @@ _EOF_ }, }, { desc: "override env var using podTemplate", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. Env: []corev1.EnvVar{{Name: "SOME_ENV", Value: "some_val"}}, }}, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ PodTemplate: &pod.Template{ Env: []corev1.EnvVar{{Name: "SOME_ENV", Value: "overridden_val"}, {Name: "SOME_ENV2", Value: "new_val"}}, @@ -1579,7 +1578,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -1618,8 +1617,8 @@ _EOF_ }, { desc: "hermetic env var", featureFlags: map[string]string{"enable-api-fields": "alpha"}, - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -1630,7 +1629,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -1667,8 +1666,8 @@ _EOF_ }, { desc: "override hermetic env var", featureFlags: map[string]string{"enable-api-fields": "alpha"}, - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -1680,7 +1679,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -1718,16 +1717,16 @@ _EOF_ }, }, { desc: "pod for a taskRun with retries", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. }}, }, - trStatus: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - RetriesStatus: []v1beta1.TaskRunStatus{{ + trStatus: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + RetriesStatus: []v1.TaskRunStatus{{ Status: duckv1.Status{ Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, @@ -1746,7 +1745,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -1780,8 +1779,8 @@ _EOF_ wantPodName: fmt.Sprintf("%s-pod-retry2", taskRunName), }, { desc: "long-taskrun-name", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -1791,7 +1790,7 @@ _EOF_ wantPodName: "task-run-0123456789-01234560d38957287bb0283c59440df14069f59-pod", want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -1824,8 +1823,8 @@ _EOF_ }, }, { desc: "using TopologySpreadConstraints", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{ + ts: v1.TaskSpec{ + Steps: []v1.Step{ { Name: "use-topologySpreadConstraints", Image: "image", @@ -1833,7 +1832,7 @@ _EOF_ }, }, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ PodTemplate: &pod.Template{ TopologySpreadConstraints: []corev1.TopologySpreadConstraint{ { @@ -1851,7 +1850,7 @@ _EOF_ }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "use-topologySpreadConstraints"}}, false /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "use-topologySpreadConstraints"}}, false /* setSecurityContext */, false /* windows */)}, TopologySpreadConstraints: []corev1.TopologySpreadConstraint{ { MaxSkew: 1, @@ -1897,12 +1896,12 @@ _EOF_ }, { desc: "sidecar logs enabled", featureFlags: map[string]string{"results-from": "sidecar-logs"}, - ts: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + ts: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "foo", - Type: v1beta1.ResultsTypeString, + Type: v1.ResultsTypeString, }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -1911,7 +1910,7 @@ _EOF_ want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, InitContainers: []corev1.Container{ - entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */), + entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */), }, Containers: []corev1.Container{{ Name: "step-name", @@ -1953,7 +1952,7 @@ _EOF_ Resources: corev1.ResourceRequirements{ Requests: nil, }, - VolumeMounts: append([]v1.VolumeMount{ + VolumeMounts: append([]corev1.VolumeMount{ {Name: "tekton-internal-bin", ReadOnly: true, MountPath: "/tekton/bin"}, {Name: "tekton-internal-run-0", ReadOnly: true, MountPath: "/tekton/run/0"}, }, implicitVolumeMounts...), @@ -1967,12 +1966,12 @@ _EOF_ }, { desc: "sidecar logs enabled with security context", featureFlags: map[string]string{"results-from": "sidecar-logs", "set-security-context": "true"}, - ts: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + ts: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "foo", - Type: v1beta1.ResultsTypeString, + Type: v1.ResultsTypeString, }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -1981,7 +1980,7 @@ _EOF_ want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, InitContainers: []corev1.Container{ - entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, true /* setSecurityContext */, false /* windows */), + entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, true /* setSecurityContext */, false /* windows */), }, Containers: []corev1.Container{{ Name: "step-name", @@ -2023,7 +2022,7 @@ _EOF_ Resources: corev1.ResourceRequirements{ Requests: nil, }, - VolumeMounts: append([]v1.VolumeMount{ + VolumeMounts: append([]corev1.VolumeMount{ {Name: "tekton-internal-bin", ReadOnly: true, MountPath: "/tekton/bin"}, {Name: "tekton-internal-run-0", ReadOnly: true, MountPath: "/tekton/run/0"}, }, implicitVolumeMounts...), @@ -2037,8 +2036,8 @@ _EOF_ }, }, { desc: "simple with security context", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -2047,7 +2046,7 @@ _EOF_ featureFlags: map[string]string{"set-security-context": "true"}, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, true /* setSecurityContext */, false /* windows */)}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, true /* setSecurityContext */, false /* windows */)}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -2131,7 +2130,7 @@ _EOF_ if c.trName != "" { testTaskRunName = c.trName } - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: testTaskRunName, Namespace: "default", @@ -2239,20 +2238,20 @@ debug-fail-continue-heredoc-randomly-generated-mz4c7 for _, c := range []struct { desc string - trs v1beta1.TaskRunSpec + trs v1.TaskRunSpec trAnnotation map[string]string - ts v1beta1.TaskSpec + ts v1.TaskSpec want *corev1.PodSpec wantAnnotations map[string]string }{{ desc: "simple with debug breakpoint onFailure", - trs: v1beta1.TaskRunSpec{ - Debug: &v1beta1.TaskRunDebug{ + trs: v1.TaskRunSpec{ + Debug: &v1.TaskRunDebug{ Breakpoint: []string{breakpointOnFailure}, }, }, - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -2260,7 +2259,7 @@ debug-fail-continue-heredoc-randomly-generated-mz4c7 }, want: &corev1.PodSpec{ RestartPolicy: corev1.RestartPolicyNever, - InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */), placeScriptsContainer}, + InitContainers: []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */), placeScriptsContainer}, Containers: []corev1.Container{{ Name: "step-name", Image: "image", @@ -2335,7 +2334,7 @@ debug-fail-continue-heredoc-randomly-generated-mz4c7 trAnnotations = c.trAnnotation trAnnotations[ReleaseAnnotation] = fakeVersion } - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "taskrun-name", Namespace: "default", @@ -2383,13 +2382,13 @@ type ExpectedComputeResources struct { func TestPodBuild_TaskLevelResourceRequirements(t *testing.T) { testcases := []struct { desc string - ts v1beta1.TaskSpec - trs v1beta1.TaskRunSpec + ts v1.TaskSpec + trs v1.TaskRunSpec expectedComputeResources []ExpectedComputeResources }{{ desc: "overwrite stepTemplate resources requirements", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "1st-step", Image: "image", Command: []string{"cmd"}, @@ -2398,8 +2397,8 @@ func TestPodBuild_TaskLevelResourceRequirements(t *testing.T) { Image: "image", Command: []string{"cmd"}, }}, - StepTemplate: &v1beta1.StepTemplate{ - Resources: corev1.ResourceRequirements{ + StepTemplate: &v1.StepTemplate{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("500m"), corev1.ResourceMemory: resource.MustParse("500Mi"), @@ -2407,7 +2406,7 @@ func TestPodBuild_TaskLevelResourceRequirements(t *testing.T) { }, }, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ ComputeResources: &corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("2"), @@ -2434,12 +2433,12 @@ func TestPodBuild_TaskLevelResourceRequirements(t *testing.T) { }}, }, { desc: "overwrite step resources requirements", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "1st-step", Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("250m"), corev1.ResourceMemory: resource.MustParse("500Mi"), @@ -2449,7 +2448,7 @@ func TestPodBuild_TaskLevelResourceRequirements(t *testing.T) { Name: "2nd-step", Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("300m"), corev1.ResourceMemory: resource.MustParse("500Mi"), @@ -2457,7 +2456,7 @@ func TestPodBuild_TaskLevelResourceRequirements(t *testing.T) { }, }}, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ ComputeResources: &corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("2"), @@ -2484,15 +2483,15 @@ func TestPodBuild_TaskLevelResourceRequirements(t *testing.T) { }}, }, { desc: "with sidecar resource requirements", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "1st-step", Image: "image", Command: []string{"cmd"}, }}, - Sidecars: []v1beta1.Sidecar{{ + Sidecars: []v1.Sidecar{{ Name: "sidecar", - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("750m"), }, @@ -2502,7 +2501,7 @@ func TestPodBuild_TaskLevelResourceRequirements(t *testing.T) { }, }}, }, - trs: v1beta1.TaskRunSpec{ + trs: v1.TaskRunSpec{ ComputeResources: &corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("2"), @@ -2550,7 +2549,7 @@ func TestPodBuild_TaskLevelResourceRequirements(t *testing.T) { Images: images, KubeClient: kubeclient, } - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "foo-taskrun", Namespace: "default", @@ -2571,7 +2570,7 @@ func TestPodBuild_TaskLevelResourceRequirements(t *testing.T) { } func TestPodBuildwithSpireEnabled(t *testing.T) { - initContainers := []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1beta1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)} + initContainers := []corev1.Container{entrypointInitContainer(images.EntrypointImage, []v1.Step{{Name: "name"}}, false /* setSecurityContext */, false /* windows */)} readonly := true for i := range initContainers { c := &initContainers[i] @@ -2584,15 +2583,15 @@ func TestPodBuildwithSpireEnabled(t *testing.T) { for _, c := range []struct { desc string - trs v1beta1.TaskRunSpec + trs v1.TaskRunSpec trAnnotation map[string]string - ts v1beta1.TaskSpec + ts v1.TaskSpec want *corev1.PodSpec wantAnnotations map[string]string }{{ desc: "simple", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "name", Image: "image", Command: []string{"cmd"}, // avoid entrypoint lookup. @@ -2691,7 +2690,7 @@ func TestPodBuildwithSpireEnabled(t *testing.T) { trAnnotations = c.trAnnotation trAnnotations[ReleaseAnnotation] = fakeVersion } - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "taskrun-name", Namespace: "default", @@ -2754,7 +2753,7 @@ func TestMakeLabels(t *testing.T) { "foo": "bar", "hello": "world", } - got := makeLabels(&v1beta1.TaskRun{ + got := makeLabels(&v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: taskRunName, Labels: map[string]string{ @@ -2769,7 +2768,7 @@ func TestMakeLabels(t *testing.T) { } func TestIsPodReadyImmediately(t *testing.T) { - sd := v1beta1.Sidecar{ + sd := v1.Sidecar{ Name: "a-sidecar", } @@ -2783,22 +2782,22 @@ func TestIsPodReadyImmediately(t *testing.T) { tcs := []struct { description string - sidecars []v1beta1.Sidecar + sidecars []v1.Sidecar featureFlags *config.FeatureFlags expected bool }{{ description: "Default behavior with sidecars present: Pod is not ready on create", - sidecars: []v1beta1.Sidecar{sd}, + sidecars: []v1.Sidecar{sd}, featureFlags: getFeatureFlags(map[string]string{}), expected: false, }, { description: "Default behavior with no sidecars present: Pod is not ready on create", - sidecars: []v1beta1.Sidecar{}, + sidecars: []v1.Sidecar{}, featureFlags: getFeatureFlags(map[string]string{}), expected: false, }, { description: "Setting await-sidecar-readiness to true and running-in-environment-with-injected-sidecars to true with sidecars present results in false", - sidecars: []v1beta1.Sidecar{sd}, + sidecars: []v1.Sidecar{sd}, featureFlags: getFeatureFlags(map[string]string{ featureAwaitSidecarReadiness: "true", featureInjectedSidecar: "true", @@ -2806,7 +2805,7 @@ func TestIsPodReadyImmediately(t *testing.T) { expected: false, }, { description: "Setting await-sidecar-readiness to true and running-in-environment-with-injected-sidecars to true with no sidecars present results in false", - sidecars: []v1beta1.Sidecar{}, + sidecars: []v1.Sidecar{}, featureFlags: getFeatureFlags(map[string]string{ featureAwaitSidecarReadiness: "true", featureInjectedSidecar: "true", @@ -2814,7 +2813,7 @@ func TestIsPodReadyImmediately(t *testing.T) { expected: false, }, { description: "Setting await-sidecar-readiness to true and running-in-environment-with-injected-sidecars to false with sidecars present results in false", - sidecars: []v1beta1.Sidecar{sd}, + sidecars: []v1.Sidecar{sd}, featureFlags: getFeatureFlags(map[string]string{ featureAwaitSidecarReadiness: "true", featureInjectedSidecar: "false", @@ -2822,7 +2821,7 @@ func TestIsPodReadyImmediately(t *testing.T) { expected: false, }, { description: "Setting await-sidecar-readiness to true and running-in-environment-with-injected-sidecars to false with no sidecars present results in true", - sidecars: []v1beta1.Sidecar{}, + sidecars: []v1.Sidecar{}, featureFlags: getFeatureFlags(map[string]string{ featureAwaitSidecarReadiness: "true", featureInjectedSidecar: "false", @@ -2830,7 +2829,7 @@ func TestIsPodReadyImmediately(t *testing.T) { expected: true, }, { description: "Setting await-sidecar-readiness to false and running-in-environment-with-injected-sidecars to true with sidecars present results in true", - sidecars: []v1beta1.Sidecar{sd}, + sidecars: []v1.Sidecar{sd}, featureFlags: getFeatureFlags(map[string]string{ featureAwaitSidecarReadiness: "false", featureInjectedSidecar: "true", @@ -2838,7 +2837,7 @@ func TestIsPodReadyImmediately(t *testing.T) { expected: true, }, { description: "Setting await-sidecar-readiness to false and running-in-environment-with-injected-sidecars to true with no sidecars present results in true", - sidecars: []v1beta1.Sidecar{}, + sidecars: []v1.Sidecar{}, featureFlags: getFeatureFlags(map[string]string{ featureAwaitSidecarReadiness: "false", featureInjectedSidecar: "true", @@ -2846,7 +2845,7 @@ func TestIsPodReadyImmediately(t *testing.T) { expected: true, }, { description: "Setting await-sidecar-readiness to false and running-in-environment-with-injected-sidecars to false with sidecars present results in true", - sidecars: []v1beta1.Sidecar{sd}, + sidecars: []v1.Sidecar{sd}, featureFlags: getFeatureFlags(map[string]string{ featureAwaitSidecarReadiness: "false", featureInjectedSidecar: "false", @@ -2854,7 +2853,7 @@ func TestIsPodReadyImmediately(t *testing.T) { expected: true, }, { description: "Setting await-sidecar-readiness to false and running-in-environment-with-injected-sidecars to false with no sidecars present results in true", - sidecars: []v1beta1.Sidecar{}, + sidecars: []v1.Sidecar{}, featureFlags: getFeatureFlags(map[string]string{ featureAwaitSidecarReadiness: "false", featureInjectedSidecar: "false", @@ -2874,14 +2873,14 @@ func TestIsPodReadyImmediately(t *testing.T) { func TestPrepareInitContainers(t *testing.T) { tcs := []struct { name string - steps []v1beta1.Step + steps []v1.Step windows bool setSecurityContext bool want corev1.Container featureFlags map[string]string }{{ name: "nothing-special", - steps: []v1beta1.Step{{ + steps: []v1.Step{{ Name: "foo", }}, want: corev1.Container{ @@ -2893,7 +2892,7 @@ func TestPrepareInitContainers(t *testing.T) { }, }, { name: "nothing-special-two-steps", - steps: []v1beta1.Step{{ + steps: []v1.Step{{ Name: "foo", }, { Name: "bar", @@ -2907,7 +2906,7 @@ func TestPrepareInitContainers(t *testing.T) { }, }, { name: "nothing-special-two-steps-security-context", - steps: []v1beta1.Step{{ + steps: []v1.Step{{ Name: "foo", }, { Name: "bar", @@ -2923,7 +2922,7 @@ func TestPrepareInitContainers(t *testing.T) { }, }, { name: "nothing-special-two-steps-windows", - steps: []v1beta1.Step{{ + steps: []v1.Step{{ Name: "foo", }, { Name: "bar", @@ -2938,7 +2937,7 @@ func TestPrepareInitContainers(t *testing.T) { }, }, { name: "nothing-special-two-steps-windows-security-context", - steps: []v1beta1.Step{{ + steps: []v1.Step{{ Name: "foo", }, { Name: "bar", @@ -2967,25 +2966,25 @@ func TestPrepareInitContainers(t *testing.T) { func TestUsesWindows(t *testing.T) { tcs := []struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun want bool }{{ name: "no pod template", - taskRun: &v1beta1.TaskRun{Spec: v1beta1.TaskRunSpec{}}, + taskRun: &v1.TaskRun{Spec: v1.TaskRunSpec{}}, want: false, }, { name: "pod template w/out node selector", - taskRun: &v1beta1.TaskRun{Spec: v1beta1.TaskRunSpec{PodTemplate: &pod.Template{Env: []corev1.EnvVar{{Name: "foo", Value: "bar"}}}}}, + taskRun: &v1.TaskRun{Spec: v1.TaskRunSpec{PodTemplate: &pod.Template{Env: []corev1.EnvVar{{Name: "foo", Value: "bar"}}}}}, want: false, }, { name: "uses linux", - taskRun: &v1beta1.TaskRun{Spec: v1beta1.TaskRunSpec{PodTemplate: &pod.Template{NodeSelector: map[string]string{ + taskRun: &v1.TaskRun{Spec: v1.TaskRunSpec{PodTemplate: &pod.Template{NodeSelector: map[string]string{ osSelectorLabel: "linux", }}}}, want: false, }, { name: "uses windows", - taskRun: &v1beta1.TaskRun{Spec: v1beta1.TaskRunSpec{PodTemplate: &pod.Template{NodeSelector: map[string]string{ + taskRun: &v1.TaskRun{Spec: v1.TaskRunSpec{PodTemplate: &pod.Template{NodeSelector: map[string]string{ osSelectorLabel: "windows", }}}}, want: true, diff --git a/pkg/pod/script.go b/pkg/pod/script.go index 9bbcb4442d5..9c4af99f9c8 100644 --- a/pkg/pod/script.go +++ b/pkg/pod/script.go @@ -22,7 +22,7 @@ import ( "path/filepath" "strings" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/names" corev1 "k8s.io/api/core/v1" ) @@ -77,7 +77,7 @@ var ( // - debugConfig: the TaskRun's debug configuration // - setSecurityContext: whether the init container should include a security context that will // allow it to run in a namespace with "restricted" pod security admission -func convertScripts(shellImageLinux string, shellImageWin string, steps []v1beta1.Step, sidecars []v1beta1.Sidecar, debugConfig *v1beta1.TaskRunDebug, setSecurityContext bool) (*corev1.Container, []corev1.Container, []corev1.Container) { +func convertScripts(shellImageLinux string, shellImageWin string, steps []v1.Step, sidecars []v1.Sidecar, debugConfig *v1.TaskRunDebug, setSecurityContext bool) (*corev1.Container, []corev1.Container, []corev1.Container) { // Place scripts is an init container used for creating scripts in the // /tekton/scripts directory which would be later used by the step containers // as a Command @@ -125,7 +125,7 @@ func convertScripts(shellImageLinux string, shellImageWin string, steps []v1beta // convertListOfSidecars iterates through the list of sidecars, generates the script file name and heredoc termination string, // adds an entry to the init container args, sets up the step container to run the script, and sets the volume mounts. -func convertListOfSidecars(sidecars []v1beta1.Sidecar, initContainer *corev1.Container, namePrefix string) []corev1.Container { +func convertListOfSidecars(sidecars []v1.Sidecar, initContainer *corev1.Container, namePrefix string) []corev1.Container { containers := []corev1.Container{} for i, s := range sidecars { c := s.ToK8sContainer() @@ -139,7 +139,7 @@ func convertListOfSidecars(sidecars []v1beta1.Sidecar, initContainer *corev1.Con // convertListOfSteps iterates through the list of steps, generates the script file name and heredoc termination string, // adds an entry to the init container args, sets up the step container to run the script, and sets the volume mounts. -func convertListOfSteps(steps []v1beta1.Step, initContainer *corev1.Container, breakpoints []string, namePrefix string) []corev1.Container { +func convertListOfSteps(steps []v1.Step, initContainer *corev1.Container, breakpoints []string, namePrefix string) []corev1.Container { containers := []corev1.Container{} for i, s := range steps { c := steps[i].ToK8sContainer() @@ -248,7 +248,7 @@ func placeDebugScriptInContainers(containers []corev1.Container, initContainer * } // hasScripts determines if we need to generate scripts in InitContainer given steps, sidecars and breakpoints. -func hasScripts(steps []v1beta1.Step, sidecars []v1beta1.Sidecar, breakpoints []string) bool { +func hasScripts(steps []v1.Step, sidecars []v1.Sidecar, breakpoints []string) bool { for _, s := range steps { if s.Script != "" { return true @@ -262,7 +262,7 @@ func hasScripts(steps []v1beta1.Step, sidecars []v1beta1.Sidecar, breakpoints [] return len(breakpoints) > 0 } -func checkWindowsRequirement(steps []v1beta1.Step, sidecars []v1beta1.Sidecar) bool { +func checkWindowsRequirement(steps []v1.Step, sidecars []v1.Sidecar) bool { // Detect windows shebangs for _, step := range steps { cleaned := strings.TrimSpace(step.Script) diff --git a/pkg/pod/script_test.go b/pkg/pod/script_test.go index 99db1dbdbd9..668c2a9061b 100644 --- a/pkg/pod/script_test.go +++ b/pkg/pod/script_test.go @@ -20,18 +20,18 @@ import ( "testing" "github.com/google/go-cmp/cmp" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/diff" "github.com/tektoncd/pipeline/test/names" corev1 "k8s.io/api/core/v1" ) func TestConvertScripts_NothingToConvert_EmptySidecars(t *testing.T) { - gotInit, gotScripts, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1beta1.Step{{ + gotInit, gotScripts, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1.Step{{ Image: "step-1", }, { Image: "step-2", - }}, []v1beta1.Sidecar{}, nil, false) + }}, []v1.Sidecar{}, nil, false) want := []corev1.Container{{ Image: "step-1", }, { @@ -50,7 +50,7 @@ func TestConvertScripts_NothingToConvert_EmptySidecars(t *testing.T) { } func TestConvertScripts_NothingToConvert_NilSidecars(t *testing.T) { - gotInit, gotScripts, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1beta1.Step{{ + gotInit, gotScripts, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1.Step{{ Image: "step-1", }, { Image: "step-2", @@ -73,11 +73,11 @@ func TestConvertScripts_NothingToConvert_NilSidecars(t *testing.T) { } func TestConvertScripts_NothingToConvert_WithSidecar(t *testing.T) { - gotInit, gotScripts, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1beta1.Step{{ + gotInit, gotScripts, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1.Step{{ Image: "step-1", }, { Image: "step-2", - }}, []v1beta1.Sidecar{{ + }}, []v1.Sidecar{{ Image: "sidecar-1", }}, nil, false) want := []corev1.Container{{ @@ -115,7 +115,7 @@ func TestConvertScripts_Steps(t *testing.T) { MountPath: "/another/one", }} - gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1beta1.Step{{ + gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1.Step{{ Script: `#!/bin/sh script-1`, Image: "step-1", @@ -134,7 +134,7 @@ script-3`, Image: "step-3", VolumeMounts: preExistingVolumeMounts, Args: []string{"my", "args"}, - }}, []v1beta1.Sidecar{}, nil, true) + }}, []v1.Sidecar{}, nil, true) wantInit := &corev1.Container{ Name: "place-scripts", Image: images.ShellImage, @@ -207,12 +207,12 @@ func TestConvertScripts_Sidecars(t *testing.T) { for _, tc := range []struct { name string - sidecars []v1beta1.Sidecar + sidecars []v1.Sidecar wantInitScripts string wantContainers []corev1.Container }{{ name: "simple sidecar", - sidecars: []v1beta1.Sidecar{{ + sidecars: []v1.Sidecar{{ Script: `#!/bin/sh script-1`, Image: "sidecar-1", @@ -231,7 +231,7 @@ _EOF_ }}, }, { name: "no script", - sidecars: []v1beta1.Sidecar{{ + sidecars: []v1.Sidecar{{ Image: "sidecar-2", }}, wantInitScripts: "", @@ -240,7 +240,7 @@ _EOF_ }}, }, { name: "pre-existing volumeMounts and args", - sidecars: []v1beta1.Sidecar{{ + sidecars: []v1.Sidecar{{ Script: `no-shebang`, Image: "sidecar-3", VolumeMounts: preExistingVolumeMounts, @@ -265,7 +265,7 @@ _EOF_ }}, }, { name: "multiple sidecars", - sidecars: []v1beta1.Sidecar{{ + sidecars: []v1.Sidecar{{ Script: `#!/bin/sh script-4`, Image: "sidecar-4", @@ -302,7 +302,7 @@ _EOF_ }}, }, { name: "sidecar with deprecated fields in step", - sidecars: []v1beta1.Sidecar{{ + sidecars: []v1.Sidecar{{ Image: "sidecar-7", LivenessProbe: &corev1.Probe{InitialDelaySeconds: 1}, ReadinessProbe: &corev1.Probe{InitialDelaySeconds: 2}, @@ -335,7 +335,7 @@ _EOF_ }}, }} { t.Run(tc.name, func(t *testing.T) { - gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1beta1.Step{}, tc.sidecars, nil, false) + gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1.Step{}, tc.sidecars, nil, false) gotInitScripts := "" if gotInit != nil { gotInitScripts = gotInit.Args[1] @@ -364,7 +364,7 @@ func TestConvertScripts_WithBreakpoint_OnFailure(t *testing.T) { MountPath: "/another/one", }} - gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1beta1.Step{{ + gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1.Step{{ Script: `#!/bin/sh script-1`, Image: "step-1", @@ -383,7 +383,7 @@ script-3`, Image: "step-3", VolumeMounts: preExistingVolumeMounts, Args: []string{"my", "args"}, - }}, []v1beta1.Sidecar{}, &v1beta1.TaskRunDebug{ + }}, []v1.Sidecar{}, &v1.TaskRunDebug{ Breakpoint: []string{breakpointOnFailure}, }, true) @@ -511,7 +511,7 @@ func TestConvertScripts_WithSidecar(t *testing.T) { MountPath: "/another/one", }} - gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1beta1.Step{{ + gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1.Step{{ Script: `#!/bin/sh script-1`, Image: "step-1", @@ -524,7 +524,7 @@ script-3`, Image: "step-3", VolumeMounts: preExistingVolumeMounts, Args: []string{"my", "args"}, - }}, []v1beta1.Sidecar{{ + }}, []v1.Sidecar{{ Script: `#!/bin/sh sidecar-1`, Image: "sidecar-1", @@ -603,7 +603,7 @@ func TestConvertScripts_Windows(t *testing.T) { MountPath: "/another/one", }} - gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1beta1.Step{{ + gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1.Step{{ Script: `#!win pwsh -File script-1`, Image: "step-1", @@ -622,7 +622,7 @@ no-shebang`, Image: "step-3", VolumeMounts: preExistingVolumeMounts, Args: []string{"my", "args"}, - }}, []v1beta1.Sidecar{}, nil, true) + }}, []v1.Sidecar{}, nil, true) wantInit := &corev1.Container{ Name: "place-scripts", Image: images.ShellImageWin, @@ -687,7 +687,7 @@ func TestConvertScripts_Windows_WithSidecar(t *testing.T) { MountPath: "/another/one", }} - gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1beta1.Step{{ + gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1.Step{{ Script: `#!win pwsh -File script-1`, Image: "step-1", @@ -700,7 +700,7 @@ script-3`, Image: "step-3", VolumeMounts: preExistingVolumeMounts, Args: []string{"my", "args"}, - }}, []v1beta1.Sidecar{{ + }}, []v1.Sidecar{{ Script: `#!win pwsh -File sidecar-1`, Image: "sidecar-1", @@ -767,10 +767,10 @@ sidecar-1 func TestConvertScripts_Windows_SidecarOnly(t *testing.T) { names.TestingSeed() - gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1beta1.Step{{ + gotInit, gotSteps, gotSidecars := convertScripts(images.ShellImage, images.ShellImageWin, []v1.Step{{ // No script to convert here.: Image: "step-1", - }}, []v1beta1.Sidecar{{ + }}, []v1.Sidecar{{ Script: `#!win python sidecar-1`, Image: "sidecar-1", diff --git a/pkg/pod/status.go b/pkg/pod/status.go index ed28f194521..80d141e049a 100644 --- a/pkg/pod/status.go +++ b/pkg/pod/status.go @@ -28,7 +28,7 @@ import ( "github.com/tektoncd/pipeline/internal/sidecarlogresults" "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/result" "github.com/tektoncd/pipeline/pkg/termination" "go.uber.org/zap" @@ -116,11 +116,11 @@ func SidecarsReady(podStatus corev1.PodStatus) bool { } // MakeTaskRunStatus returns a TaskRunStatus based on the Pod's status. -func MakeTaskRunStatus(ctx context.Context, logger *zap.SugaredLogger, tr v1beta1.TaskRun, pod *corev1.Pod, kubeclient kubernetes.Interface, ts *v1beta1.TaskSpec) (v1beta1.TaskRunStatus, error) { +func MakeTaskRunStatus(ctx context.Context, logger *zap.SugaredLogger, tr v1.TaskRun, pod *corev1.Pod, kubeclient kubernetes.Interface, ts *v1.TaskSpec) (v1.TaskRunStatus, error) { trs := &tr.Status if trs.GetCondition(apis.ConditionSucceeded) == nil || trs.GetCondition(apis.ConditionSucceeded).Status == corev1.ConditionUnknown { // If the taskRunStatus doesn't exist yet, it's because we just started running - markStatusRunning(trs, v1beta1.TaskRunReasonRunning.String(), "Not all Steps in the Task have finished executing") + markStatusRunning(trs, v1.TaskRunReasonRunning.String(), "Not all Steps in the Task have finished executing") } sortPodContainerStatuses(pod.Status.ContainerStatuses, pod.Spec.Containers) @@ -134,8 +134,8 @@ func MakeTaskRunStatus(ctx context.Context, logger *zap.SugaredLogger, tr v1beta } trs.PodName = pod.Name - trs.Steps = []v1beta1.StepState{} - trs.Sidecars = []v1beta1.SidecarState{} + trs.Steps = []v1.StepState{} + trs.Sidecars = []v1.SidecarState{} var stepStatuses []corev1.ContainerStatus var sidecarStatuses []corev1.ContainerStatus @@ -154,17 +154,17 @@ func MakeTaskRunStatus(ctx context.Context, logger *zap.SugaredLogger, tr v1beta setTaskRunStatusBasedOnSidecarStatus(sidecarStatuses, trs) - trs.TaskRunResults = removeDuplicateResults(trs.TaskRunResults) + trs.Results = removeDuplicateResults(trs.Results) return *trs, merr.ErrorOrNil() } -func setTaskRunStatusBasedOnStepStatus(ctx context.Context, logger *zap.SugaredLogger, stepStatuses []corev1.ContainerStatus, tr *v1beta1.TaskRun, podPhase corev1.PodPhase, kubeclient kubernetes.Interface, ts *v1beta1.TaskSpec) *multierror.Error { +func setTaskRunStatusBasedOnStepStatus(ctx context.Context, logger *zap.SugaredLogger, stepStatuses []corev1.ContainerStatus, tr *v1.TaskRun, podPhase corev1.PodPhase, kubeclient kubernetes.Interface, ts *v1.TaskSpec) *multierror.Error { trs := &tr.Status var merr *multierror.Error // collect results from taskrun spec and taskspec - specResults := []v1beta1.TaskResult{} + specResults := []v1.TaskResult{} if tr.Spec.TaskSpec != nil { specResults = append(specResults, tr.Spec.TaskSpec.Results...) } @@ -184,7 +184,7 @@ func setTaskRunStatusBasedOnStepStatus(ctx context.Context, logger *zap.SugaredL // populate task run CRD with results from sidecar logs taskResults, _ := filterResults(sidecarLogResults, specResults) if tr.IsDone() { - trs.TaskRunResults = append(trs.TaskRunResults, taskResults...) + trs.Results = append(trs.Results, taskResults...) } } // Continue with extraction of termination messages @@ -212,7 +212,7 @@ func setTaskRunStatusBasedOnStepStatus(ctx context.Context, logger *zap.SugaredL taskResults, filteredResults := filterResults(results, specResults) if tr.IsDone() { - trs.TaskRunResults = append(trs.TaskRunResults, taskResults...) + trs.Results = append(trs.Results, taskResults...) } msg, err = createMessageFromResults(filteredResults) if err != nil { @@ -229,10 +229,10 @@ func setTaskRunStatusBasedOnStepStatus(ctx context.Context, logger *zap.SugaredL } } } - trs.Steps = append(trs.Steps, v1beta1.StepState{ + trs.Steps = append(trs.Steps, v1.StepState{ ContainerState: *state, Name: trimStepPrefix(s.Name), - ContainerName: s.Name, + Container: s.Name, ImageID: s.ImageID, }) } @@ -240,12 +240,12 @@ func setTaskRunStatusBasedOnStepStatus(ctx context.Context, logger *zap.SugaredL return merr } -func setTaskRunStatusBasedOnSidecarStatus(sidecarStatuses []corev1.ContainerStatus, trs *v1beta1.TaskRunStatus) { +func setTaskRunStatusBasedOnSidecarStatus(sidecarStatuses []corev1.ContainerStatus, trs *v1.TaskRunStatus) { for _, s := range sidecarStatuses { - trs.Sidecars = append(trs.Sidecars, v1beta1.SidecarState{ + trs.Sidecars = append(trs.Sidecars, v1.SidecarState{ ContainerState: *s.State.DeepCopy(), Name: TrimSidecarPrefix(s.Name), - ContainerName: s.Name, + Container: s.Name, ImageID: s.ImageID, }) } @@ -265,32 +265,32 @@ func createMessageFromResults(results []result.RunResult) (string, error) { // filterResults filters the RunResults and TaskResults based on the results declared in the task spec. // It returns a slice of any of the input results that are defined in the task spec, converted to TaskRunResults, // and a slice of any of the RunResults that don't represent internal values (i.e. those that should not be displayed in the TaskRun status. -func filterResults(results []result.RunResult, specResults []v1beta1.TaskResult) ([]v1beta1.TaskRunResult, []result.RunResult) { - var taskResults []v1beta1.TaskRunResult +func filterResults(results []result.RunResult, specResults []v1.TaskResult) ([]v1.TaskRunResult, []result.RunResult) { + var taskResults []v1.TaskRunResult var filteredResults []result.RunResult - neededTypes := make(map[string]v1beta1.ResultsType) + neededTypes := make(map[string]v1.ResultsType) for _, r := range specResults { neededTypes[r.Name] = r.Type } for _, r := range results { switch r.ResultType { case result.TaskRunResultType: - var taskRunResult v1beta1.TaskRunResult - if neededTypes[r.Key] == v1beta1.ResultsTypeString { - taskRunResult = v1beta1.TaskRunResult{ + var taskRunResult v1.TaskRunResult + if neededTypes[r.Key] == v1.ResultsTypeString { + taskRunResult = v1.TaskRunResult{ Name: r.Key, - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues(r.Value), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues(r.Value), } } else { - v := v1beta1.ResultValue{} + v := v1.ResultValue{} err := v.UnmarshalJSON([]byte(r.Value)) if err != nil { continue } - taskRunResult = v1beta1.TaskRunResult{ + taskRunResult = v1.TaskRunResult{ Name: r.Key, - Type: v1beta1.ResultsType(v.Type), + Type: v1.ResultsType(v.Type), Value: v, } } @@ -307,13 +307,13 @@ func filterResults(results []result.RunResult, specResults []v1beta1.TaskResult) return taskResults, filteredResults } -func removeDuplicateResults(taskRunResult []v1beta1.TaskRunResult) []v1beta1.TaskRunResult { +func removeDuplicateResults(taskRunResult []v1.TaskRunResult) []v1.TaskRunResult { if len(taskRunResult) == 0 { return nil } - uniq := make([]v1beta1.TaskRunResult, 0) - latest := make(map[string]v1beta1.TaskRunResult, 0) + uniq := make([]v1.TaskRunResult, 0) + latest := make(map[string]v1.TaskRunResult, 0) for _, res := range taskRunResult { if _, seen := latest[res.Name]; !seen { uniq = append(uniq, res) @@ -355,10 +355,10 @@ func extractExitCodeFromResults(results []result.RunResult) (*int32, error) { return nil, nil //nolint:nilnil // would be more ergonomic to return a sentinel error } -func updateCompletedTaskRunStatus(logger *zap.SugaredLogger, trs *v1beta1.TaskRunStatus, pod *corev1.Pod) { +func updateCompletedTaskRunStatus(logger *zap.SugaredLogger, trs *v1.TaskRunStatus, pod *corev1.Pod) { if DidTaskRunFail(pod) { msg := getFailureMessage(logger, pod) - markStatusFailure(trs, v1beta1.TaskRunReasonFailed.String(), msg) + markStatusFailure(trs, v1.TaskRunReasonFailed.String(), msg) } else { markStatusSuccess(trs) } @@ -367,10 +367,10 @@ func updateCompletedTaskRunStatus(logger *zap.SugaredLogger, trs *v1beta1.TaskRu trs.CompletionTime = &metav1.Time{Time: time.Now()} } -func updateIncompleteTaskRunStatus(trs *v1beta1.TaskRunStatus, pod *corev1.Pod) { +func updateIncompleteTaskRunStatus(trs *v1.TaskRunStatus, pod *corev1.Pod) { switch pod.Status.Phase { case corev1.PodRunning: - markStatusRunning(trs, v1beta1.TaskRunReasonRunning.String(), "Not all Steps in the Task have finished executing") + markStatusRunning(trs, v1.TaskRunReasonRunning.String(), "Not all Steps in the Task have finished executing") case corev1.PodPending: switch { case IsPodExceedingNodeResources(pod): @@ -406,7 +406,7 @@ func DidTaskRunFail(pod *corev1.Pod) bool { } // IsPodArchived indicates if a pod is archived in the retriesStatus. -func IsPodArchived(pod *corev1.Pod, trs *v1beta1.TaskRunStatus) bool { +func IsPodArchived(pod *corev1.Pod, trs *v1.TaskRunStatus) bool { for _, retryStatus := range trs.RetriesStatus { if retryStatus.PodName == pod.GetName() { return true @@ -570,7 +570,7 @@ func getWaitingMessage(pod *corev1.Pod) string { } // markStatusRunning sets taskrun status to running -func markStatusRunning(trs *v1beta1.TaskRunStatus, reason, message string) { +func markStatusRunning(trs *v1.TaskRunStatus, reason, message string) { trs.SetCondition(&apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionUnknown, @@ -580,7 +580,7 @@ func markStatusRunning(trs *v1beta1.TaskRunStatus, reason, message string) { } // markStatusFailure sets taskrun status to failure with specified reason -func markStatusFailure(trs *v1beta1.TaskRunStatus, reason string, message string) { +func markStatusFailure(trs *v1.TaskRunStatus, reason string, message string) { trs.SetCondition(&apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, @@ -590,11 +590,11 @@ func markStatusFailure(trs *v1beta1.TaskRunStatus, reason string, message string } // markStatusSuccess sets taskrun status to success -func markStatusSuccess(trs *v1beta1.TaskRunStatus) { +func markStatusSuccess(trs *v1.TaskRunStatus) { trs.SetCondition(&apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, - Reason: v1beta1.TaskRunReasonSuccessful.String(), + Reason: v1.TaskRunReasonSuccessful.String(), Message: "All Steps have completed executing", }) } diff --git a/pkg/pod/status_test.go b/pkg/pod/status_test.go index 9b92734b028..59a701832f6 100644 --- a/pkg/pod/status_test.go +++ b/pkg/pod/status_test.go @@ -28,10 +28,9 @@ import ( "github.com/hashicorp/go-multierror" "github.com/tektoncd/pipeline/internal/sidecarlogresults" "github.com/tektoncd/pipeline/pkg/apis/config" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/diff" corev1 "k8s.io/api/core/v1" - v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" fakek8s "k8s.io/client-go/kubernetes/fake" "knative.dev/pkg/apis" @@ -85,13 +84,13 @@ func TestSetTaskRunStatusBasedOnStepStatus(t *testing.T) { }} { t.Run(c.desc, func(t *testing.T) { startTime := time.Date(2010, 1, 1, 1, 1, 1, 1, time.UTC) - tr := v1beta1.TaskRun{ + tr := v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "task-run", Namespace: "foo", }, - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ StartTime: &metav1.Time{Time: startTime}, }, }, @@ -103,7 +102,7 @@ func TestSetTaskRunStatusBasedOnStepStatus(t *testing.T) { for _, cs := range c.ContainerStatuses { originalStatuses = append(originalStatuses, *cs.DeepCopy()) } - merr := setTaskRunStatusBasedOnStepStatus(context.Background(), logger, c.ContainerStatuses, &tr, corev1.PodRunning, kubeclient, &v1beta1.TaskSpec{}) + merr := setTaskRunStatusBasedOnStepStatus(context.Background(), logger, c.ContainerStatuses, &tr, corev1.PodRunning, kubeclient, &v1.TaskSpec{}) if merr != nil { t.Errorf("setTaskRunStatusBasedOnStepStatus: %s", merr) } @@ -129,15 +128,15 @@ func TestSetTaskRunStatusBasedOnStepStatus_sidecar_logs(t *testing.T) { wantErr: fmt.Errorf("%s", "Invalid result invalid character 'k' in literal false (expecting 'l')"), }} { t.Run(c.desc, func(t *testing.T) { - tr := v1beta1.TaskRun{ + tr := v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "task-run", Namespace: "foo", }, - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "result1", }}, }, @@ -148,7 +147,7 @@ func TestSetTaskRunStatusBasedOnStepStatus_sidecar_logs(t *testing.T) { logger, _ := logging.NewLogger("", "status") kubeclient := fakek8s.NewSimpleClientset() - pod := &v1.Pod{ + pod := &corev1.Pod{ TypeMeta: metav1.TypeMeta{ Kind: "Pod", APIVersion: "v1", @@ -157,15 +156,15 @@ func TestSetTaskRunStatusBasedOnStepStatus_sidecar_logs(t *testing.T) { Name: "task-run-pod", Namespace: "foo", }, - Spec: v1.PodSpec{ - Containers: []v1.Container{ + Spec: corev1.PodSpec{ + Containers: []corev1.Container{ { Name: "container", Image: "image", }, }, }, - Status: v1.PodStatus{ + Status: corev1.PodStatus{ Phase: corev1.PodRunning, }, } @@ -181,7 +180,7 @@ func TestSetTaskRunStatusBasedOnStepStatus_sidecar_logs(t *testing.T) { }) var wantErr *multierror.Error wantErr = multierror.Append(wantErr, c.wantErr) - merr := setTaskRunStatusBasedOnStepStatus(ctx, logger, []corev1.ContainerStatus{{}}, &tr, pod.Status.Phase, kubeclient, &v1beta1.TaskSpec{}) + merr := setTaskRunStatusBasedOnStepStatus(ctx, logger, []corev1.ContainerStatus{{}}, &tr, pod.Status.Phase, kubeclient, &v1.TaskSpec{}) if d := cmp.Diff(wantErr.Error(), merr.Error()); d != "" { t.Errorf("Got unexpected error %s", diff.PrintWantGot(d)) @@ -195,16 +194,16 @@ func TestMakeTaskRunStatus(t *testing.T) { desc string podStatus corev1.PodStatus pod corev1.Pod - want v1beta1.TaskRunStatus + want v1.TaskRunStatus }{{ desc: "empty", podStatus: corev1.PodStatus{}, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusRunning(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{}, - Sidecars: []v1beta1.SidecarState{}, + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{}, + Sidecars: []v1.SidecarState{}, }, }, }, { @@ -224,18 +223,18 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusRunning(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 123, }}, - Name: "state-name", - ContainerName: "step-state-name", + Name: "state-name", + Container: "step-state-name", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, }, }, }, { @@ -258,19 +257,19 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusRunning(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 123, }}, - Name: "state-name", - ContainerName: "step-state-name", - ImageID: "image-id", + Name: "state-name", + Container: "step-state-name", + ImageID: "image-id", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, }, }, }, { @@ -287,19 +286,19 @@ func TestMakeTaskRunStatus(t *testing.T) { ImageID: "image-id", }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 0, }}, - Name: "step-push", - ContainerName: "step-step-push", - ImageID: "image-id", + Name: "step-push", + Container: "step-step-push", + ImageID: "image-id", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, }, @@ -315,17 +314,17 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusRunning(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Running: &corev1.ContainerStateRunning{}, }, - Name: "running-step", - ContainerName: "step-running-step", + Name: "running-step", + Container: "step-running-step", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, }, }, }, { @@ -346,20 +345,20 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ - Status: statusFailure(v1beta1.TaskRunReasonFailed.String(), "\"step-failure\" exited with code 123 (image: \"image-id\"); for logs run: kubectl -n foo logs pod -c step-failure\n"), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + want: v1.TaskRunStatus{ + Status: statusFailure(v1.TaskRunReasonFailed.String(), "\"step-failure\" exited with code 123 (image: \"image-id\"); for logs run: kubectl -n foo logs pod -c step-failure\n"), + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 123, }}, - Name: "failure", - ContainerName: "step-failure", - ImageID: "image-id", + Name: "failure", + Container: "step-failure", + ImageID: "image-id", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, }, @@ -370,11 +369,11 @@ func TestMakeTaskRunStatus(t *testing.T) { Phase: corev1.PodFailed, Message: "boom", }, - want: v1beta1.TaskRunStatus{ - Status: statusFailure(v1beta1.TaskRunReasonFailed.String(), "boom"), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{}, - Sidecars: []v1beta1.SidecarState{}, + want: v1.TaskRunStatus{ + Status: statusFailure(v1.TaskRunReasonFailed.String(), "boom"), + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{}, + Sidecars: []v1.SidecarState{}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, }, @@ -394,20 +393,20 @@ func TestMakeTaskRunStatus(t *testing.T) { ImageID: "image-id", }}, }, - want: v1beta1.TaskRunStatus{ - Status: statusFailure(v1beta1.TaskRunReasonFailed.String(), "OOMKilled"), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + want: v1.TaskRunStatus{ + Status: statusFailure(v1.TaskRunReasonFailed.String(), "OOMKilled"), + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Reason: "OOMKilled", ExitCode: 0, }}, - Name: "step-push", - ContainerName: "step-step-push", - ImageID: "image-id", + Name: "step-push", + Container: "step-step-push", + ImageID: "image-id", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, }, @@ -415,11 +414,11 @@ func TestMakeTaskRunStatus(t *testing.T) { }, { desc: "failure-unspecified", podStatus: corev1.PodStatus{Phase: corev1.PodFailed}, - want: v1beta1.TaskRunStatus{ - Status: statusFailure(v1beta1.TaskRunReasonFailed.String(), "build failed for unspecified reasons."), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{}, - Sidecars: []v1beta1.SidecarState{}, + want: v1.TaskRunStatus{ + Status: statusFailure(v1.TaskRunReasonFailed.String(), "build failed for unspecified reasons."), + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{}, + Sidecars: []v1.SidecarState{}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, }, @@ -440,19 +439,19 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusPending("Pending", `build step "step-status-name" is pending with reason "i'm pending"`), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Waiting: &corev1.ContainerStateWaiting{ Message: "i'm pending", }, }, - Name: "status-name", - ContainerName: "step-status-name", + Name: "status-name", + Container: "step-status-name", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, }, }, }, { @@ -465,11 +464,11 @@ func TestMakeTaskRunStatus(t *testing.T) { Message: "the message", }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusPending("Pending", `pod status "the type":"Unknown"; message: "the message"`), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{}, - Sidecars: []v1beta1.SidecarState{}, + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{}, + Sidecars: []v1.SidecarState{}, }, }, }, { @@ -478,21 +477,21 @@ func TestMakeTaskRunStatus(t *testing.T) { Phase: corev1.PodPending, Message: "pod status message", }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusPending("Pending", "pod status message"), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{}, - Sidecars: []v1beta1.SidecarState{}, + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{}, + Sidecars: []v1.SidecarState{}, }, }, }, { desc: "pending-no-message", podStatus: corev1.PodStatus{Phase: corev1.PodPending}, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusPending("Pending", "Pending"), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{}, - Sidecars: []v1beta1.SidecarState{}, + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{}, + Sidecars: []v1.SidecarState{}, }, }, }, { @@ -504,11 +503,11 @@ func TestMakeTaskRunStatus(t *testing.T) { Message: "0/1 nodes are available: 1 Insufficient cpu.", }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusPending(ReasonExceededNodeResources, "TaskRun Pod exceeded available resources"), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{}, - Sidecars: []v1beta1.SidecarState{}, + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{}, + Sidecars: []v1.SidecarState{}, }, }, }, { @@ -523,11 +522,11 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusFailure(ReasonCreateContainerConfigError, "Failed to create pod due to config error"), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{}, - Sidecars: []v1beta1.SidecarState{}, + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{}, + Sidecars: []v1.SidecarState{}, }, }, }, { @@ -548,23 +547,23 @@ func TestMakeTaskRunStatus(t *testing.T) { Ready: true, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusRunning(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Running: &corev1.ContainerStateRunning{}, }, - Name: "running-step", - ContainerName: "step-running-step", + Name: "running-step", + Container: "step-running-step", }}, - Sidecars: []v1beta1.SidecarState{{ + Sidecars: []v1.SidecarState{{ ContainerState: corev1.ContainerState{ Running: &corev1.ContainerStateRunning{}, }, - Name: "running", - ImageID: "image-id", - ContainerName: "sidecar-running", + Name: "running", + ImageID: "image-id", + Container: "sidecar-running", }}, }, }, @@ -592,29 +591,29 @@ func TestMakeTaskRunStatus(t *testing.T) { Ready: true, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusRunning(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Waiting: &corev1.ContainerStateWaiting{ Reason: "PodInitializing", Message: "PodInitializing", }, }, - Name: "waiting-step", - ContainerName: "step-waiting-step", + Name: "waiting-step", + Container: "step-waiting-step", }}, - Sidecars: []v1beta1.SidecarState{{ + Sidecars: []v1.SidecarState{{ ContainerState: corev1.ContainerState{ Waiting: &corev1.ContainerStateWaiting{ Reason: "PodInitializing", Message: "PodInitializing", }, }, - Name: "waiting", - ImageID: "image-id", - ContainerName: "sidecar-waiting", + Name: "waiting", + ImageID: "image-id", + Container: "sidecar-waiting", }}, }, }, @@ -640,17 +639,17 @@ func TestMakeTaskRunStatus(t *testing.T) { Ready: true, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusRunning(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Running: &corev1.ContainerStateRunning{}, }, - Name: "running-step", - ContainerName: "step-running-step", + Name: "running-step", + Container: "step-running-step", }}, - Sidecars: []v1beta1.SidecarState{{ + Sidecars: []v1.SidecarState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 1, @@ -658,9 +657,9 @@ func TestMakeTaskRunStatus(t *testing.T) { Message: "Error", }, }, - Name: "error", - ImageID: "image-id", - ContainerName: "sidecar-error", + Name: "error", + ImageID: "image-id", + Container: "sidecar-error", }}, }, }, @@ -677,18 +676,18 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"digest","value":"sha256:12345","resourceName":"source-image"}]`, }}, - Name: "foo", - ContainerName: "step-foo", + Name: "foo", + Container: "step-foo", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, }, @@ -706,22 +705,22 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"digest","value":"sha256:1234","resourceName":"source-image"},{"key":"resultName","value":"resultValue","type":1}]`, }}, - Name: "bar", - ContainerName: "step-bar", + Name: "bar", + Container: "step-bar", }}, - Sidecars: []v1beta1.SidecarState{}, - TaskRunResults: []v1beta1.TaskRunResult{{ + Sidecars: []v1.SidecarState{}, + Results: []v1.TaskRunResult{{ Name: "resultName", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("resultValue"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("resultValue"), }}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, @@ -740,22 +739,22 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"digest","value":"sha256:1234","resourceName":"source-image"},{"key":"resultName","value":"resultValue","type":1}]`, }}, - Name: "banana", - ContainerName: "step-banana", + Name: "banana", + Container: "step-banana", }}, - Sidecars: []v1beta1.SidecarState{}, - TaskRunResults: []v1beta1.TaskRunResult{{ + Sidecars: []v1.SidecarState{}, + Results: []v1.TaskRunResult{{ Name: "resultName", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("resultValue"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("resultValue"), }}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, @@ -781,33 +780,33 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"resultNameOne","value":"resultValueOne","type":1},{"key":"resultNameTwo","value":"resultValueTwo","type":1}]`, }}, - Name: "one", - ContainerName: "step-one", + Name: "one", + Container: "step-one", }, { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"resultNameOne","value":"resultValueThree","type":1},{"key":"resultNameTwo","value":"resultValueTwo","type":1}]`, }}, - Name: "two", - ContainerName: "step-two", + Name: "two", + Container: "step-two", }}, - Sidecars: []v1beta1.SidecarState{}, - TaskRunResults: []v1beta1.TaskRunResult{{ + Sidecars: []v1.SidecarState{}, + Results: []v1.TaskRunResult{{ Name: "resultNameOne", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("resultValueThree"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("resultValueThree"), }, { Name: "resultNameTwo", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("resultValueTwo"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("resultValueTwo"), }}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, @@ -826,24 +825,24 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ - Status: statusFailure(v1beta1.TaskRunReasonFailed.String(), "build failed for unspecified reasons."), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + want: v1.TaskRunStatus{ + Status: statusFailure(v1.TaskRunReasonFailed.String(), "build failed for unspecified reasons."), + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"resultName","value":"resultValue","type":1}]`, }, }, - Name: "task-result", - ContainerName: "step-task-result", + Name: "task-result", + Container: "step-task-result", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, CompletionTime: &metav1.Time{Time: time.Now()}, - TaskRunResults: []v1beta1.TaskRunResult{{ + Results: []v1.TaskRunResult{{ Name: "resultName", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("resultValue"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("resultValue"), }}, }, }, @@ -858,16 +857,16 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ - Status: statusFailure(v1beta1.TaskRunReasonFailed.String(), "build failed for unspecified reasons."), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + want: v1.TaskRunStatus{ + Status: statusFailure(v1.TaskRunReasonFailed.String(), "build failed for unspecified reasons."), + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{}}, - Name: "mango", - ContainerName: "step-mango", + Name: "mango", + Container: "step-mango", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, }, @@ -885,16 +884,16 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{}}, - Name: "pineapple", - ContainerName: "step-pineapple", + Name: "pineapple", + Container: "step-pineapple", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, }, @@ -911,22 +910,22 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"resultNameThree","value":"","type":1}]`, }}, - Name: "pear", - ContainerName: "step-pear", + Name: "pear", + Container: "step-pear", }}, - Sidecars: []v1beta1.SidecarState{}, - TaskRunResults: []v1beta1.TaskRunResult{{ + Sidecars: []v1.SidecarState{}, + Results: []v1.TaskRunResult{{ Name: "resultNameThree", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues(""), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues(""), }}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, @@ -945,22 +944,22 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"resultNameThree","value":"","type":1}]`, }}, - Name: "pear", - ContainerName: "step-pear", + Name: "pear", + Container: "step-pear", }}, - Sidecars: []v1beta1.SidecarState{}, - TaskRunResults: []v1beta1.TaskRunResult{{ + Sidecars: []v1.SidecarState{}, + Results: []v1.TaskRunResult{{ Name: "resultNameThree", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues(""), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues(""), }}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, @@ -1015,37 +1014,37 @@ func TestMakeTaskRunStatus(t *testing.T) { }}, }, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{}, }, - Name: "first", - ContainerName: "step-first", + Name: "first", + Container: "step-first", }, { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{}}, - Name: "second", - ContainerName: "step-second", + Name: "second", + Container: "step-second", }, { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{}}, - Name: "third", - ContainerName: "step-third", + Name: "third", + Container: "step-third", }, { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{}}, - Name: "", - ContainerName: "step-", + Name: "", + Container: "step-", }, { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{}}, - Name: "fourth", - ContainerName: "step-fourth", + Name: "fourth", + Container: "step-fourth", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, }, @@ -1080,26 +1079,26 @@ func TestMakeTaskRunStatus(t *testing.T) { }}, }, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 11, }, }, - Name: "first", - ContainerName: "step-first", + Name: "first", + Container: "step-first", }, { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 0, }}, - Name: "second", - ContainerName: "step-second", + Name: "second", + Container: "step-second", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, }, @@ -1128,20 +1127,20 @@ func TestMakeTaskRunStatus(t *testing.T) { }}, }, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusPending("PullImageFailed", `build step "step-first" is pending with reason "Back-off pulling image xxxxxxx"`), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Waiting: &corev1.ContainerStateWaiting{ Reason: "ImagePullBackOff", Message: "Back-off pulling image xxxxxxx", }, }, - Name: "first", - ContainerName: "step-first", + Name: "first", + Container: "step-first", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, }, }, }, { @@ -1180,20 +1179,20 @@ func TestMakeTaskRunStatus(t *testing.T) { }}, }, }, - want: v1beta1.TaskRunStatus{ - Status: statusFailure(v1beta1.TaskRunReasonFailed.String(), "init container failed, \"init-A\" exited with code 1 (image: \"init-image-id-A\"); for logs run: kubectl -n foo logs pod -c init-A\n"), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + want: v1.TaskRunStatus{ + Status: statusFailure(v1.TaskRunReasonFailed.String(), "init container failed, \"init-A\" exited with code 1 (image: \"init-image-id-A\"); for logs run: kubectl -n foo logs pod -c init-A\n"), + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Waiting: &corev1.ContainerStateWaiting{ Reason: "PodInitializing", }, }, - Name: "A", - ContainerName: "step-A", - ImageID: "image-id-A", + Name: "A", + Container: "step-A", + ImageID: "image-id-A", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, CompletionTime: &metav1.Time{Time: time.Now()}, }, }, @@ -1226,18 +1225,18 @@ func TestMakeTaskRunStatus(t *testing.T) { }, }}, }, - want: v1beta1.TaskRunStatus{ - Status: statusFailure(v1beta1.TaskRunReasonFailed.String(), "Usage of EmptyDir volume \"ws-b6dfk\" exceeds the limit \"10Gi\"."), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + want: v1.TaskRunStatus{ + Status: statusFailure(v1.TaskRunReasonFailed.String(), "Usage of EmptyDir volume \"ws-b6dfk\" exceeds the limit \"10Gi\"."), + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 137, }}, - Name: "A", - ContainerName: "step-A", + Name: "A", + Container: "step-A", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, CompletionTime: &metav1.Time{Time: time.Now()}, }, }, @@ -1256,20 +1255,20 @@ func TestMakeTaskRunStatus(t *testing.T) { } startTime := time.Date(2010, 1, 1, 1, 1, 1, 1, time.UTC) - tr := v1beta1.TaskRun{ + tr := v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "task-run", Namespace: "foo", }, - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ StartTime: &metav1.Time{Time: startTime}, }, }, } logger, _ := logging.NewLogger("", "status") kubeclient := fakek8s.NewSimpleClientset() - got, err := MakeTaskRunStatus(context.Background(), logger, tr, &c.pod, kubeclient, &v1beta1.TaskSpec{}) + got, err := MakeTaskRunStatus(context.Background(), logger, tr, &c.pod, kubeclient, &v1.TaskSpec{}) if err != nil { t.Errorf("MakeTaskRunResult: %s", err) } @@ -1299,8 +1298,8 @@ func TestMakeTaskRunStatusAlpha(t *testing.T) { desc string podStatus corev1.PodStatus pod corev1.Pod - taskSpec v1beta1.TaskSpec - want v1beta1.TaskRunStatus + taskSpec v1.TaskSpec + want v1.TaskRunStatus }{{ desc: "test empty result", podStatus: corev1.PodStatus{ @@ -1314,30 +1313,30 @@ func TestMakeTaskRunStatusAlpha(t *testing.T) { }, }}, }, - taskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + taskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "resultName", - Type: v1beta1.ResultsTypeString, + Type: v1.ResultsTypeString, }, }, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"digest","value":"sha256:1234","resourceName":"source-image"},{"key":"resultName","value":"","type":1}]`, }}, - Name: "bar", - ContainerName: "step-bar", + Name: "bar", + Container: "step-bar", }}, - Sidecars: []v1beta1.SidecarState{}, - TaskRunResults: []v1beta1.TaskRunResult{{ + Sidecars: []v1.SidecarState{}, + Results: []v1.TaskRunResult{{ Name: "resultName", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues(""), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues(""), }}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, @@ -1356,30 +1355,30 @@ func TestMakeTaskRunStatusAlpha(t *testing.T) { }, }}, }, - taskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + taskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "resultName", - Type: v1beta1.ResultsTypeString, + Type: v1.ResultsTypeString, }, }, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"digest","value":"sha256:1234","resourceName":"source-image"},{"key":"resultName","value":"hello","type":1}]`, }}, - Name: "bar", - ContainerName: "step-bar", + Name: "bar", + Container: "step-bar", }}, - Sidecars: []v1beta1.SidecarState{}, - TaskRunResults: []v1beta1.TaskRunResult{{ + Sidecars: []v1.SidecarState{}, + Results: []v1.TaskRunResult{{ Name: "resultName", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("hello"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("hello"), }}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, @@ -1398,30 +1397,30 @@ func TestMakeTaskRunStatusAlpha(t *testing.T) { }, }}, }, - taskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + taskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "resultName", - Type: v1beta1.ResultsTypeArray, + Type: v1.ResultsTypeArray, }, }, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"digest","value":"sha256:1234","resourceName":"source-image"},{"key":"resultName","value":"[\"hello\",\"world\"]","type":1}]`, }}, - Name: "bar", - ContainerName: "step-bar", + Name: "bar", + Container: "step-bar", }}, - Sidecars: []v1beta1.SidecarState{}, - TaskRunResults: []v1beta1.TaskRunResult{{ + Sidecars: []v1.SidecarState{}, + Results: []v1.TaskRunResult{{ Name: "resultName", - Type: v1beta1.ResultsTypeArray, - Value: *v1beta1.NewStructuredValues("hello", "world"), + Type: v1.ResultsTypeArray, + Value: *v1.NewStructuredValues("hello", "world"), }}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, @@ -1440,30 +1439,30 @@ func TestMakeTaskRunStatusAlpha(t *testing.T) { }, }}, }, - taskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + taskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "resultName", - Type: v1beta1.ResultsTypeObject, + Type: v1.ResultsTypeObject, }, }, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"digest","value":"sha256:1234","resourceName":"source-image"},{"key":"resultName","value":"{\"hello\":\"world\"}","type":1}]`, }}, - Name: "bar", - ContainerName: "step-bar", + Name: "bar", + Container: "step-bar", }}, - Sidecars: []v1beta1.SidecarState{}, - TaskRunResults: []v1beta1.TaskRunResult{{ + Sidecars: []v1.SidecarState{}, + Results: []v1.TaskRunResult{{ Name: "resultName", - Type: v1beta1.ResultsTypeObject, - Value: *v1beta1.NewObject(map[string]string{"hello": "world"}), + Type: v1.ResultsTypeObject, + Value: *v1.NewObject(map[string]string{"hello": "world"}), }}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, @@ -1482,38 +1481,38 @@ func TestMakeTaskRunStatusAlpha(t *testing.T) { }, }}, }, - taskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + taskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "resultName", - Type: v1beta1.ResultsTypeString, + Type: v1.ResultsTypeString, }, { Name: "resultName2", - Type: v1beta1.ResultsTypeString, + Type: v1.ResultsTypeString, }, }, }, - want: v1beta1.TaskRunStatus{ + want: v1.TaskRunStatus{ Status: statusSuccess(), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - Steps: []v1beta1.StepState{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ Message: `[{"key":"resultName","value":"{\"hello\":\"world\"}","type":1},{"key":"resultName2","value":"[\"hello\",\"world\"]","type":1}]`, }}, - Name: "bar", - ContainerName: "step-bar", + Name: "bar", + Container: "step-bar", }}, - Sidecars: []v1beta1.SidecarState{}, - TaskRunResults: []v1beta1.TaskRunResult{{ + Sidecars: []v1.SidecarState{}, + Results: []v1.TaskRunResult{{ Name: "resultName", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("{\"hello\":\"world\"}"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("{\"hello\":\"world\"}"), }, { Name: "resultName2", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("[\"hello\",\"world\"]"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("[\"hello\",\"world\"]"), }}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, @@ -1534,13 +1533,13 @@ func TestMakeTaskRunStatusAlpha(t *testing.T) { } startTime := time.Date(2010, 1, 1, 1, 1, 1, 1, time.UTC) - tr := v1beta1.TaskRun{ + tr := v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "task-run", Namespace: "foo", }, - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ StartTime: &metav1.Time{Time: startTime}, }, }, @@ -1621,44 +1620,44 @@ func TestMakeRunStatusJSONError(t *testing.T) { }}, }, } - wantTr := v1beta1.TaskRunStatus{ - Status: statusFailure(v1beta1.TaskRunReasonFailed.String(), "\"step-non-json\" exited with code 1 (image: \"image\"); for logs run: kubectl -n foo logs pod -c step-non-json\n"), - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + wantTr := v1.TaskRunStatus{ + Status: statusFailure(v1.TaskRunReasonFailed.String(), "\"step-non-json\" exited with code 1 (image: \"image\"); for logs run: kubectl -n foo logs pod -c step-non-json\n"), + TaskRunStatusFields: v1.TaskRunStatusFields{ PodName: "pod", - Steps: []v1beta1.StepState{{ + Steps: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 1, Message: "this is a non-json termination message. dont panic!", }}, - Name: "non-json", - ContainerName: "step-non-json", - ImageID: "image", + Name: "non-json", + Container: "step-non-json", + ImageID: "image", }, { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{}}, - Name: "after-non-json", - ContainerName: "step-after-non-json", - ImageID: "image", + Name: "after-non-json", + Container: "step-after-non-json", + ImageID: "image", }, { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{}}, - Name: "this-step-might-panic", - ContainerName: "step-this-step-might-panic", - ImageID: "image", + Name: "this-step-might-panic", + Container: "step-this-step-might-panic", + ImageID: "image", }, { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{}}, - Name: "foo", - ContainerName: "step-foo", - ImageID: "image", + Name: "foo", + Container: "step-foo", + ImageID: "image", }}, - Sidecars: []v1beta1.SidecarState{}, + Sidecars: []v1.SidecarState{}, // We don't actually care about the time, just that it's not nil CompletionTime: &metav1.Time{Time: time.Now()}, }, } - tr := v1beta1.TaskRun{ + tr := v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "task-run", Namespace: "foo", @@ -1667,7 +1666,7 @@ func TestMakeRunStatusJSONError(t *testing.T) { logger, _ := logging.NewLogger("", "status") kubeclient := fakek8s.NewSimpleClientset() - gotTr, err := MakeTaskRunStatus(context.Background(), logger, tr, pod, kubeclient, &v1beta1.TaskSpec{}) + gotTr, err := MakeTaskRunStatus(context.Background(), logger, tr, pod, kubeclient, &v1.TaskSpec{}) if err == nil { t.Error("Expected error, got nil") } @@ -1774,13 +1773,13 @@ func TestSidecarsReady(t *testing.T) { } func TestMarkStatusRunning(t *testing.T) { - trs := v1beta1.TaskRunStatus{} - markStatusRunning(&trs, v1beta1.TaskRunReasonRunning.String(), "Not all Steps in the Task have finished executing") + trs := v1.TaskRunStatus{} + markStatusRunning(&trs, v1.TaskRunReasonRunning.String(), "Not all Steps in the Task have finished executing") expected := &apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionUnknown, - Reason: v1beta1.TaskRunReasonRunning.String(), + Reason: v1.TaskRunReasonRunning.String(), Message: "Not all Steps in the Task have finished executing", } @@ -1790,13 +1789,13 @@ func TestMarkStatusRunning(t *testing.T) { } func TestMarkStatusFailure(t *testing.T) { - trs := v1beta1.TaskRunStatus{} - markStatusFailure(&trs, v1beta1.TaskRunReasonFailed.String(), "failure message") + trs := v1.TaskRunStatus{} + markStatusFailure(&trs, v1.TaskRunReasonFailed.String(), "failure message") expected := &apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, - Reason: v1beta1.TaskRunReasonFailed.String(), + Reason: v1.TaskRunReasonFailed.String(), Message: "failure message", } @@ -1806,13 +1805,13 @@ func TestMarkStatusFailure(t *testing.T) { } func TestMarkStatusSuccess(t *testing.T) { - trs := v1beta1.TaskRunStatus{} + trs := v1.TaskRunStatus{} markStatusSuccess(&trs) expected := &apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, - Reason: v1beta1.TaskRunReasonSuccessful.String(), + Reason: v1.TaskRunReasonSuccessful.String(), Message: "All Steps have completed executing", } @@ -1825,18 +1824,18 @@ func TestIsPodArchived(t *testing.T) { for _, tc := range []struct { name string podName string - retriesStatus []v1beta1.TaskRunStatus + retriesStatus []v1.TaskRunStatus want bool }{{ name: "Pod is not in the empty retriesStatus", podName: "pod", - retriesStatus: []v1beta1.TaskRunStatus{}, + retriesStatus: []v1.TaskRunStatus{}, want: false, }, { name: "Pod is not in the non-empty retriesStatus", podName: "pod-retry1", - retriesStatus: []v1beta1.TaskRunStatus{{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + retriesStatus: []v1.TaskRunStatus{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ PodName: "pod", }, }}, @@ -1844,16 +1843,16 @@ func TestIsPodArchived(t *testing.T) { }, { name: "Pod is in the retriesStatus", podName: "pod", - retriesStatus: []v1beta1.TaskRunStatus{{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + retriesStatus: []v1.TaskRunStatus{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ PodName: "pod", }}, }, want: true, }} { t.Run(tc.name, func(t *testing.T) { - trs := v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + trs := v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ PodName: "pod", RetriesStatus: tc.retriesStatus, }, @@ -1867,19 +1866,19 @@ func TestIsPodArchived(t *testing.T) { } func statusRunning() duckv1.Status { - var trs v1beta1.TaskRunStatus - markStatusRunning(&trs, v1beta1.TaskRunReasonRunning.String(), "Not all Steps in the Task have finished executing") + var trs v1.TaskRunStatus + markStatusRunning(&trs, v1.TaskRunReasonRunning.String(), "Not all Steps in the Task have finished executing") return trs.Status } func statusFailure(reason, message string) duckv1.Status { - var trs v1beta1.TaskRunStatus + var trs v1.TaskRunStatus markStatusFailure(&trs, reason, message) return trs.Status } func statusSuccess() duckv1.Status { - var trs v1beta1.TaskRunStatus + var trs v1.TaskRunStatus markStatusSuccess(&trs) return trs.Status } diff --git a/pkg/reconciler/events/cloudevent/cloud_event_controller.go b/pkg/reconciler/events/cloudevent/cloud_event_controller.go index 8ea38463f53..4d33ca212ab 100644 --- a/pkg/reconciler/events/cloudevent/cloud_event_controller.go +++ b/pkg/reconciler/events/cloudevent/cloud_event_controller.go @@ -90,7 +90,7 @@ func SendCloudEventWithRetries(ctx context.Context, object runtime.Object) error if ceClient == nil { return errors.New("no cloud events client found in the context") } - event, err := eventForObjectWithCondition(o) + event, err := eventForObjectWithCondition(ctx, o) if err != nil { return err } diff --git a/pkg/reconciler/events/cloudevent/cloud_event_controller_test.go b/pkg/reconciler/events/cloudevent/cloud_event_controller_test.go index 7828b14cc40..ddc2366c825 100644 --- a/pkg/reconciler/events/cloudevent/cloud_event_controller_test.go +++ b/pkg/reconciler/events/cloudevent/cloud_event_controller_test.go @@ -22,6 +22,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/tektoncd/pipeline/pkg/apis/config" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/reconciler/events/cloudevent" "github.com/tektoncd/pipeline/pkg/reconciler/events/k8sevent" @@ -55,11 +56,11 @@ func TestSendCloudEventWithRetries(t *testing.T) { clientBehaviour: cloudevent.FakeClientBehaviour{ SendSuccessfully: true, }, - object: &v1beta1.TaskRun{ + object: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ SelfLink: "/taskruns/test1", }, - Status: v1beta1.TaskRunStatus{Status: objectStatus}, + Status: v1.TaskRunStatus{Status: objectStatus}, }, wantCEvents: []string{"Context Attributes,"}, wantEvents: []string{}, @@ -68,11 +69,11 @@ func TestSendCloudEventWithRetries(t *testing.T) { clientBehaviour: cloudevent.FakeClientBehaviour{ SendSuccessfully: true, }, - object: &v1beta1.PipelineRun{ + object: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ SelfLink: "/pipelineruns/test1", }, - Status: v1beta1.PipelineRunStatus{Status: objectStatus}, + Status: v1.PipelineRunStatus{Status: objectStatus}, }, wantCEvents: []string{"Context Attributes,"}, wantEvents: []string{}, @@ -81,8 +82,8 @@ func TestSendCloudEventWithRetries(t *testing.T) { clientBehaviour: cloudevent.FakeClientBehaviour{ SendSuccessfully: false, }, - object: &v1beta1.PipelineRun{ - Status: v1beta1.PipelineRunStatus{Status: objectStatus}, + object: &v1.PipelineRun{ + Status: v1.PipelineRunStatus{Status: objectStatus}, }, wantCEvents: []string{}, wantEvents: []string{"Warning Cloud Event Failure"}, @@ -119,15 +120,15 @@ func TestSendCloudEventWithRetriesInvalid(t *testing.T) { wantEvent string }{{ name: "test-send-cloud-event-invalid-taskrun", - object: &v1beta1.TaskRun{ - Status: v1beta1.TaskRunStatus{}, + object: &v1.TaskRun{ + Status: v1.TaskRunStatus{}, }, wantCEvent: "Context Attributes,", wantEvent: "", }, { name: "test-send-cloud-event-pipelinerun", - object: &v1beta1.PipelineRun{ - Status: v1beta1.PipelineRunStatus{}, + object: &v1.PipelineRun{ + Status: v1.PipelineRunStatus{}, }, wantCEvent: "Context Attributes,", wantEvent: "", @@ -149,7 +150,7 @@ func TestSendCloudEventWithRetriesInvalid(t *testing.T) { func TestSendCloudEventWithRetriesNoClient(t *testing.T) { ctx := setupFakeContext(t, cloudevent.FakeClientBehaviour{}, false, 0) - err := cloudevent.SendCloudEventWithRetries(ctx, &v1beta1.TaskRun{Status: v1beta1.TaskRunStatus{}}) + err := cloudevent.SendCloudEventWithRetries(ctx, &v1.TaskRun{Status: v1.TaskRunStatus{}}) if err == nil { t.Fatalf("Expected an error sending cloud events with no client in the context, got none") } @@ -215,14 +216,14 @@ func TestEmitCloudEventsWhenConditionChange(t *testing.T) { Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionUnknown, - Reason: v1beta1.PipelineRunReasonStarted.String(), + Reason: v1.PipelineRunReasonStarted.String(), }}, } - object := &v1beta1.PipelineRun{ + object := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ SelfLink: "/pipelineruns/test1", }, - Status: v1beta1.PipelineRunStatus{Status: objectStatus}, + Status: v1.PipelineRunStatus{Status: objectStatus}, } after := &apis.Condition{ Type: apis.ConditionSucceeded, diff --git a/pkg/reconciler/events/cloudevent/cloudevent.go b/pkg/reconciler/events/cloudevent/cloudevent.go index 3455782d30c..cfcec6d2562 100644 --- a/pkg/reconciler/events/cloudevent/cloudevent.go +++ b/pkg/reconciler/events/cloudevent/cloudevent.go @@ -17,6 +17,7 @@ limitations under the License. package cloudevent import ( + "context" "errors" "fmt" "strings" @@ -25,6 +26,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/google/uuid" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "knative.dev/pkg/apis" ) @@ -94,22 +96,34 @@ type TektonCloudEventData struct { } // newTektonCloudEventData returns a new instance of TektonCloudEventData -func newTektonCloudEventData(runObject objectWithCondition) TektonCloudEventData { +func newTektonCloudEventData(ctx context.Context, runObject objectWithCondition) (TektonCloudEventData, error) { tektonCloudEventData := TektonCloudEventData{} switch v := runObject.(type) { case *v1beta1.TaskRun: tektonCloudEventData.TaskRun = v case *v1beta1.PipelineRun: tektonCloudEventData.PipelineRun = v + case *v1.TaskRun: + v1beta1TaskRun := &v1beta1.TaskRun{} + if err := v1beta1TaskRun.ConvertFrom(ctx, v); err != nil { + return TektonCloudEventData{}, err + } + tektonCloudEventData.TaskRun = v1beta1TaskRun + case *v1.PipelineRun: + v1beta1PipelineRun := &v1beta1.PipelineRun{} + if err := v1beta1PipelineRun.ConvertFrom(ctx, v); err != nil { + return TektonCloudEventData{}, err + } + tektonCloudEventData.PipelineRun = v1beta1PipelineRun case *v1beta1.CustomRun: tektonCloudEventData.CustomRun = v } - return tektonCloudEventData + return tektonCloudEventData, nil } // eventForObjectWithCondition creates a new event based for a objectWithCondition, // or return an error if not possible. -func eventForObjectWithCondition(runObject objectWithCondition) (*cloudevents.Event, error) { +func eventForObjectWithCondition(ctx context.Context, runObject objectWithCondition) (*cloudevents.Event, error) { event := cloudevents.NewEvent() event.SetID(uuid.New().String()) event.SetSubject(runObject.GetObjectMeta().GetName()) @@ -134,7 +148,12 @@ func eventForObjectWithCondition(runObject objectWithCondition) (*cloudevents.Ev } event.SetType(eventType.String()) - if err := event.SetData(cloudevents.ApplicationJSON, newTektonCloudEventData(runObject)); err != nil { + tektonCloudEventData, err := newTektonCloudEventData(ctx, runObject) + if err != nil { + return nil, err + } + + if err := event.SetData(cloudevents.ApplicationJSON, tektonCloudEventData); err != nil { return nil, err } return &event, nil @@ -167,6 +186,15 @@ func getEventType(runObject objectWithCondition) (*TektonEventType, error) { default: eventType = TaskRunUnknownEventV1 } + case *v1.TaskRun: + switch c.Reason { + case v1.TaskRunReasonStarted.String(): + eventType = TaskRunStartedEventV1 + case v1.TaskRunReasonRunning.String(): + eventType = TaskRunRunningEventV1 + default: + eventType = TaskRunUnknownEventV1 + } case *v1beta1.PipelineRun: switch c.Reason { case v1beta1.PipelineRunReasonStarted.String(): @@ -176,6 +204,15 @@ func getEventType(runObject objectWithCondition) (*TektonEventType, error) { default: eventType = PipelineRunUnknownEventV1 } + case *v1.PipelineRun: + switch c.Reason { + case v1.PipelineRunReasonStarted.String(): + eventType = PipelineRunStartedEventV1 + case v1.PipelineRunReasonRunning.String(): + eventType = PipelineRunRunningEventV1 + default: + eventType = PipelineRunUnknownEventV1 + } case *v1beta1.CustomRun: // CustomRun controller have the freedom of setting reasons as they wish @@ -185,6 +222,10 @@ func getEventType(runObject objectWithCondition) (*TektonEventType, error) { } case c.IsFalse(): switch runObject.(type) { + case *v1.TaskRun: + eventType = TaskRunFailedEventV1 + case *v1.PipelineRun: + eventType = PipelineRunFailedEventV1 case *v1beta1.TaskRun: eventType = TaskRunFailedEventV1 case *v1beta1.PipelineRun: @@ -198,6 +239,10 @@ func getEventType(runObject objectWithCondition) (*TektonEventType, error) { eventType = TaskRunSuccessfulEventV1 case *v1beta1.PipelineRun: eventType = PipelineRunSuccessfulEventV1 + case *v1.TaskRun: + eventType = TaskRunSuccessfulEventV1 + case *v1.PipelineRun: + eventType = PipelineRunSuccessfulEventV1 case *v1beta1.CustomRun: eventType = CustomRunSuccessfulEventV1 } diff --git a/pkg/reconciler/events/event_test.go b/pkg/reconciler/events/event_test.go index 04fa104c03c..6768a028833 100644 --- a/pkg/reconciler/events/event_test.go +++ b/pkg/reconciler/events/event_test.go @@ -20,7 +20,7 @@ import ( "testing" "github.com/tektoncd/pipeline/pkg/apis/config" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" events "github.com/tektoncd/pipeline/pkg/reconciler/events" "github.com/tektoncd/pipeline/pkg/reconciler/events/cloudevent" "github.com/tektoncd/pipeline/pkg/reconciler/events/k8sevent" @@ -38,14 +38,14 @@ func TestEmit(t *testing.T) { Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionUnknown, - Reason: v1beta1.PipelineRunReasonStarted.String(), + Reason: v1.PipelineRunReasonStarted.String(), }}, } - object := &v1beta1.PipelineRun{ + object := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ SelfLink: "/pipelineruns/test1", }, - Status: v1beta1.PipelineRunStatus{Status: objectStatus}, + Status: v1.PipelineRunStatus{Status: objectStatus}, } after := &apis.Condition{ Type: apis.ConditionSucceeded, diff --git a/pkg/reconciler/events/k8sevent/event_test.go b/pkg/reconciler/events/k8sevent/event_test.go index 3612b9bd71e..612c4177a31 100644 --- a/pkg/reconciler/events/k8sevent/event_test.go +++ b/pkg/reconciler/events/k8sevent/event_test.go @@ -22,7 +22,7 @@ import ( "time" "github.com/tektoncd/pipeline/pkg/apis/config" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" k8sevents "github.com/tektoncd/pipeline/pkg/reconciler/events/k8sevent" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -190,14 +190,14 @@ func TestEmitK8sEvents(t *testing.T) { Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionUnknown, - Reason: v1beta1.PipelineRunReasonStarted.String(), + Reason: v1.PipelineRunReasonStarted.String(), }}, } - object := &v1beta1.PipelineRun{ + object := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ SelfLink: "/pipelineruns/test1", }, - Status: v1beta1.PipelineRunStatus{Status: objectStatus}, + Status: v1.PipelineRunStatus{Status: objectStatus}, } after := &apis.Condition{ Type: apis.ConditionSucceeded, diff --git a/pkg/reconciler/pipeline/dag/dag_test.go b/pkg/reconciler/pipeline/dag/dag_test.go index 351c21e4ce3..2eca1a57e1e 100644 --- a/pkg/reconciler/pipeline/dag/dag_test.go +++ b/pkg/reconciler/pipeline/dag/dag_test.go @@ -23,7 +23,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/list" "github.com/tektoncd/pipeline/pkg/reconciler/pipeline/dag" "github.com/tektoncd/pipeline/test/diff" @@ -80,7 +80,7 @@ func TestGetSchedulable(t *testing.T) { if err != nil { t.Fatalf("Didn't expect error when getting next tasks for %v but got %v", tc.finished, err) } - if d := cmp.Diff(tasks, tc.expectedTasks, cmpopts.IgnoreFields(v1beta1.PipelineTask{}, "RunAfter")); d != "" { + if d := cmp.Diff(tasks, tc.expectedTasks, cmpopts.IgnoreFields(v1.PipelineTask{}, "RunAfter")); d != "" { t.Errorf("expected that with %v done, %v would be ready to schedule but was different: %s", tc.finished, tc.expectedTasks, diff.PrintWantGot(d)) } }) @@ -125,17 +125,17 @@ func TestGetSchedulable_Invalid(t *testing.T) { } func TestBuild_Parallel(t *testing.T) { - a := v1beta1.PipelineTask{Name: "a"} - b := v1beta1.PipelineTask{Name: "b"} - c := v1beta1.PipelineTask{Name: "c"} + a := v1.PipelineTask{Name: "a"} + b := v1.PipelineTask{Name: "b"} + c := v1.PipelineTask{Name: "c"} // This test make sure we can create a Pipeline with no links between any Tasks // (all tasks run in parallel) // a b c - p := &v1beta1.Pipeline{ + p := &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{Name: "pipeline"}, - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{a, b, c}, + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{a, b, c}, }, } expectedDAG := &dag.Graph{ @@ -145,7 +145,7 @@ func TestBuild_Parallel(t *testing.T) { "c": {Key: "c"}, }, } - g, err := dag.Build(v1beta1.PipelineTaskList(p.Spec.Tasks), v1beta1.PipelineTaskList(p.Spec.Tasks).Deps()) + g, err := dag.Build(v1.PipelineTaskList(p.Spec.Tasks), v1.PipelineTaskList(p.Spec.Tasks).Deps()) if err != nil { t.Fatalf("didn't expect error creating valid Pipeline %v but got %v", p, err) } @@ -153,41 +153,41 @@ func TestBuild_Parallel(t *testing.T) { } func TestBuild_JoinMultipleRoots(t *testing.T) { - a := v1beta1.PipelineTask{ + a := v1.PipelineTask{ Name: "a", - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "result", }}, }}, } - b := v1beta1.PipelineTask{Name: "b"} - c := v1beta1.PipelineTask{ + b := v1.PipelineTask{Name: "b"} + c := v1.PipelineTask{ Name: "c", - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "result", }}, }}, } - xDependsOnA := v1beta1.PipelineTask{ + xDependsOnA := v1.PipelineTask{ Name: "x", - Params: v1beta1.Params{ + Params: []v1.Param{ { - Value: *v1beta1.NewStructuredValues("$(tasks.a.results.result)"), + Value: *v1.NewStructuredValues("$(tasks.a.results.result)"), }, }, } - yDependsOnARunsAfterB := v1beta1.PipelineTask{ + yDependsOnARunsAfterB := v1.PipelineTask{ Name: "y", RunAfter: []string{"b"}, - Params: v1beta1.Params{ + Params: []v1.Param{ { - Value: *v1beta1.NewStructuredValues("$(tasks.a.results.result)"), + Value: *v1.NewStructuredValues("$(tasks.a.results.result)"), }, }, } - zRunsAfterx := v1beta1.PipelineTask{ + zRunsAfterx := v1.PipelineTask{ Name: "z", RunAfter: []string{"x"}, } @@ -221,13 +221,13 @@ func TestBuild_JoinMultipleRoots(t *testing.T) { "y": nodeY, "z": nodeZ}, } - p := &v1beta1.Pipeline{ + p := &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{Name: "pipeline"}, - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{a, xDependsOnA, yDependsOnARunsAfterB, zRunsAfterx, b, c}, + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{a, xDependsOnA, yDependsOnARunsAfterB, zRunsAfterx, b, c}, }, } - g, err := dag.Build(v1beta1.PipelineTaskList(p.Spec.Tasks), v1beta1.PipelineTaskList(p.Spec.Tasks).Deps()) + g, err := dag.Build(v1.PipelineTaskList(p.Spec.Tasks), v1.PipelineTaskList(p.Spec.Tasks).Deps()) if err != nil { t.Fatalf("didn't expect error creating valid Pipeline %v but got %v", p, err) } @@ -235,45 +235,45 @@ func TestBuild_JoinMultipleRoots(t *testing.T) { } func TestBuild_FanInFanOut(t *testing.T) { - a := v1beta1.PipelineTask{ + a := v1.PipelineTask{ Name: "a", - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "result", }}, }}, } - dDependsOnA := v1beta1.PipelineTask{ + dDependsOnA := v1.PipelineTask{ Name: "d", - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "resultFromD", }}, }}, - Params: v1beta1.Params{{ - Value: *v1beta1.NewStructuredValues("$(tasks.a.results.result)"), + Params: []v1.Param{{ + Value: *v1.NewStructuredValues("$(tasks.a.results.result)"), }}, } - eDependsOnA := v1beta1.PipelineTask{ + eDependsOnA := v1.PipelineTask{ Name: "e", - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "resultFromE", }}, }}, - Params: v1beta1.Params{{ - Value: *v1beta1.NewStructuredValues("$(tasks.a.results.result)"), + Params: []v1.Param{{ + Value: *v1.NewStructuredValues("$(tasks.a.results.result)"), }}, } - fDependsOnDAndE := v1beta1.PipelineTask{ + fDependsOnDAndE := v1.PipelineTask{ Name: "f", - Params: v1beta1.Params{{ - Value: *v1beta1.NewStructuredValues("$(tasks.d.results.resultFromD)"), + Params: []v1.Param{{ + Value: *v1.NewStructuredValues("$(tasks.d.results.resultFromD)"), }, { - Value: *v1beta1.NewStructuredValues("$(tasks.e.results.resultFromE)"), + Value: *v1.NewStructuredValues("$(tasks.e.results.resultFromE)"), }}, } - gRunsAfterF := v1beta1.PipelineTask{ + gRunsAfterF := v1.PipelineTask{ Name: "g", RunAfter: []string{"f"}, } @@ -311,13 +311,13 @@ func TestBuild_FanInFanOut(t *testing.T) { "g": nodeG, }, } - p := &v1beta1.Pipeline{ + p := &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{Name: "pipeline"}, - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{a, dDependsOnA, eDependsOnA, fDependsOnDAndE, gRunsAfterF}, + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{a, dDependsOnA, eDependsOnA, fDependsOnDAndE, gRunsAfterF}, }, } - g, err := dag.Build(v1beta1.PipelineTaskList(p.Spec.Tasks), v1beta1.PipelineTaskList(p.Spec.Tasks).Deps()) + g, err := dag.Build(v1.PipelineTaskList(p.Spec.Tasks), v1.PipelineTaskList(p.Spec.Tasks).Deps()) if err != nil { t.Fatalf("didn't expect error creating valid Pipeline %v but got %v", p, err) } @@ -325,39 +325,39 @@ func TestBuild_FanInFanOut(t *testing.T) { } func TestBuild_TaskParamsFromTaskResults(t *testing.T) { - a := v1beta1.PipelineTask{Name: "a"} - b := v1beta1.PipelineTask{Name: "b"} - c := v1beta1.PipelineTask{Name: "c"} - d := v1beta1.PipelineTask{Name: "d"} - e := v1beta1.PipelineTask{Name: "e"} - f := v1beta1.PipelineTask{Name: "f"} - xDependsOnA := v1beta1.PipelineTask{ + a := v1.PipelineTask{Name: "a"} + b := v1.PipelineTask{Name: "b"} + c := v1.PipelineTask{Name: "c"} + d := v1.PipelineTask{Name: "d"} + e := v1.PipelineTask{Name: "e"} + f := v1.PipelineTask{Name: "f"} + xDependsOnA := v1.PipelineTask{ Name: "x", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "paramX", - Value: *v1beta1.NewStructuredValues("$(tasks.a.results.resultA)"), + Value: *v1.NewStructuredValues("$(tasks.a.results.resultA)"), }}, } - yDependsOnBRunsAfterC := v1beta1.PipelineTask{ + yDependsOnBRunsAfterC := v1.PipelineTask{ Name: "y", RunAfter: []string{"c"}, - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "paramB", - Value: *v1beta1.NewStructuredValues("$(tasks.b.results.resultB)"), + Value: *v1.NewStructuredValues("$(tasks.b.results.resultB)"), }}, } - zDependsOnDAndE := v1beta1.PipelineTask{ + zDependsOnDAndE := v1.PipelineTask{ Name: "z", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "paramZ", - Value: *v1beta1.NewStructuredValues("$(tasks.d.results.resultD) $(tasks.e.results.resultE)"), + Value: *v1.NewStructuredValues("$(tasks.d.results.resultD) $(tasks.e.results.resultE)"), }}, } - wDependsOnF := v1beta1.PipelineTask{ + wDependsOnF := v1.PipelineTask{ Name: "w", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "paramw", - Value: *v1beta1.NewStructuredValues("$(tasks.f.results.resultF[*])"), + Value: *v1.NewStructuredValues("$(tasks.f.results.resultF[*])"), }}, } @@ -400,13 +400,13 @@ func TestBuild_TaskParamsFromTaskResults(t *testing.T) { "w": nodeW, }, } - p := &v1beta1.Pipeline{ + p := &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{Name: "pipeline"}, - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{a, b, c, d, e, f, xDependsOnA, yDependsOnBRunsAfterC, zDependsOnDAndE, wDependsOnF}, + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{a, b, c, d, e, f, xDependsOnA, yDependsOnBRunsAfterC, zDependsOnDAndE, wDependsOnF}, }, } - tasks := v1beta1.PipelineTaskList(p.Spec.Tasks) + tasks := v1.PipelineTaskList(p.Spec.Tasks) g, err := dag.Build(tasks, tasks.Deps()) if err != nil { t.Fatalf("didn't expect error creating valid Pipeline %v but got %v", p, err) @@ -415,148 +415,148 @@ func TestBuild_TaskParamsFromTaskResults(t *testing.T) { } func TestBuild_InvalidDAG(t *testing.T) { - a := v1beta1.PipelineTask{ + a := v1.PipelineTask{ Name: "a", - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "result", }}, }}, } - xDependsOnA := v1beta1.PipelineTask{ + xDependsOnA := v1.PipelineTask{ Name: "x", - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "resultX", }}, }}, - Params: v1beta1.Params{{ - Value: *v1beta1.NewStructuredValues("$(tasks.a.results.result)"), + Params: []v1.Param{{ + Value: *v1.NewStructuredValues("$(tasks.a.results.result)"), }}, } - zRunsAfterx := v1beta1.PipelineTask{ + zDependsOnX := v1.PipelineTask{ Name: "z", - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "resultZ", }}, }}, - Params: v1beta1.Params{{ - Value: *v1beta1.NewStructuredValues("$(tasks.x.results.resultX)"), + Params: []v1.Param{{ + Value: *v1.NewStructuredValues("$(tasks.x.results.resultX)"), }}, } - aDependsOnZ := v1beta1.PipelineTask{ + aDependsOnZ := v1.PipelineTask{ Name: "a", - Params: v1beta1.Params{{ - Value: *v1beta1.NewStructuredValues("$(tasks.z.results.resultZ)"), + Params: []v1.Param{{ + Value: *v1.NewStructuredValues("$(tasks.z.results.resultZ)"), }}, } - xAfterA := v1beta1.PipelineTask{ + xAfterA := v1.PipelineTask{ Name: "x", RunAfter: []string{"a"}, } - zAfterX := v1beta1.PipelineTask{ + zAfterX := v1.PipelineTask{ Name: "z", RunAfter: []string{"x"}, } - aAfterZ := v1beta1.PipelineTask{ + aAfterZ := v1.PipelineTask{ Name: "a", RunAfter: []string{"z"}, } - selfLinkResult := v1beta1.PipelineTask{ + selfLinkResult := v1.PipelineTask{ Name: "a", - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "result", }}, }}, - Params: v1beta1.Params{{ - Value: *v1beta1.NewStructuredValues("$(tasks.a.results.result)"), + Params: []v1.Param{{ + Value: *v1.NewStructuredValues("$(tasks.a.results.result)"), }}, } - invalidTaskResult := v1beta1.PipelineTask{ + invalidTaskResult := v1.PipelineTask{ Name: "a", - Params: v1beta1.Params{{ - Value: *v1beta1.NewStructuredValues("$(tasks.invalid.results.none)"), + Params: []v1.Param{{ + Value: *v1.NewStructuredValues("$(tasks.invalid.results.none)"), }}, } - selfLinkAfter := v1beta1.PipelineTask{ + selfLinkAfter := v1.PipelineTask{ Name: "a", RunAfter: []string{"a"}, } - invalidTaskAfter := v1beta1.PipelineTask{ + invalidTaskAfter := v1.PipelineTask{ Name: "a", RunAfter: []string{"none"}, } - aRunsAfterE := v1beta1.PipelineTask{ + aRunsAfterE := v1.PipelineTask{ Name: "a", RunAfter: []string{"e"}, - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "result", }}, }}, } - bDependsOnA := v1beta1.PipelineTask{ + bDependsOnA := v1.PipelineTask{ Name: "b", - Params: v1beta1.Params{{ - Value: *v1beta1.NewStructuredValues("$(tasks.a.results.result)"), + Params: []v1.Param{{ + Value: *v1.NewStructuredValues("$(tasks.a.results.result)"), }}, - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "resultb", }}, }}, } - cDependsOnA := v1beta1.PipelineTask{ + cRunsAfterA := v1.PipelineTask{ Name: "c", - Params: v1beta1.Params{{ - Value: *v1beta1.NewStructuredValues("$(tasks.a.results.result)"), + Params: []v1.Param{{ + Value: *v1.NewStructuredValues("$(tasks.a.results.result)"), }}, - TaskSpec: &v1beta1.EmbeddedTask{TaskSpec: v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.EmbeddedTask{TaskSpec: v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "resultc", }}, }}, } - dDependsOnBAndC := v1beta1.PipelineTask{ + dDependsOnBAndC := v1.PipelineTask{ Name: "d", - Params: v1beta1.Params{{ - Value: *v1beta1.NewStructuredValues("$(tasks.b.results.resultb)"), + Params: []v1.Param{{ + Value: *v1.NewStructuredValues("$(tasks.b.results.resultb)"), }, { - Value: *v1beta1.NewStructuredValues("$(tasks.c.results.resultc)"), + Value: *v1.NewStructuredValues("$(tasks.c.results.resultc)"), }}, } - eRunsAfterD := v1beta1.PipelineTask{ + eRunsAfterD := v1.PipelineTask{ Name: "e", RunAfter: []string{"d"}, } - fRunsAfterD := v1beta1.PipelineTask{ + fRunsAfterD := v1.PipelineTask{ Name: "f", RunAfter: []string{"d"}, } - gRunAfterF := v1beta1.PipelineTask{ + gDependsOnF := v1.PipelineTask{ Name: "g", RunAfter: []string{"f"}, } tcs := []struct { name string - spec v1beta1.PipelineSpec + spec v1.PipelineSpec err string }{{ // a // | // a ("a" uses result of "a" as params) name: "self-link-result", - spec: v1beta1.PipelineSpec{Tasks: []v1beta1.PipelineTask{selfLinkResult}}, + spec: v1.PipelineSpec{Tasks: []v1.PipelineTask{selfLinkResult}}, err: "cycle detected", }, { // a // | // a ("a" runAfter "a") name: "self-link-after", - spec: v1beta1.PipelineSpec{Tasks: []v1beta1.PipelineTask{selfLinkAfter}}, + spec: v1.PipelineSpec{Tasks: []v1.PipelineTask{selfLinkAfter}}, err: "cycle detected", }, { // a (also "a" depends on resource from "z") @@ -565,7 +565,7 @@ func TestBuild_InvalidDAG(t *testing.T) { // | // z ("z" depends on resource from "x") name: "cycle-from", - spec: v1beta1.PipelineSpec{Tasks: []v1beta1.PipelineTask{xDependsOnA, zRunsAfterx, aDependsOnZ}}, + spec: v1.PipelineSpec{Tasks: []v1.PipelineTask{xDependsOnA, zDependsOnX, aDependsOnZ}}, err: "cycle detected", }, { // a (also "a" runAfter "z") @@ -574,7 +574,7 @@ func TestBuild_InvalidDAG(t *testing.T) { // | // z ("z" runAfter "x") name: "cycle-runAfter", - spec: v1beta1.PipelineSpec{Tasks: []v1beta1.PipelineTask{xAfterA, zAfterX, aAfterZ}}, + spec: v1.PipelineSpec{Tasks: []v1.PipelineTask{xAfterA, zAfterX, aAfterZ}}, err: "cycle detected", }, { // a (also "a" depends on resource from "z") @@ -583,7 +583,7 @@ func TestBuild_InvalidDAG(t *testing.T) { // | // z ("z" runAfter "x") name: "cycle-both", - spec: v1beta1.PipelineSpec{Tasks: []v1beta1.PipelineTask{xDependsOnA, zAfterX, aDependsOnZ}}, + spec: v1.PipelineSpec{Tasks: []v1.PipelineTask{xDependsOnA, zAfterX, aDependsOnZ}}, err: "cycle detected", }, { // This test make sure we detect a cyclic branch in a DAG with multiple branches. @@ -598,29 +598,29 @@ func TestBuild_InvalidDAG(t *testing.T) { // | // g name: "multiple-branches-with-one-cyclic-branch", - spec: v1beta1.PipelineSpec{Tasks: []v1beta1.PipelineTask{aRunsAfterE, bDependsOnA, cDependsOnA, dDependsOnBAndC, eRunsAfterD, fRunsAfterD, gRunAfterF}}, + spec: v1.PipelineSpec{Tasks: []v1.PipelineTask{aRunsAfterE, bDependsOnA, cRunsAfterA, dDependsOnBAndC, eRunsAfterD, fRunsAfterD, gDependsOnF}}, err: "cycle detected", }, { name: "duplicate-tasks", - spec: v1beta1.PipelineSpec{Tasks: []v1beta1.PipelineTask{a, a}}, + spec: v1.PipelineSpec{Tasks: []v1.PipelineTask{a, a}}, err: "duplicate pipeline task", }, { name: "invalid-task-result", - spec: v1beta1.PipelineSpec{Tasks: []v1beta1.PipelineTask{invalidTaskResult}}, + spec: v1.PipelineSpec{Tasks: []v1.PipelineTask{invalidTaskResult}}, err: "wasn't present in Pipeline", }, { name: "invalid-task-name-after", - spec: v1beta1.PipelineSpec{Tasks: []v1beta1.PipelineTask{invalidTaskAfter}}, + spec: v1.PipelineSpec{Tasks: []v1.PipelineTask{invalidTaskAfter}}, err: "wasn't present in Pipeline", }, } for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - p := &v1beta1.Pipeline{ + p := &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{Name: tc.name}, Spec: tc.spec, } - _, err := dag.Build(v1beta1.PipelineTaskList(p.Spec.Tasks), v1beta1.PipelineTaskList(p.Spec.Tasks).Deps()) + _, err := dag.Build(v1.PipelineTaskList(p.Spec.Tasks), v1.PipelineTaskList(p.Spec.Tasks).Deps()) if err == nil || !strings.Contains(err.Error(), tc.err) { t.Errorf("expected to see an error for invalid DAG in pipeline %v but had none", tc.spec) } @@ -629,7 +629,7 @@ func TestBuild_InvalidDAG(t *testing.T) { } func TestBuildGraphWithHundredsOfTasks_Success(t *testing.T) { - var tasks []v1beta1.PipelineTask + var tasks []v1.PipelineTask // separate branches with sequential tasks and redundant links (each task explicitly depends on all predecessors) // b00 - 000 - 001 - ... - 100 // b01 - 000 - 001 - ... - 100 @@ -639,18 +639,18 @@ func TestBuildGraphWithHundredsOfTasks_Success(t *testing.T) { for branchIdx := 0; branchIdx < nBranches; branchIdx++ { var taskDeps []string firstTaskName := fmt.Sprintf("b%02d", branchIdx) - firstTask := v1beta1.PipelineTask{ + firstTask := v1.PipelineTask{ Name: firstTaskName, - TaskRef: &v1beta1.TaskRef{Name: firstTaskName + "-task"}, + TaskRef: &v1.TaskRef{Name: firstTaskName + "-task"}, RunAfter: taskDeps, } tasks = append(tasks, firstTask) taskDeps = append(taskDeps, firstTaskName) for taskIdx := 0; taskIdx < nTasks; taskIdx++ { taskName := fmt.Sprintf("%s-%03d", firstTaskName, taskIdx) - task := v1beta1.PipelineTask{ + task := v1.PipelineTask{ Name: taskName, - TaskRef: &v1beta1.TaskRef{Name: taskName + "-task"}, + TaskRef: &v1.TaskRef{Name: taskName + "-task"}, RunAfter: taskDeps, } tasks = append(tasks, task) @@ -658,14 +658,14 @@ func TestBuildGraphWithHundredsOfTasks_Success(t *testing.T) { } } - _, err := dag.Build(v1beta1.PipelineTaskList(tasks), v1beta1.PipelineTaskList(tasks).Deps()) + _, err := dag.Build(v1.PipelineTaskList(tasks), v1.PipelineTaskList(tasks).Deps()) if err != nil { t.Error(err) } } func TestBuildGraphWithHundredsOfTasks_InvalidDAG(t *testing.T) { - var tasks []v1beta1.PipelineTask + var tasks []v1.PipelineTask // branches with circular interdependencies nBranches, nTasks := 5, 100 for branchIdx := 0; branchIdx < nBranches; branchIdx++ { @@ -675,18 +675,18 @@ func TestBuildGraphWithHundredsOfTasks_InvalidDAG(t *testing.T) { } taskDeps := []string{fmt.Sprintf("b%02d", depBranchIdx)} firstTaskName := fmt.Sprintf("b%02d", branchIdx) - firstTask := v1beta1.PipelineTask{ + firstTask := v1.PipelineTask{ Name: firstTaskName, - TaskRef: &v1beta1.TaskRef{Name: firstTaskName + "-task"}, + TaskRef: &v1.TaskRef{Name: firstTaskName + "-task"}, RunAfter: taskDeps, } tasks = append(tasks, firstTask) taskDeps = append(taskDeps, firstTaskName) for taskIdx := 0; taskIdx < nTasks; taskIdx++ { taskName := fmt.Sprintf("%s-%03d", firstTaskName, taskIdx) - task := v1beta1.PipelineTask{ + task := v1.PipelineTask{ Name: taskName, - TaskRef: &v1beta1.TaskRef{Name: taskName + "-task"}, + TaskRef: &v1.TaskRef{Name: taskName + "-task"}, RunAfter: taskDeps, } tasks = append(tasks, task) @@ -694,7 +694,7 @@ func TestBuildGraphWithHundredsOfTasks_InvalidDAG(t *testing.T) { } } - _, err := dag.Build(v1beta1.PipelineTaskList(tasks), v1beta1.PipelineTaskList(tasks).Deps()) + _, err := dag.Build(v1.PipelineTaskList(tasks), v1.PipelineTaskList(tasks).Deps()) if err == nil { t.Errorf("Pipeline.Validate() did not return error for invalid pipeline with cycles") } @@ -709,15 +709,15 @@ func testGraph(t *testing.T) *dag.Graph { // \ / z // w t.Helper() - tasks := []v1beta1.PipelineTask{{ + tasks := []v1.PipelineTask{{ Name: "a", }, { Name: "b", }, { Name: "w", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.y.results.bar)"), + Value: *v1.NewStructuredValues("$(tasks.y.results.bar)"), }}, RunAfter: []string{"b"}, }, { @@ -730,7 +730,7 @@ func testGraph(t *testing.T) *dag.Graph { Name: "z", RunAfter: []string{"x"}, }} - g, err := dag.Build(v1beta1.PipelineTaskList(tasks), v1beta1.PipelineTaskList(tasks).Deps()) + g, err := dag.Build(v1.PipelineTaskList(tasks), v1.PipelineTaskList(tasks).Deps()) if err != nil { t.Fatal(err) } diff --git a/pkg/reconciler/pipelinerun/affinity_assistant.go b/pkg/reconciler/pipelinerun/affinity_assistant.go index 9e2a51f49b5..b007176d526 100644 --- a/pkg/reconciler/pipelinerun/affinity_assistant.go +++ b/pkg/reconciler/pipelinerun/affinity_assistant.go @@ -24,7 +24,7 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" "github.com/tektoncd/pipeline/pkg/apis/pipeline/pod" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/reconciler/volumeclaim" "github.com/tektoncd/pipeline/pkg/workspace" appsv1 "k8s.io/api/apps/v1" @@ -49,7 +49,7 @@ const ( // createOrUpdateAffinityAssistants creates an Affinity Assistant StatefulSet for every workspace in the PipelineRun that // use a PersistentVolumeClaim volume. This is done to achieve Node Affinity for all TaskRuns that // share the workspace volume and make it possible for the tasks to execute parallel while sharing volume. -func (c *Reconciler) createOrUpdateAffinityAssistants(ctx context.Context, wb []v1beta1.WorkspaceBinding, pr *v1beta1.PipelineRun, namespace string) error { +func (c *Reconciler) createOrUpdateAffinityAssistants(ctx context.Context, wb []v1.WorkspaceBinding, pr *v1.PipelineRun, namespace string) error { logger := logging.FromContext(ctx) cfg := config.FromContextOrDefaults(ctx) @@ -125,7 +125,7 @@ func (c *Reconciler) createOrUpdateAffinityAssistants(ctx context.Context, wb [] return errorutils.NewAggregate(errs) } -func (c *Reconciler) cleanupAffinityAssistants(ctx context.Context, pr *v1beta1.PipelineRun) error { +func (c *Reconciler) cleanupAffinityAssistants(ctx context.Context, pr *v1.PipelineRun) error { // omit cleanup if the feature is disabled if c.isAffinityAssistantDisabled(ctx) { return nil @@ -154,7 +154,7 @@ func (c *Reconciler) cleanupAffinityAssistants(ctx context.Context, pr *v1beta1. // getPersistentVolumeClaimNameWithAffinityAssistant returns the PersistentVolumeClaim name that is // created by the Affinity Assistant StatefulSet VolumeClaimTemplate when Affinity Assistant is enabled. // The PVCs created by StatefulSet VolumeClaimTemplates follow the format `--0` -func getPersistentVolumeClaimNameWithAffinityAssistant(pipelineWorkspaceName, prName string, wb v1beta1.WorkspaceBinding, owner metav1.OwnerReference) string { +func getPersistentVolumeClaimNameWithAffinityAssistant(pipelineWorkspaceName, prName string, wb v1.WorkspaceBinding, owner metav1.OwnerReference) string { pvcName := volumeclaim.GetPVCNameWithoutAffinityAssistant(wb.VolumeClaimTemplate.Name, wb, owner) affinityAssistantName := getAffinityAssistantName(pipelineWorkspaceName, prName) return fmt.Sprintf("%s-%s-0", pvcName, affinityAssistantName) @@ -166,7 +166,7 @@ func getAffinityAssistantName(pipelineWorkspaceName string, pipelineRunName stri return fmt.Sprintf("%s-%s", workspace.ComponentNameAffinityAssistant, hashString[:10]) } -func getStatefulSetLabels(pr *v1beta1.PipelineRun, affinityAssistantName string) map[string]string { +func getStatefulSetLabels(pr *v1.PipelineRun, affinityAssistantName string) map[string]string { // Propagate labels from PipelineRun to StatefulSet. labels := make(map[string]string, len(pr.ObjectMeta.Labels)+1) for key, val := range pr.ObjectMeta.Labels { @@ -184,14 +184,14 @@ func getStatefulSetLabels(pr *v1beta1.PipelineRun, affinityAssistantName string) // affinityAssistantStatefulSet returns an Affinity Assistant as a StatefulSet with the given AffinityAssistantTemplate applied to the StatefulSet PodTemplateSpec. // The VolumeClaimTemplates and Volume of StatefulSet reference the PipelineRun WorkspaceBinding VolumeClaimTempalte and the PVCs respectively. // The PVs created by the StatefulSet are scheduled to the same availability zone which avoids PV scheduling conflict. -func affinityAssistantStatefulSet(name string, pr *v1beta1.PipelineRun, claimTemplates []corev1.PersistentVolumeClaim, claims []corev1.PersistentVolumeClaimVolumeSource, affinityAssistantImage string, defaultAATpl *pod.AffinityAssistantTemplate) *appsv1.StatefulSet { +func affinityAssistantStatefulSet(name string, pr *v1.PipelineRun, claimTemplates []corev1.PersistentVolumeClaim, claims []corev1.PersistentVolumeClaimVolumeSource, affinityAssistantImage string, defaultAATpl *pod.AffinityAssistantTemplate) *appsv1.StatefulSet { // We want a singleton pod replicas := int32(1) tpl := &pod.AffinityAssistantTemplate{} // merge pod template from spec and default if any of them are defined - if pr.Spec.PodTemplate != nil || defaultAATpl != nil { - tpl = pod.MergeAAPodTemplateWithDefault(pr.Spec.PodTemplate.ToAffinityAssistantTemplate(), defaultAATpl) + if pr.Spec.TaskRunTemplate.PodTemplate != nil || defaultAATpl != nil { + tpl = pod.MergeAAPodTemplateWithDefault(pr.Spec.TaskRunTemplate.PodTemplate.ToAffinityAssistantTemplate(), defaultAATpl) } var mounts []corev1.VolumeMount @@ -284,7 +284,7 @@ func (c *Reconciler) isAffinityAssistantDisabled(ctx context.Context) bool { } // getAssistantAffinityMergedWithPodTemplateAffinity return the affinity that merged with PipelineRun PodTemplate affinity. -func getAssistantAffinityMergedWithPodTemplateAffinity(pr *v1beta1.PipelineRun) *corev1.Affinity { +func getAssistantAffinityMergedWithPodTemplateAffinity(pr *v1.PipelineRun) *corev1.Affinity { // use podAntiAffinity to repel other affinity assistants repelOtherAffinityAssistantsPodAffinityTerm := corev1.WeightedPodAffinityTerm{ Weight: 100, @@ -299,8 +299,8 @@ func getAssistantAffinityMergedWithPodTemplateAffinity(pr *v1beta1.PipelineRun) } affinityAssistantsAffinity := &corev1.Affinity{} - if pr.Spec.PodTemplate != nil && pr.Spec.PodTemplate.Affinity != nil { - affinityAssistantsAffinity = pr.Spec.PodTemplate.Affinity + if pr.Spec.TaskRunTemplate.PodTemplate != nil && pr.Spec.TaskRunTemplate.PodTemplate.Affinity != nil { + affinityAssistantsAffinity = pr.Spec.TaskRunTemplate.PodTemplate.Affinity } if affinityAssistantsAffinity.PodAntiAffinity == nil { affinityAssistantsAffinity.PodAntiAffinity = &corev1.PodAntiAffinity{} diff --git a/pkg/reconciler/pipelinerun/affinity_assistant_test.go b/pkg/reconciler/pipelinerun/affinity_assistant_test.go index 0beb3c2ab4b..839c442b177 100644 --- a/pkg/reconciler/pipelinerun/affinity_assistant_test.go +++ b/pkg/reconciler/pipelinerun/affinity_assistant_test.go @@ -26,12 +26,11 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" "github.com/tektoncd/pipeline/pkg/apis/pipeline/pod" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/workspace" "github.com/tektoncd/pipeline/test/diff" "github.com/tektoncd/pipeline/test/parse" appsv1 "k8s.io/api/apps/v1" - v1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -48,13 +47,13 @@ import ( var workspaceName = "test-workspace" -var testPipelineRun = &v1beta1.PipelineRun{ +var testPipelineRun = &v1.PipelineRun{ TypeMeta: metav1.TypeMeta{Kind: "PipelineRun"}, ObjectMeta: metav1.ObjectMeta{ Name: "test-pipelinerun", }, - Spec: v1beta1.PipelineRunSpec{ - Workspaces: []v1beta1.WorkspaceBinding{{ + Spec: v1.PipelineRunSpec{ + Workspaces: []v1.WorkspaceBinding{{ Name: workspaceName, PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "myclaim", @@ -68,14 +67,14 @@ var testPipelineRun = &v1beta1.PipelineRun{ func TestCreateAndDeleteOfAffinityAssistant(t *testing.T) { tests := []struct { name string - pr *v1beta1.PipelineRun + pr *v1.PipelineRun expectStatefulSetSpec []*appsv1.StatefulSetSpec }{{ name: "PersistentVolumeClaim Workspace type", - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-with-pvc"}, - Spec: v1beta1.PipelineRunSpec{ - Workspaces: []v1beta1.WorkspaceBinding{{ + Spec: v1.PipelineRunSpec{ + Workspaces: []v1.WorkspaceBinding{{ Name: "PersistentVolumeClaim Workspace", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "myclaim", @@ -97,10 +96,10 @@ func TestCreateAndDeleteOfAffinityAssistant(t *testing.T) { }}, }, { name: "VolumeClaimTemplate Workspace type", - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-with-volumeClaimTemplate"}, - Spec: v1beta1.PipelineRunSpec{ - Workspaces: []v1beta1.WorkspaceBinding{{ + Spec: v1.PipelineRunSpec{ + Workspaces: []v1.WorkspaceBinding{{ Name: "VolumeClaimTemplate Workspace", VolumeClaimTemplate: &corev1.PersistentVolumeClaim{}, }}, @@ -113,10 +112,10 @@ func TestCreateAndDeleteOfAffinityAssistant(t *testing.T) { }}, }, { name: "VolumeClaimTemplate and PersistentVolumeClaim Workspaces", - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-with-volumeClaimTemplate-and-pvc"}, - Spec: v1beta1.PipelineRunSpec{ - Workspaces: []v1beta1.WorkspaceBinding{{ + Spec: v1.PipelineRunSpec{ + Workspaces: []v1.WorkspaceBinding{{ Name: "VolumeClaimTemplate Workspace", VolumeClaimTemplate: &corev1.PersistentVolumeClaim{}, }, { @@ -144,10 +143,10 @@ func TestCreateAndDeleteOfAffinityAssistant(t *testing.T) { }}, }, { name: "other Workspace type", - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-with-emptyDir"}, - Spec: v1beta1.PipelineRunSpec{ - Workspaces: []v1beta1.WorkspaceBinding{{ + Spec: v1.PipelineRunSpec{ + Workspaces: []v1.WorkspaceBinding{{ Name: "EmptyDir Workspace", EmptyDir: &corev1.EmptyDirVolumeSource{}, }}, @@ -217,7 +216,7 @@ func TestCreateAndDeleteOfAffinityAssistant(t *testing.T) { func TestCreateOrUpdateAffinityAssistantWhenNodeIsCordoned(t *testing.T) { expectedAffinityAssistantName := getAffinityAssistantName(workspaceName, testPipelineRun.Name) - aa := []*v1.StatefulSet{{ + aa := []*appsv1.StatefulSet{{ TypeMeta: metav1.TypeMeta{ Kind: "StatefulSet", APIVersion: "apps/v1", @@ -226,7 +225,7 @@ func TestCreateOrUpdateAffinityAssistantWhenNodeIsCordoned(t *testing.T) { Name: expectedAffinityAssistantName, Labels: getStatefulSetLabels(testPipelineRun, expectedAffinityAssistantName), }, - Status: v1.StatefulSetStatus{ + Status: appsv1.StatefulSetStatus{ ReadyReplicas: 1, }, }} @@ -335,25 +334,27 @@ func TestCreateOrUpdateAffinityAssistantWhenNodeIsCordoned(t *testing.T) { } func TestPipelineRunPodTemplatesArePropagatedToAffinityAssistant(t *testing.T) { - prWithCustomPodTemplate := &v1beta1.PipelineRun{ + prWithCustomPodTemplate := &v1.PipelineRun{ TypeMeta: metav1.TypeMeta{Kind: "PipelineRun"}, ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun-with-custom-podtemplate", }, - Spec: v1beta1.PipelineRunSpec{ - PodTemplate: &pod.Template{ - Tolerations: []corev1.Toleration{{ - Key: "key", - Operator: "Equal", - Value: "value", - Effect: "NoSchedule", - }}, - NodeSelector: map[string]string{ - "disktype": "ssd", + Spec: v1.PipelineRunSpec{ + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + PodTemplate: &pod.Template{ + Tolerations: []corev1.Toleration{{ + Key: "key", + Operator: "Equal", + Value: "value", + Effect: "NoSchedule", + }}, + NodeSelector: map[string]string{ + "disktype": "ssd", + }, + ImagePullSecrets: []corev1.LocalObjectReference{{ + Name: "reg-creds", + }}, }, - ImagePullSecrets: []corev1.LocalObjectReference{{ - Name: "reg-creds", - }}, }, }, } @@ -374,7 +375,7 @@ func TestPipelineRunPodTemplatesArePropagatedToAffinityAssistant(t *testing.T) { } func TestDefaultPodTemplatesArePropagatedToAffinityAssistant(t *testing.T) { - prWithCustomPodTemplate := &v1beta1.PipelineRun{ + prWithCustomPodTemplate := &v1.PipelineRun{ TypeMeta: metav1.TypeMeta{Kind: "PipelineRun"}, ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun-with-custom-podtemplate", @@ -412,24 +413,25 @@ func TestDefaultPodTemplatesArePropagatedToAffinityAssistant(t *testing.T) { } func TestMergedPodTemplatesArePropagatedToAffinityAssistant(t *testing.T) { - prWithCustomPodTemplate := &v1beta1.PipelineRun{ + prWithCustomPodTemplate := &v1.PipelineRun{ TypeMeta: metav1.TypeMeta{Kind: "PipelineRun"}, ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun-with-custom-podtemplate", }, - Spec: v1beta1.PipelineRunSpec{ - PodTemplate: &pod.Template{ - Tolerations: []corev1.Toleration{{ - Key: "key", - Operator: "Equal", - Value: "value", - Effect: "NoSchedule", + Spec: v1.PipelineRunSpec{ + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + PodTemplate: &pod.Template{ + Tolerations: []corev1.Toleration{{ + Key: "key", + Operator: "Equal", + Value: "value", + Effect: "NoSchedule", + }}, + ImagePullSecrets: []corev1.LocalObjectReference{ + {Name: "reg-creds"}, + {Name: "alt-creds"}, + }, }}, - ImagePullSecrets: []corev1.LocalObjectReference{ - {Name: "reg-creds"}, - {Name: "alt-creds"}, - }, - }, }, } @@ -458,24 +460,25 @@ func TestMergedPodTemplatesArePropagatedToAffinityAssistant(t *testing.T) { } func TestOnlySelectPodTemplateFieldsArePropagatedToAffinityAssistant(t *testing.T) { - prWithCustomPodTemplate := &v1beta1.PipelineRun{ + prWithCustomPodTemplate := &v1.PipelineRun{ TypeMeta: metav1.TypeMeta{Kind: "PipelineRun"}, ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun-with-custom-podtemplate", }, - Spec: v1beta1.PipelineRunSpec{ - PodTemplate: &pod.Template{ - Tolerations: []corev1.Toleration{{ - Key: "key", - Operator: "Equal", - Value: "value", - Effect: "NoSchedule", - }}, - HostAliases: []corev1.HostAlias{{ - IP: "1.2.3.4", - Hostnames: []string{"localhost"}, + Spec: v1.PipelineRunSpec{ + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + PodTemplate: &pod.Template{ + Tolerations: []corev1.Toleration{{ + Key: "key", + Operator: "Equal", + Value: "value", + Effect: "NoSchedule", + }}, + HostAliases: []corev1.HostAlias{{ + IP: "1.2.3.4", + Hostnames: []string{"localhost"}, + }}, }}, - }, }, } @@ -491,12 +494,12 @@ func TestOnlySelectPodTemplateFieldsArePropagatedToAffinityAssistant(t *testing. } func TestThatTheAffinityAssistantIsWithoutNodeSelectorAndTolerations(t *testing.T) { - prWithoutCustomPodTemplate := &v1beta1.PipelineRun{ + prWithoutCustomPodTemplate := &v1.PipelineRun{ TypeMeta: metav1.TypeMeta{Kind: "PipelineRun"}, ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun-without-custom-podtemplate", }, - Spec: v1beta1.PipelineRunSpec{}, + Spec: v1.PipelineRunSpec{}, } stsWithoutTolerationsAndNodeSelector := affinityAssistantStatefulSet("test-assistant", prWithoutCustomPodTemplate, []corev1.PersistentVolumeClaim{}, []corev1.PersistentVolumeClaimVolumeSource{}, "nginx", nil) @@ -527,23 +530,23 @@ func TestThatAffinityAssistantNameIsNoLongerThan53(t *testing.T) { } func TestCleanupAffinityAssistants_Success(t *testing.T) { - workspace := v1beta1.WorkspaceBinding{ + workspace := v1.WorkspaceBinding{ Name: "volumeClaimTemplate workspace", VolumeClaimTemplate: &corev1.PersistentVolumeClaim{}, } - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ TypeMeta: metav1.TypeMeta{Kind: "PipelineRun"}, ObjectMeta: metav1.ObjectMeta{ Name: "test-pipelinerun-volumeclaimtemplate", }, - Spec: v1beta1.PipelineRunSpec{ - Workspaces: []v1beta1.WorkspaceBinding{workspace}, + Spec: v1.PipelineRunSpec{ + Workspaces: []v1.WorkspaceBinding{workspace}, }, } // seed data to create StatefulSets and PVCs expectedAffinityAssistantName := getAffinityAssistantName(workspace.Name, pr.Name) - aa := []*v1.StatefulSet{{ + aa := []*appsv1.StatefulSet{{ TypeMeta: metav1.TypeMeta{ Kind: "StatefulSet", APIVersion: "apps/v1", @@ -552,7 +555,7 @@ func TestCleanupAffinityAssistants_Success(t *testing.T) { Name: expectedAffinityAssistantName, Labels: getStatefulSetLabels(pr, expectedAffinityAssistantName), }, - Status: v1.StatefulSetStatus{ + Status: appsv1.StatefulSetStatus{ ReadyReplicas: 1, }, }} @@ -588,9 +591,9 @@ func TestCleanupAffinityAssistants_Success(t *testing.T) { } func TestCleanupAffinityAssistants_Failure(t *testing.T) { - pr := &v1beta1.PipelineRun{ - Spec: v1beta1.PipelineRunSpec{ - Workspaces: []v1beta1.WorkspaceBinding{{ + pr := &v1.PipelineRun{ + Spec: v1.PipelineRunSpec{ + Workspaces: []v1.WorkspaceBinding{{ VolumeClaimTemplate: &corev1.PersistentVolumeClaim{}, }}, }, @@ -714,7 +717,7 @@ func TestGetAssistantAffinityMergedWithPodTemplateAffinity(t *testing.T) { }, } - prWithEmptyAffinityPodTemplate := parse.MustParseV1beta1PipelineRun(t, ` + prWithEmptyAffinityPodTemplate := parse.MustParseV1PipelineRun(t, ` metadata: name: pr-with-no-podTemplate `) @@ -726,25 +729,26 @@ metadata: }, } - prWithPodTemplatePodAffinity := parse.MustParseV1beta1PipelineRun(t, ` + prWithPodTemplatePodAffinity := parse.MustParseV1PipelineRun(t, ` metadata: name: pr-with-podTemplate-podAffinity spec: - podTemplate: - affinity: - podAntiAffinity: - preferredDuringSchedulingIgnoredDuringExecution: - - podAffinityTerm: - labelSelector: + taskRunTemplate: + podTemplate: + affinity: + podAntiAffinity: + preferredDuringSchedulingIgnoredDuringExecution: + - podAffinityTerm: + labelSelector: + matchLabels: + test/label: test + topologyKey: kubernetes.io/hostname + weight: 50 + requiredDuringSchedulingIgnoredDuringExecution: + - labelSelector: matchLabels: test/label: test topologyKey: kubernetes.io/hostname - weight: 50 - requiredDuringSchedulingIgnoredDuringExecution: - - labelSelector: - matchLabels: - test/label: test - topologyKey: kubernetes.io/hostname `) affinityWithPodTemplatePodAffinity := &corev1.Affinity{ PodAntiAffinity: &corev1.PodAntiAffinity{ @@ -775,20 +779,21 @@ spec: }, } - prWithPodTemplateNodeAffinity := parse.MustParseV1beta1PipelineRun(t, ` + prWithPodTemplateNodeAffinity := parse.MustParseV1PipelineRun(t, ` metadata: name: pr-with-podTemplate-nodeAffinity spec: - podTemplate: - affinity: - nodeAffinity: - requiredDuringSchedulingIgnoredDuringExecution: - nodeSelectorTerms: - - matchExpressions: - - key: kubernetes.io/hostname - operator: NotIn - values: - - 192.168.xx.xx + taskRunTemplate: + podTemplate: + affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: kubernetes.io/hostname + operator: NotIn + values: + - 192.168.xx.xx `) affinityWithPodTemplateNodeAffinity := &corev1.Affinity{ PodAntiAffinity: &corev1.PodAntiAffinity{ @@ -817,7 +822,7 @@ spec: for _, tc := range []struct { description string - pr *v1beta1.PipelineRun + pr *v1.PipelineRun expect *corev1.Affinity }{ { @@ -846,7 +851,7 @@ spec: } type Data struct { - StatefulSets []*v1.StatefulSet + StatefulSets []*appsv1.StatefulSet Nodes []*corev1.Node Pods []*corev1.Pod PVCs []*corev1.PersistentVolumeClaim diff --git a/pkg/reconciler/pipelinerun/cancel.go b/pkg/reconciler/pipelinerun/cancel.go index 907e4882ba2..432f6eab473 100644 --- a/pkg/reconciler/pipelinerun/cancel.go +++ b/pkg/reconciler/pipelinerun/cancel.go @@ -24,6 +24,7 @@ import ( "strings" "time" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" clientset "github.com/tektoncd/pipeline/pkg/client/clientset/versioned" "go.uber.org/zap" @@ -44,12 +45,12 @@ func init() { { Operation: "add", Path: "/spec/status", - Value: v1beta1.TaskRunSpecStatusCancelled, + Value: v1.TaskRunSpecStatusCancelled, }, { Operation: "add", Path: "/spec/statusMessage", - Value: v1beta1.TaskRunCancelledByPipelineMsg, + Value: v1.TaskRunCancelledByPipelineMsg, }}) if err != nil { log.Fatalf("failed to marshal TaskRun cancel patch bytes: %v", err) @@ -81,7 +82,7 @@ func cancelCustomRun(ctx context.Context, runName string, namespace string, clie } func cancelTaskRun(ctx context.Context, taskRunName string, namespace string, clientSet clientset.Interface) error { - _, err := clientSet.TektonV1beta1().TaskRuns(namespace).Patch(ctx, taskRunName, types.JSONPatchType, cancelTaskRunPatchBytes, metav1.PatchOptions{}, "") + _, err := clientSet.TektonV1().TaskRuns(namespace).Patch(ctx, taskRunName, types.JSONPatchType, cancelTaskRunPatchBytes, metav1.PatchOptions{}, "") if errors.IsNotFound(err) { // The resource may have been deleted in the meanwhile, but we should // still be able to cancel the PipelineRun @@ -91,7 +92,7 @@ func cancelTaskRun(ctx context.Context, taskRunName string, namespace string, cl } // cancelPipelineRun marks the PipelineRun as cancelled and any resolved TaskRun(s) too. -func cancelPipelineRun(ctx context.Context, logger *zap.SugaredLogger, pr *v1beta1.PipelineRun, clientSet clientset.Interface) error { +func cancelPipelineRun(ctx context.Context, logger *zap.SugaredLogger, pr *v1.PipelineRun, clientSet clientset.Interface) error { errs := cancelPipelineTaskRuns(ctx, logger, pr, clientSet) // If we successfully cancelled all the TaskRuns and Runs, we can consider the PipelineRun cancelled. @@ -121,12 +122,12 @@ func cancelPipelineRun(ctx context.Context, logger *zap.SugaredLogger, pr *v1bet } // cancelPipelineTaskRuns patches `TaskRun` and `Run` with canceled status -func cancelPipelineTaskRuns(ctx context.Context, logger *zap.SugaredLogger, pr *v1beta1.PipelineRun, clientSet clientset.Interface) []string { +func cancelPipelineTaskRuns(ctx context.Context, logger *zap.SugaredLogger, pr *v1.PipelineRun, clientSet clientset.Interface) []string { return cancelPipelineTaskRunsForTaskNames(ctx, logger, pr, clientSet, sets.NewString()) } // cancelPipelineTaskRunsForTaskNames patches `TaskRun`s and `Run`s for the given task names, or all if no task names are given, with canceled status -func cancelPipelineTaskRunsForTaskNames(ctx context.Context, logger *zap.SugaredLogger, pr *v1beta1.PipelineRun, clientSet clientset.Interface, taskNames sets.String) []string { +func cancelPipelineTaskRunsForTaskNames(ctx context.Context, logger *zap.SugaredLogger, pr *v1.PipelineRun, clientSet clientset.Interface, taskNames sets.String) []string { errs := []string{} trNames, customRunNames, err := getChildObjectsFromPRStatusForTaskNames(ctx, pr.Status, taskNames) @@ -156,7 +157,7 @@ func cancelPipelineTaskRunsForTaskNames(ctx context.Context, logger *zap.Sugared // getChildObjectsFromPRStatusForTaskNames returns taskruns and customruns in the PipelineRunStatus's ChildReferences, // based on the given set of PipelineTask names. If that set is empty, all are returned. -func getChildObjectsFromPRStatusForTaskNames(ctx context.Context, prs v1beta1.PipelineRunStatus, taskNames sets.String) ([]string, []string, error) { +func getChildObjectsFromPRStatusForTaskNames(ctx context.Context, prs v1.PipelineRunStatus, taskNames sets.String) ([]string, []string, error) { var trNames []string var customRunNames []string unknownChildKinds := make(map[string]string) @@ -183,7 +184,7 @@ func getChildObjectsFromPRStatusForTaskNames(ctx context.Context, prs v1beta1.Pi } // gracefullyCancelPipelineRun marks any non-final resolved TaskRun(s) as cancelled and runs finally. -func gracefullyCancelPipelineRun(ctx context.Context, logger *zap.SugaredLogger, pr *v1beta1.PipelineRun, clientSet clientset.Interface) error { +func gracefullyCancelPipelineRun(ctx context.Context, logger *zap.SugaredLogger, pr *v1.PipelineRun, clientSet clientset.Interface) error { errs := cancelPipelineTaskRuns(ctx, logger, pr, clientSet) // If we successfully cancelled all the TaskRuns and Runs, we can proceed with the PipelineRun reconciliation to trigger finally. diff --git a/pkg/reconciler/pipelinerun/cancel_test.go b/pkg/reconciler/pipelinerun/cancel_test.go index b87d7bb7a5e..72ab2e5ce04 100644 --- a/pkg/reconciler/pipelinerun/cancel_test.go +++ b/pkg/reconciler/pipelinerun/cancel_test.go @@ -22,6 +22,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/tektoncd/pipeline/pkg/apis/config" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" _ "github.com/tektoncd/pipeline/pkg/pipelinerunmetrics/fake" // Make sure the pipelinerunmetrics are setup ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" @@ -38,45 +39,45 @@ func TestCancelPipelineRun(t *testing.T) { testCases := []struct { name string - pipelineRun *v1beta1.PipelineRun - taskRuns []*v1beta1.TaskRun + pipelineRun *v1.PipelineRun + taskRuns []*v1.TaskRun customRuns []*v1beta1.CustomRun wantErr bool }{{ name: "no-resolved-taskrun", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-cancelled"}, - Spec: v1beta1.PipelineRunSpec{ - Status: v1beta1.PipelineRunSpecStatusCancelled, + Spec: v1.PipelineRunSpec{ + Status: v1.PipelineRunSpecStatusCancelled, }, }, }, { name: "one-taskrun", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-cancelled"}, - Spec: v1beta1.PipelineRunSpec{ - Status: v1beta1.PipelineRunSpecStatusCancelled, + Spec: v1.PipelineRunSpec{ + Status: v1.PipelineRunSpecStatusCancelled, }, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{Kind: taskRun}, Name: "t1", PipelineTaskName: "task-1", }}, }}, }, - taskRuns: []*v1beta1.TaskRun{ + taskRuns: []*v1.TaskRun{ {ObjectMeta: metav1.ObjectMeta{Name: "t1"}}, }, }, { name: "multiple-taskruns-one-missing", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-cancelled"}, - Spec: v1beta1.PipelineRunSpec{ - Status: v1beta1.PipelineRunSpecStatusCancelled, + Spec: v1.PipelineRunSpec{ + Status: v1.PipelineRunSpecStatusCancelled, }, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{Kind: taskRun}, Name: "t1", PipelineTaskName: "task-1", @@ -87,18 +88,18 @@ func TestCancelPipelineRun(t *testing.T) { }}, }}, }, - taskRuns: []*v1beta1.TaskRun{ + taskRuns: []*v1.TaskRun{ {ObjectMeta: metav1.ObjectMeta{Name: "t2"}}, }, }, { name: "multiple-taskruns", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-cancelled"}, - Spec: v1beta1.PipelineRunSpec{ - Status: v1beta1.PipelineRunSpecStatusCancelled, + Spec: v1.PipelineRunSpec{ + Status: v1.PipelineRunSpecStatusCancelled, }, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{Kind: taskRun}, Name: "t1", PipelineTaskName: "task-1", @@ -109,19 +110,19 @@ func TestCancelPipelineRun(t *testing.T) { }}, }}, }, - taskRuns: []*v1beta1.TaskRun{ + taskRuns: []*v1.TaskRun{ {ObjectMeta: metav1.ObjectMeta{Name: "t1"}}, {ObjectMeta: metav1.ObjectMeta{Name: "t2"}}, }, }, { name: "multiple-runs", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-cancelled"}, - Spec: v1beta1.PipelineRunSpec{ - Status: v1beta1.PipelineRunSpecStatusCancelled, + Spec: v1.PipelineRunSpec{ + Status: v1.PipelineRunSpecStatusCancelled, }, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{Kind: customRun}, Name: "t1", PipelineTaskName: "task-1", @@ -138,13 +139,13 @@ func TestCancelPipelineRun(t *testing.T) { }, }, { name: "multiple-runs-one-missing", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-cancelled"}, - Spec: v1beta1.PipelineRunSpec{ - Status: v1beta1.PipelineRunSpecStatusCancelled, + Spec: v1.PipelineRunSpec{ + Status: v1.PipelineRunSpecStatusCancelled, }, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{Kind: customRun}, Name: "t1", PipelineTaskName: "task-1", @@ -160,13 +161,13 @@ func TestCancelPipelineRun(t *testing.T) { }, }, { name: "multiple-taskruns-and-customruns", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-cancelled"}, - Spec: v1beta1.PipelineRunSpec{ - Status: v1beta1.PipelineRunSpecStatusCancelled, + Spec: v1.PipelineRunSpec{ + Status: v1.PipelineRunSpecStatusCancelled, }, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{ + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{ { TypeMeta: runtime.TypeMeta{Kind: taskRun}, Name: "t1", @@ -190,7 +191,7 @@ func TestCancelPipelineRun(t *testing.T) { }, }}, }, - taskRuns: []*v1beta1.TaskRun{ + taskRuns: []*v1.TaskRun{ {ObjectMeta: metav1.ObjectMeta{Name: "t1"}}, {ObjectMeta: metav1.ObjectMeta{Name: "t2"}}, }, @@ -200,13 +201,13 @@ func TestCancelPipelineRun(t *testing.T) { }, }, { name: "child-references-some-missing", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-cancelled"}, - Spec: v1beta1.PipelineRunSpec{ - Status: v1beta1.PipelineRunSpecStatusCancelled, + Spec: v1.PipelineRunSpec{ + Status: v1.PipelineRunSpecStatusCancelled, }, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{ + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{ { TypeMeta: runtime.TypeMeta{Kind: taskRun}, Name: "t1", @@ -230,7 +231,7 @@ func TestCancelPipelineRun(t *testing.T) { }, }}, }, - taskRuns: []*v1beta1.TaskRun{ + taskRuns: []*v1.TaskRun{ {ObjectMeta: metav1.ObjectMeta{Name: "t2"}}, }, customRuns: []*v1beta1.CustomRun{ @@ -238,13 +239,13 @@ func TestCancelPipelineRun(t *testing.T) { }, }, { name: "child-references-with-customruns", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-cancelled"}, - Spec: v1beta1.PipelineRunSpec{ - Status: v1beta1.PipelineRunSpecStatusCancelled, + Spec: v1.PipelineRunSpec{ + Status: v1.PipelineRunSpecStatusCancelled, }, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{ + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{ { TypeMeta: runtime.TypeMeta{Kind: taskRun}, Name: "t1", @@ -268,7 +269,7 @@ func TestCancelPipelineRun(t *testing.T) { }, }}, }, - taskRuns: []*v1beta1.TaskRun{ + taskRuns: []*v1.TaskRun{ {ObjectMeta: metav1.ObjectMeta{Name: "t1"}}, {ObjectMeta: metav1.ObjectMeta{Name: "t2"}}, }, @@ -278,13 +279,13 @@ func TestCancelPipelineRun(t *testing.T) { }, }, { name: "unknown-kind-on-child-references", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-cancelled"}, - Spec: v1beta1.PipelineRunSpec{ - Status: v1beta1.PipelineRunSpecStatusCancelled, + Spec: v1.PipelineRunSpec{ + Status: v1.PipelineRunSpecStatusCancelled, }, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{Kind: "InvalidKind"}, Name: "t1", PipelineTaskName: "task-1", @@ -297,7 +298,7 @@ func TestCancelPipelineRun(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{tc.pipelineRun}, + PipelineRuns: []*v1.PipelineRun{tc.pipelineRun}, TaskRuns: tc.taskRuns, CustomRuns: tc.customRuns, } @@ -324,14 +325,14 @@ func TestCancelPipelineRun(t *testing.T) { } if tc.taskRuns != nil { for _, expectedTR := range tc.taskRuns { - tr, err := c.Pipeline.TektonV1beta1().TaskRuns("").Get(ctx, expectedTR.Name, metav1.GetOptions{}) + tr, err := c.Pipeline.TektonV1().TaskRuns("").Get(ctx, expectedTR.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("couldn't get expected TaskRun %s, got error %s", expectedTR.Name, err) } - if tr.Spec.Status != v1beta1.TaskRunSpecStatusCancelled { + if tr.Spec.Status != v1.TaskRunSpecStatusCancelled { t.Errorf("expected task %q to be marked as cancelled, was %q", tr.Name, tr.Spec.Status) } - expectedStatusMessage := v1beta1.TaskRunCancelledByPipelineMsg + expectedStatusMessage := v1.TaskRunCancelledByPipelineMsg if tr.Spec.StatusMessage != expectedStatusMessage { t.Errorf("expected task %q to have status message %s but was %s", tr.Name, expectedStatusMessage, tr.Spec.StatusMessage) } @@ -360,7 +361,7 @@ func TestCancelPipelineRun(t *testing.T) { func TestGetChildObjectsFromPRStatusForTaskNames(t *testing.T) { testCases := []struct { name string - prStatus v1beta1.PipelineRunStatus + prStatus v1.PipelineRunStatus taskNames sets.String expectedTRNames []string expectedRunNames []string @@ -368,8 +369,8 @@ func TestGetChildObjectsFromPRStatusForTaskNames(t *testing.T) { hasError bool }{{ name: "beta custom tasks", - prStatus: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ + prStatus: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ APIVersion: v1beta1.SchemeGroupVersion.String(), Kind: customRun, @@ -382,8 +383,8 @@ func TestGetChildObjectsFromPRStatusForTaskNames(t *testing.T) { hasError: false, }, { name: "unknown kind", - prStatus: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ + prStatus: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ APIVersion: "v1", Kind: "UnknownKind", diff --git a/pkg/reconciler/pipelinerun/controller.go b/pkg/reconciler/pipelinerun/controller.go index f35a8bff63b..400dcc101ef 100644 --- a/pkg/reconciler/pipelinerun/controller.go +++ b/pkg/reconciler/pipelinerun/controller.go @@ -21,13 +21,13 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" pipelineclient "github.com/tektoncd/pipeline/pkg/client/injection/client" + pipelineruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/pipelinerun" + taskruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/taskrun" verificationpolicyinformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1alpha1/verificationpolicy" customruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/customrun" - pipelineruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/pipelinerun" - taskruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/taskrun" - pipelinerunreconciler "github.com/tektoncd/pipeline/pkg/client/injection/reconciler/pipeline/v1beta1/pipelinerun" + pipelinerunreconciler "github.com/tektoncd/pipeline/pkg/client/injection/reconciler/pipeline/v1/pipelinerun" resolutionclient "github.com/tektoncd/pipeline/pkg/client/resolution/injection/client" resolutioninformer "github.com/tektoncd/pipeline/pkg/client/resolution/injection/informers/resolution/v1beta1/resolutionrequest" "github.com/tektoncd/pipeline/pkg/pipelinerunmetrics" @@ -82,15 +82,15 @@ func NewController(opts *pipeline.Options, clock clock.PassiveClock, tracerProvi pipelineRunInformer.Informer().AddEventHandler(controller.HandleAll(impl.Enqueue)) taskRunInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{ - FilterFunc: controller.FilterController(&v1beta1.PipelineRun{}), + FilterFunc: controller.FilterController(&v1.PipelineRun{}), Handler: controller.HandleAll(impl.EnqueueControllerOf), }) customRunInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{ - FilterFunc: controller.FilterController(&v1beta1.PipelineRun{}), + FilterFunc: controller.FilterController(&v1.PipelineRun{}), Handler: controller.HandleAll(impl.EnqueueControllerOf), }) resolutionInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{ - FilterFunc: controller.FilterController(&v1beta1.PipelineRun{}), + FilterFunc: controller.FilterController(&v1.PipelineRun{}), Handler: controller.HandleAll(impl.EnqueueControllerOf), }) diff --git a/pkg/reconciler/pipelinerun/pipelinerun.go b/pkg/reconciler/pipelinerun/pipelinerun.go index 406b04ae21e..abfc4e71336 100644 --- a/pkg/reconciler/pipelinerun/pipelinerun.go +++ b/pkg/reconciler/pipelinerun/pipelinerun.go @@ -28,11 +28,13 @@ import ( "github.com/hashicorp/go-multierror" "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" clientset "github.com/tektoncd/pipeline/pkg/client/clientset/versioned" - pipelinerunreconciler "github.com/tektoncd/pipeline/pkg/client/injection/reconciler/pipeline/v1beta1/pipelinerun" + pipelinerunreconciler "github.com/tektoncd/pipeline/pkg/client/injection/reconciler/pipeline/v1/pipelinerun" + listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1" alpha1listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1alpha1" - listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1beta1" + beta1listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1beta1" resolutionutil "github.com/tektoncd/pipeline/pkg/internal/resolution" "github.com/tektoncd/pipeline/pkg/pipelinerunmetrics" tknreconciler "github.com/tektoncd/pipeline/pkg/reconciler" @@ -150,7 +152,7 @@ type Reconciler struct { // listers index properties about resources pipelineRunLister listers.PipelineRunLister taskRunLister listers.TaskRunLister - customRunLister listers.CustomRunLister + customRunLister beta1listers.CustomRunLister verificationPolicyLister alpha1listers.VerificationPolicyLister cloudEventClient cloudevent.CEClient metrics *pipelinerunmetrics.Recorder @@ -167,7 +169,7 @@ var ( // ReconcileKind compares the actual state with the desired, and attempts to // converge the two. It then updates the Status block of the Pipeline Run // resource with the current status of the resource. -func (c *Reconciler) ReconcileKind(ctx context.Context, pr *v1beta1.PipelineRun) pkgreconciler.Event { +func (c *Reconciler) ReconcileKind(ctx context.Context, pr *v1.PipelineRun) pkgreconciler.Event { logger := logging.FromContext(ctx) ctx = cloudevent.ToContext(ctx, c.cloudEventClient) ctx = initTracing(ctx, c.tracerProvider, pr) @@ -278,7 +280,7 @@ func (c *Reconciler) ReconcileKind(ctx context.Context, pr *v1beta1.PipelineRun) return nil } -func (c *Reconciler) durationAndCountMetrics(ctx context.Context, pr *v1beta1.PipelineRun, beforeCondition *apis.Condition) { +func (c *Reconciler) durationAndCountMetrics(ctx context.Context, pr *v1.PipelineRun, beforeCondition *apis.Condition) { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "durationAndCountMetrics") defer span.End() logger := logging.FromContext(ctx) @@ -290,7 +292,7 @@ func (c *Reconciler) durationAndCountMetrics(ctx context.Context, pr *v1beta1.Pi } } -func (c *Reconciler) finishReconcileUpdateEmitEvents(ctx context.Context, pr *v1beta1.PipelineRun, beforeCondition *apis.Condition, previousError error) error { +func (c *Reconciler) finishReconcileUpdateEmitEvents(ctx context.Context, pr *v1.PipelineRun, beforeCondition *apis.Condition, previousError error) error { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "finishReconcileUpdateEmitEvents") defer span.End() logger := logging.FromContext(ctx) @@ -314,9 +316,9 @@ func (c *Reconciler) finishReconcileUpdateEmitEvents(ctx context.Context, pr *v1 // specified by those tasks. func (c *Reconciler) resolvePipelineState( ctx context.Context, - tasks []v1beta1.PipelineTask, + tasks []v1.PipelineTask, pipelineMeta *metav1.ObjectMeta, - pr *v1beta1.PipelineRun) (resources.PipelineRunState, error) { + pr *v1.PipelineRun) (resources.PipelineRunState, error) { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "resolvePipelineState") defer span.End() pst := resources.PipelineRunState{} @@ -331,7 +333,7 @@ func (c *Reconciler) resolvePipelineState( if err != nil { return nil, fmt.Errorf("failed to list VerificationPolicies from namespace %s with error %w", pr.Namespace, err) } - fn := tresources.GetTaskFunc(ctx, c.KubeClientSet, c.PipelineClientSet, c.resolutionRequester, pr, task.TaskRef, trName, pr.Namespace, pr.Spec.ServiceAccountName, vp) + fn := tresources.GetTaskFunc(ctx, c.KubeClientSet, c.PipelineClientSet, c.resolutionRequester, pr, task.TaskRef, trName, pr.Namespace, pr.Spec.TaskRunTemplate.ServiceAccountName, vp) getCustomRunFunc := func(name string) (*v1beta1.CustomRun, error) { r, err := c.customRunLister.CustomRuns(pr.Namespace).Get(name) @@ -344,7 +346,7 @@ func (c *Reconciler) resolvePipelineState( resolvedTask, err := resources.ResolvePipelineTask(ctx, *pr, fn, - func(name string) (*v1beta1.TaskRun, error) { + func(name string) (*v1.TaskRun, error) { return c.taskRunLister.TaskRuns(pr.Namespace).Get(name) }, getCustomRunFunc, @@ -382,7 +384,7 @@ func (c *Reconciler) resolvePipelineState( return pst, nil } -func (c *Reconciler) reconcile(ctx context.Context, pr *v1beta1.PipelineRun, getPipelineFunc rprp.GetPipeline, beforeCondition *apis.Condition) error { +func (c *Reconciler) reconcile(ctx context.Context, pr *v1.PipelineRun, getPipelineFunc rprp.GetPipeline, beforeCondition *apis.Condition) error { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "reconcile") defer span.End() defer c.durationAndCountMetrics(ctx, pr, beforeCondition) @@ -423,7 +425,7 @@ func (c *Reconciler) reconcile(ctx context.Context, pr *v1beta1.PipelineRun, get } } - d, err := dag.Build(v1beta1.PipelineTaskList(pipelineSpec.Tasks), v1beta1.PipelineTaskList(pipelineSpec.Tasks).Deps()) + d, err := dag.Build(v1.PipelineTaskList(pipelineSpec.Tasks), v1.PipelineTaskList(pipelineSpec.Tasks).Deps()) if err != nil { // This Run has failed, so we need to mark it as failed and stop reconciling it pr.Status.MarkFailed(ReasonInvalidGraph, @@ -436,7 +438,7 @@ func (c *Reconciler) reconcile(ctx context.Context, pr *v1beta1.PipelineRun, get // if a task in PipelineRunState is final task or not // the finally section is optional and might not exist // dfinally holds an empty Graph in the absence of finally clause - dfinally, err := dag.Build(v1beta1.PipelineTaskList(pipelineSpec.Finally), map[string][]string{}) + dfinally, err := dag.Build(v1.PipelineTaskList(pipelineSpec.Finally), map[string][]string{}) if err != nil { // This Run has failed, so we need to mark it as failed and stop reconciling it pr.Status.MarkFailed(ReasonInvalidGraph, @@ -525,7 +527,7 @@ func (c *Reconciler) reconcile(ctx context.Context, pr *v1beta1.PipelineRun, get switch { case errors.Is(err, remote.ErrRequestInProgress): message := fmt.Sprintf("PipelineRun %s/%s awaiting remote resource", pr.Namespace, pr.Name) - pr.Status.MarkRunning(v1beta1.TaskRunReasonResolvingTaskRef, message) + pr.Status.MarkRunning(v1.TaskRunReasonResolvingTaskRef, message) return nil case err != nil: return err @@ -688,7 +690,7 @@ func (c *Reconciler) reconcile(ctx context.Context, pr *v1beta1.PipelineRun, get pr.Status.SkippedTasks = pipelineRunFacts.GetSkippedTasks() if after.Status == corev1.ConditionTrue || after.Status == corev1.ConditionFalse { - pr.Status.PipelineResults, err = resources.ApplyTaskResultsToPipelineResults(ctx, pipelineSpec.Results, + pr.Status.Results, err = resources.ApplyTaskResultsToPipelineResults(ctx, pipelineSpec.Results, pipelineRunFacts.State.GetTaskRunsResults(), pipelineRunFacts.State.GetRunsResults(), pipelineRunFacts.GetPipelineTaskStatus()) if err != nil { pr.Status.MarkFailed(ReasonFailedValidation, err.Error()) @@ -703,7 +705,7 @@ func (c *Reconciler) reconcile(ctx context.Context, pr *v1beta1.PipelineRun, get // runNextSchedulableTask gets the next schedulable Tasks from the dag based on the current // pipeline run state, and starts them // after all DAG tasks are done, it's responsible for scheduling final tasks and start executing them -func (c *Reconciler) runNextSchedulableTask(ctx context.Context, pr *v1beta1.PipelineRun, pipelineRunFacts *resources.PipelineRunFacts) error { +func (c *Reconciler) runNextSchedulableTask(ctx context.Context, pr *v1.PipelineRun, pipelineRunFacts *resources.PipelineRunFacts) error { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "runNextSchedulableTask") defer span.End() @@ -792,7 +794,7 @@ func (c *Reconciler) runNextSchedulableTask(ctx context.Context, pr *v1beta1.Pip } // setFinallyStartedTimeIfNeeded sets the PipelineRun.Status.FinallyStartedTime to the current time if it's nil. -func (c *Reconciler) setFinallyStartedTimeIfNeeded(pr *v1beta1.PipelineRun, facts *resources.PipelineRunFacts) { +func (c *Reconciler) setFinallyStartedTimeIfNeeded(pr *v1.PipelineRun, facts *resources.PipelineRunFacts) { if pr.Status.FinallyStartTime == nil { pr.Status.FinallyStartTime = &metav1.Time{Time: c.Clock.Now()} } @@ -801,18 +803,18 @@ func (c *Reconciler) setFinallyStartedTimeIfNeeded(pr *v1beta1.PipelineRun, fact } } -func (c *Reconciler) createTaskRuns(ctx context.Context, rpt *resources.ResolvedPipelineTask, pr *v1beta1.PipelineRun) ([]*v1beta1.TaskRun, error) { +func (c *Reconciler) createTaskRuns(ctx context.Context, rpt *resources.ResolvedPipelineTask, pr *v1.PipelineRun) ([]*v1.TaskRun, error) { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "createTaskRuns") defer span.End() - var taskRuns []*v1beta1.TaskRun - var matrixCombinations []v1beta1.Params + var taskRuns []*v1.TaskRun + var matrixCombinations []v1.Params if rpt.PipelineTask.IsMatrixed() { matrixCombinations = rpt.PipelineTask.Matrix.FanOut() } for i, taskRunName := range rpt.TaskRunNames { - var params v1beta1.Params + var params v1.Params if len(matrixCombinations) > i { params = matrixCombinations[i] } @@ -825,14 +827,14 @@ func (c *Reconciler) createTaskRuns(ctx context.Context, rpt *resources.Resolved return taskRuns, nil } -func (c *Reconciler) createTaskRun(ctx context.Context, taskRunName string, params v1beta1.Params, rpt *resources.ResolvedPipelineTask, pr *v1beta1.PipelineRun) (*v1beta1.TaskRun, error) { +func (c *Reconciler) createTaskRun(ctx context.Context, taskRunName string, params v1.Params, rpt *resources.ResolvedPipelineTask, pr *v1.PipelineRun) (*v1.TaskRun, error) { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "createTaskRun") defer span.End() logger := logging.FromContext(ctx) rpt.PipelineTask = resources.ApplyPipelineTaskContexts(rpt.PipelineTask) taskRunSpec := pr.GetTaskRunSpec(rpt.PipelineTask.Name) params = append(params, rpt.PipelineTask.Params...) - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: taskRunName, Namespace: pr.Namespace, @@ -840,13 +842,13 @@ func (c *Reconciler) createTaskRun(ctx context.Context, taskRunName string, para Labels: combineTaskRunAndTaskSpecLabels(pr, rpt.PipelineTask), Annotations: combineTaskRunAndTaskSpecAnnotations(pr, rpt.PipelineTask), }, - Spec: v1beta1.TaskRunSpec{ + Spec: v1.TaskRunSpec{ Retries: rpt.PipelineTask.Retries, Params: params, - ServiceAccountName: taskRunSpec.TaskServiceAccountName, - PodTemplate: taskRunSpec.TaskPodTemplate, - StepOverrides: taskRunSpec.StepOverrides, - SidecarOverrides: taskRunSpec.SidecarOverrides, + ServiceAccountName: taskRunSpec.ServiceAccountName, + PodTemplate: taskRunSpec.PodTemplate, + StepSpecs: taskRunSpec.StepSpecs, + SidecarSpecs: taskRunSpec.SidecarSpecs, ComputeResources: taskRunSpec.ComputeResources, }} @@ -879,21 +881,21 @@ func (c *Reconciler) createTaskRun(ctx context.Context, taskRunName string, para } logger.Infof("Creating a new TaskRun object %s for pipeline task %s", taskRunName, rpt.PipelineTask.Name) - return c.PipelineClientSet.TektonV1beta1().TaskRuns(pr.Namespace).Create(ctx, tr, metav1.CreateOptions{}) + return c.PipelineClientSet.TektonV1().TaskRuns(pr.Namespace).Create(ctx, tr, metav1.CreateOptions{}) } -func (c *Reconciler) createCustomRuns(ctx context.Context, rpt *resources.ResolvedPipelineTask, pr *v1beta1.PipelineRun) ([]*v1beta1.CustomRun, error) { +func (c *Reconciler) createCustomRuns(ctx context.Context, rpt *resources.ResolvedPipelineTask, pr *v1.PipelineRun) ([]*v1beta1.CustomRun, error) { var customRuns []*v1beta1.CustomRun ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "createCustomRuns") defer span.End() - var matrixCombinations []v1beta1.Params + var matrixCombinations []v1.Params if rpt.PipelineTask.IsMatrixed() { matrixCombinations = rpt.PipelineTask.Matrix.FanOut() } for i, customRunName := range rpt.CustomRunNames { - var params v1beta1.Params + var params v1.Params if len(matrixCombinations) > i { params = matrixCombinations[i] } @@ -906,7 +908,7 @@ func (c *Reconciler) createCustomRuns(ctx context.Context, rpt *resources.Resolv return customRuns, nil } -func (c *Reconciler) createCustomRun(ctx context.Context, runName string, params v1beta1.Params, rpt *resources.ResolvedPipelineTask, pr *v1beta1.PipelineRun) (*v1beta1.CustomRun, error) { +func (c *Reconciler) createCustomRun(ctx context.Context, runName string, params v1.Params, rpt *resources.ResolvedPipelineTask, pr *v1.PipelineRun) (*v1beta1.CustomRun, error) { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "createCustomRun") defer span.End() logger := logging.FromContext(ctx) @@ -917,7 +919,7 @@ func (c *Reconciler) createCustomRun(ctx context.Context, runName string, params taskTimeout := rpt.PipelineTask.Timeout var pipelinePVCWorkspaceName string var err error - var workspaces []v1beta1.WorkspaceBinding + var workspaces []v1.WorkspaceBinding workspaces, pipelinePVCWorkspaceName, err = c.getTaskrunWorkspaces(ctx, pr, rpt) if err != nil { return nil, err @@ -931,17 +933,40 @@ func (c *Reconciler) createCustomRun(ctx context.Context, runName string, params Annotations: getTaskrunAnnotations(pr), } + // TaskRef, Params and Workspaces are converted to v1beta1 since CustomRuns + // is still in v1beta1 apiVersion + var customRef *v1beta1.TaskRef + if rpt.PipelineTask.TaskRef != nil { + customRef = &v1beta1.TaskRef{} + customRef.ConvertFrom(ctx, *rpt.PipelineTask.TaskRef) + } + + customRunParams := v1beta1.Params{} + for _, p := range params { + v1beta1Param := v1beta1.Param{} + v1beta1Param.ConvertFrom(ctx, p) + customRunParams = append(customRunParams, v1beta1Param) + } + + customRunWorkspaces := []v1beta1.WorkspaceBinding{} + for _, w := range workspaces { + v1beta1WorkspaceBinding := v1beta1.WorkspaceBinding{} + v1beta1WorkspaceBinding.ConvertFrom(ctx, w) + customRunWorkspaces = append(customRunWorkspaces, v1beta1WorkspaceBinding) + } + r := &v1beta1.CustomRun{ ObjectMeta: objectMeta, Spec: v1beta1.CustomRunSpec{ Retries: rpt.PipelineTask.Retries, - CustomRef: rpt.PipelineTask.TaskRef, - Params: params, - ServiceAccountName: taskRunSpec.TaskServiceAccountName, + CustomRef: customRef, + Params: customRunParams, + ServiceAccountName: taskRunSpec.ServiceAccountName, Timeout: taskTimeout, - Workspaces: workspaces, + Workspaces: customRunWorkspaces, }, } + if rpt.PipelineTask.TaskSpec != nil { j, err := json.Marshal(rpt.PipelineTask.TaskSpec.Spec) if err != nil { @@ -952,7 +977,7 @@ func (c *Reconciler) createCustomRun(ctx context.Context, runName string, params APIVersion: rpt.PipelineTask.TaskSpec.APIVersion, Kind: rpt.PipelineTask.TaskSpec.Kind, }, - Metadata: rpt.PipelineTask.TaskSpec.Metadata, + Metadata: v1beta1.PipelineTaskMetadata(rpt.PipelineTask.TaskSpec.Metadata), Spec: runtime.RawExtension{ Raw: j, }, @@ -986,17 +1011,17 @@ func propagateWorkspaces(rpt *resources.ResolvedPipelineTask) (*resources.Resolv for wSpace := range workspacesUsedInSteps { if !ptw.Has(wSpace) { - rpt.PipelineTask.Workspaces = append(rpt.PipelineTask.Workspaces, v1beta1.WorkspacePipelineTaskBinding{Name: wSpace}) + rpt.PipelineTask.Workspaces = append(rpt.PipelineTask.Workspaces, v1.WorkspacePipelineTaskBinding{Name: wSpace}) } } return rpt, nil } -func (c *Reconciler) getTaskrunWorkspaces(ctx context.Context, pr *v1beta1.PipelineRun, rpt *resources.ResolvedPipelineTask) ([]v1beta1.WorkspaceBinding, string, error) { +func (c *Reconciler) getTaskrunWorkspaces(ctx context.Context, pr *v1.PipelineRun, rpt *resources.ResolvedPipelineTask) ([]v1.WorkspaceBinding, string, error) { var err error - var workspaces []v1beta1.WorkspaceBinding + var workspaces []v1.WorkspaceBinding var pipelinePVCWorkspaceName string - pipelineRunWorkspaces := make(map[string]v1beta1.WorkspaceBinding) + pipelineRunWorkspaces := make(map[string]v1.WorkspaceBinding) for _, binding := range pr.Spec.Workspaces { pipelineRunWorkspaces[binding.Name] = binding } @@ -1058,7 +1083,7 @@ func (c *Reconciler) getTaskrunWorkspaces(ctx context.Context, pr *v1beta1.Pipel // taskWorkspaceByWorkspaceVolumeSource returns the WorkspaceBinding to be bound to each TaskRun in the Pipeline Task. // If the PipelineRun WorkspaceBinding is a volumeClaimTemplate, the returned WorkspaceBinding references a PersistentVolumeClaim created for the PipelineRun WorkspaceBinding based on the PipelineRun as OwnerReference. // Otherwise, the returned WorkspaceBinding references the same volume as the PipelineRun WorkspaceBinding, with the file path joined with pipelineTaskSubPath as the binding subpath. -func (c *Reconciler) taskWorkspaceByWorkspaceVolumeSource(ctx context.Context, pipelineWorkspaceName string, prName string, wb v1beta1.WorkspaceBinding, taskWorkspaceName string, pipelineTaskSubPath string, owner metav1.OwnerReference) v1beta1.WorkspaceBinding { +func (c *Reconciler) taskWorkspaceByWorkspaceVolumeSource(ctx context.Context, pipelineWorkspaceName string, prName string, wb v1.WorkspaceBinding, taskWorkspaceName string, pipelineTaskSubPath string, owner metav1.OwnerReference) v1.WorkspaceBinding { if wb.VolumeClaimTemplate == nil { binding := *wb.DeepCopy() binding.Name = taskWorkspaceName @@ -1066,7 +1091,7 @@ func (c *Reconciler) taskWorkspaceByWorkspaceVolumeSource(ctx context.Context, p return binding } - binding := v1beta1.WorkspaceBinding{ + binding := v1.WorkspaceBinding{ SubPath: combinedSubPath(wb.SubPath, pipelineTaskSubPath), PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{}, } @@ -1092,7 +1117,7 @@ func combinedSubPath(workspaceSubPath string, pipelineTaskSubPath string) string return filepath.Join(workspaceSubPath, pipelineTaskSubPath) } -func getTaskrunAnnotations(pr *v1beta1.PipelineRun) map[string]string { +func getTaskrunAnnotations(pr *v1.PipelineRun) map[string]string { // Propagate annotations from PipelineRun to TaskRun. annotations := make(map[string]string, len(pr.ObjectMeta.Annotations)+1) for key, val := range pr.ObjectMeta.Annotations { @@ -1101,7 +1126,7 @@ func getTaskrunAnnotations(pr *v1beta1.PipelineRun) map[string]string { return annotations } -func propagatePipelineNameLabelToPipelineRun(pr *v1beta1.PipelineRun) error { +func propagatePipelineNameLabelToPipelineRun(pr *v1.PipelineRun) error { if pr.ObjectMeta.Labels == nil { pr.ObjectMeta.Labels = make(map[string]string) } @@ -1118,7 +1143,7 @@ func propagatePipelineNameLabelToPipelineRun(pr *v1beta1.PipelineRun) error { return nil } -func getTaskrunLabels(pr *v1beta1.PipelineRun, pipelineTaskName string, includePipelineLabels bool) map[string]string { +func getTaskrunLabels(pr *v1.PipelineRun, pipelineTaskName string, includePipelineLabels bool) map[string]string { // Propagate labels from PipelineRun to TaskRun. labels := make(map[string]string, len(pr.ObjectMeta.Labels)+1) if includePipelineLabels { @@ -1134,14 +1159,14 @@ func getTaskrunLabels(pr *v1beta1.PipelineRun, pipelineTaskName string, includeP // check if a task is part of the "tasks" section, add a label to identify it during the runtime for _, f := range pr.Status.PipelineSpec.Tasks { if pipelineTaskName == f.Name { - labels[pipeline.MemberOfLabelKey] = v1beta1.PipelineTasks + labels[pipeline.MemberOfLabelKey] = v1.PipelineTasks break } } // check if a task is part of the "finally" section, add a label to identify it during the runtime for _, f := range pr.Status.PipelineSpec.Finally { if pipelineTaskName == f.Name { - labels[pipeline.MemberOfLabelKey] = v1beta1.PipelineFinallyTasks + labels[pipeline.MemberOfLabelKey] = v1.PipelineFinallyTasks break } } @@ -1149,7 +1174,7 @@ func getTaskrunLabels(pr *v1beta1.PipelineRun, pipelineTaskName string, includeP return labels } -func combineTaskRunAndTaskSpecLabels(pr *v1beta1.PipelineRun, pipelineTask *v1beta1.PipelineTask) map[string]string { +func combineTaskRunAndTaskSpecLabels(pr *v1.PipelineRun, pipelineTask *v1.PipelineTask) map[string]string { labels := make(map[string]string) taskRunSpec := pr.GetTaskRunSpec(pipelineTask.Name) @@ -1166,7 +1191,7 @@ func combineTaskRunAndTaskSpecLabels(pr *v1beta1.PipelineRun, pipelineTask *v1be return labels } -func combineTaskRunAndTaskSpecAnnotations(pr *v1beta1.PipelineRun, pipelineTask *v1beta1.PipelineTask) map[string]string { +func combineTaskRunAndTaskSpecAnnotations(pr *v1.PipelineRun, pipelineTask *v1.PipelineTask) map[string]string { annotations := make(map[string]string) taskRunSpec := pr.GetTaskRunSpec(pipelineTask.Name) @@ -1193,7 +1218,7 @@ func addMetadataByPrecedence(metadata map[string]string, addedMetadata map[strin } } -func (c *Reconciler) updateLabelsAndAnnotations(ctx context.Context, pr *v1beta1.PipelineRun) (*v1beta1.PipelineRun, error) { +func (c *Reconciler) updateLabelsAndAnnotations(ctx context.Context, pr *v1.PipelineRun) (*v1.PipelineRun, error) { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "updateLabelsAndAnnotations") defer span.End() newPr, err := c.pipelineRunLister.PipelineRuns(pr.Namespace).Get(pr.Name) @@ -1208,12 +1233,12 @@ func (c *Reconciler) updateLabelsAndAnnotations(ctx context.Context, pr *v1beta1 // Properly merge labels and annotations, as the labels *might* have changed during the reconciliation newPr.Labels = kmap.Union(newPr.Labels, pr.Labels) newPr.Annotations = kmap.Union(newPr.Annotations, pr.Annotations) - return c.PipelineClientSet.TektonV1beta1().PipelineRuns(pr.Namespace).Update(ctx, newPr, metav1.UpdateOptions{}) + return c.PipelineClientSet.TektonV1().PipelineRuns(pr.Namespace).Update(ctx, newPr, metav1.UpdateOptions{}) } return newPr, nil } -func storePipelineSpecAndMergeMeta(ctx context.Context, pr *v1beta1.PipelineRun, ps *v1beta1.PipelineSpec, meta *resolutionutil.ResolvedObjectMeta) error { +func storePipelineSpecAndMergeMeta(ctx context.Context, pr *v1.PipelineRun, ps *v1.PipelineSpec, meta *resolutionutil.ResolvedObjectMeta) error { // Only store the PipelineSpec once, if it has never been set before. if pr.Status.PipelineSpec == nil { pr.Status.PipelineSpec = ps @@ -1234,7 +1259,7 @@ func storePipelineSpecAndMergeMeta(ctx context.Context, pr *v1beta1.PipelineRun, cfg := config.FromContextOrDefaults(ctx) if cfg.FeatureFlags.EnableProvenanceInStatus { if pr.Status.Provenance == nil { - pr.Status.Provenance = &v1beta1.Provenance{} + pr.Status.Provenance = &v1.Provenance{} } // Store FeatureFlags in the Provenance. pr.Status.Provenance.FeatureFlags = cfg.FeatureFlags @@ -1242,15 +1267,12 @@ func storePipelineSpecAndMergeMeta(ctx context.Context, pr *v1beta1.PipelineRun, if meta != nil && meta.RefSource != nil && pr.Status.Provenance.RefSource == nil { pr.Status.Provenance.RefSource = meta.RefSource } - if meta != nil && meta.RefSource != nil && pr.Status.Provenance.ConfigSource == nil { - pr.Status.Provenance.ConfigSource = (*v1beta1.ConfigSource)(meta.RefSource) - } } return nil } -func (c *Reconciler) updatePipelineRunStatusFromInformer(ctx context.Context, pr *v1beta1.PipelineRun) error { +func (c *Reconciler) updatePipelineRunStatusFromInformer(ctx context.Context, pr *v1.PipelineRun) error { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "updatePipelineRunStatusFromInformer") defer span.End() logger := logging.FromContext(ctx) @@ -1273,13 +1295,13 @@ func (c *Reconciler) updatePipelineRunStatusFromInformer(ctx context.Context, pr return updatePipelineRunStatusFromChildObjects(ctx, logger, pr, taskRuns, customRuns) } -func updatePipelineRunStatusFromChildObjects(ctx context.Context, logger *zap.SugaredLogger, pr *v1beta1.PipelineRun, taskRuns []*v1beta1.TaskRun, customRuns []*v1beta1.CustomRun) error { +func updatePipelineRunStatusFromChildObjects(ctx context.Context, logger *zap.SugaredLogger, pr *v1.PipelineRun, taskRuns []*v1.TaskRun, customRuns []*v1beta1.CustomRun) error { updatePipelineRunStatusFromChildRefs(logger, pr, taskRuns, customRuns) return validateChildObjectsInPipelineRunStatus(ctx, pr.Status) } -func validateChildObjectsInPipelineRunStatus(ctx context.Context, prs v1beta1.PipelineRunStatus) error { +func validateChildObjectsInPipelineRunStatus(ctx context.Context, prs v1.PipelineRunStatus) error { var err error for _, cr := range prs.ChildReferences { @@ -1295,8 +1317,8 @@ func validateChildObjectsInPipelineRunStatus(ctx context.Context, prs v1beta1.Pi } // filterTaskRunsForPipelineRunStatus returns TaskRuns owned by the PipelineRun. -func filterTaskRunsForPipelineRunStatus(logger *zap.SugaredLogger, pr *v1beta1.PipelineRun, trs []*v1beta1.TaskRun) []*v1beta1.TaskRun { - var ownedTaskRuns []*v1beta1.TaskRun +func filterTaskRunsForPipelineRunStatus(logger *zap.SugaredLogger, pr *v1.PipelineRun, trs []*v1.TaskRun) []*v1.TaskRun { + var ownedTaskRuns []*v1.TaskRun for _, tr := range trs { // Only process TaskRuns that are owned by this PipelineRun. @@ -1312,7 +1334,7 @@ func filterTaskRunsForPipelineRunStatus(logger *zap.SugaredLogger, pr *v1beta1.P } // filterCustomRunsForPipelineRunStatus filters the given slice of customRuns, returning information only those owned by the given PipelineRun. -func filterCustomRunsForPipelineRunStatus(logger *zap.SugaredLogger, pr *v1beta1.PipelineRun, customRuns []*v1beta1.CustomRun) ([]string, []string, []schema.GroupVersionKind, []*v1beta1.CustomRunStatus) { +func filterCustomRunsForPipelineRunStatus(logger *zap.SugaredLogger, pr *v1.PipelineRun, customRuns []*v1beta1.CustomRun) ([]string, []string, []schema.GroupVersionKind, []*v1beta1.CustomRunStatus) { var names []string var taskLabels []string var gvks []schema.GroupVersionKind @@ -1338,7 +1360,7 @@ func filterCustomRunsForPipelineRunStatus(logger *zap.SugaredLogger, pr *v1beta1 return names, taskLabels, gvks, statuses } -func updatePipelineRunStatusFromChildRefs(logger *zap.SugaredLogger, pr *v1beta1.PipelineRun, trs []*v1beta1.TaskRun, customRuns []*v1beta1.CustomRun) { +func updatePipelineRunStatusFromChildRefs(logger *zap.SugaredLogger, pr *v1.PipelineRun, trs []*v1.TaskRun, customRuns []*v1beta1.CustomRun) { // If no TaskRun or CustomRun was found, nothing to be done. We never remove child references from the status. // We do still return an empty map of TaskRun/Run names keyed by PipelineTask name for later functions. if len(trs) == 0 && len(customRuns) == 0 { @@ -1346,7 +1368,7 @@ func updatePipelineRunStatusFromChildRefs(logger *zap.SugaredLogger, pr *v1beta1 } // Map PipelineTask names to TaskRun child references that were already in the status - childRefByName := make(map[string]*v1beta1.ChildStatusReference) + childRefByName := make(map[string]*v1.ChildStatusReference) for i := range pr.Status.ChildReferences { childRefByName[pr.Status.ChildReferences[i].Name] = &pr.Status.ChildReferences[i] @@ -1365,9 +1387,9 @@ func updatePipelineRunStatusFromChildRefs(logger *zap.SugaredLogger, pr *v1beta1 logger.Infof("Found a TaskRun %s that was missing from the PipelineRun status", tr.Name) // Since this was recovered now, add it to the map, or it might be overwritten - childRefByName[tr.Name] = &v1beta1.ChildStatusReference{ + childRefByName[tr.Name] = &v1.ChildStatusReference{ TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), + APIVersion: v1.SchemeGroupVersion.String(), Kind: taskRun, }, Name: tr.Name, @@ -1391,7 +1413,7 @@ func updatePipelineRunStatusFromChildRefs(logger *zap.SugaredLogger, pr *v1beta1 logger.Infof("Found a %s %s that was missing from the PipelineRun status", gvk.Kind, name) // Since this was recovered now, add it to the map, or it might be overwritten - childRefByName[name] = &v1beta1.ChildStatusReference{ + childRefByName[name] = &v1.ChildStatusReference{ TypeMeta: runtime.TypeMeta{ APIVersion: gvk.GroupVersion().String(), Kind: gvk.Kind, @@ -1402,7 +1424,7 @@ func updatePipelineRunStatusFromChildRefs(logger *zap.SugaredLogger, pr *v1beta1 } } - var newChildRefs []v1beta1.ChildStatusReference + var newChildRefs []v1.ChildStatusReference for k := range childRefByName { newChildRefs = append(newChildRefs, *childRefByName[k]) } @@ -1410,7 +1432,7 @@ func updatePipelineRunStatusFromChildRefs(logger *zap.SugaredLogger, pr *v1beta1 } // conditionFromVerificationResult returns the ConditionTrustedResourcesVerified condition based on the VerificationResult, err is returned when the VerificationResult type is VerificationError -func conditionFromVerificationResult(verificationResult *trustedresources.VerificationResult, pr *v1beta1.PipelineRun, resourceName string) (*apis.Condition, error) { +func conditionFromVerificationResult(verificationResult *trustedresources.VerificationResult, pr *v1.PipelineRun, resourceName string) (*apis.Condition, error) { var condition *apis.Condition var err error switch verificationResult.VerificationResultType { diff --git a/pkg/reconciler/pipelinerun/pipelinerun_test.go b/pkg/reconciler/pipelinerun/pipelinerun_test.go index 593fb099b39..e212055cf79 100644 --- a/pkg/reconciler/pipelinerun/pipelinerun_test.go +++ b/pkg/reconciler/pipelinerun/pipelinerun_test.go @@ -36,6 +36,7 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" resolutionv1beta1 "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" @@ -87,18 +88,18 @@ var ( ignoreResourceVersion = cmpopts.IgnoreFields(metav1.ObjectMeta{}, "ResourceVersion") ignoreTypeMeta = cmpopts.IgnoreFields(metav1.TypeMeta{}, "Kind", "APIVersion") ignoreLastTransitionTime = cmpopts.IgnoreFields(apis.Condition{}, "LastTransitionTime.Inner.Time") - ignoreStartTime = cmpopts.IgnoreFields(v1beta1.PipelineRunStatusFields{}, "StartTime") - ignoreCompletionTime = cmpopts.IgnoreFields(v1beta1.PipelineRunStatusFields{}, "CompletionTime") - ignoreFinallyStartTime = cmpopts.IgnoreFields(v1beta1.PipelineRunStatusFields{}, "FinallyStartTime") + ignoreStartTime = cmpopts.IgnoreFields(v1.PipelineRunStatusFields{}, "StartTime") + ignoreCompletionTime = cmpopts.IgnoreFields(v1.PipelineRunStatusFields{}, "CompletionTime") + ignoreFinallyStartTime = cmpopts.IgnoreFields(v1.PipelineRunStatusFields{}, "FinallyStartTime") trueb = true - simpleHelloWorldTask = &v1beta1.Task{ObjectMeta: baseObjectMeta("hello-world", "foo")} - simpleSomeTask = &v1beta1.Task{ObjectMeta: baseObjectMeta("some-task", "foo")} - simpleHelloWorldPipeline = &v1beta1.Pipeline{ + simpleHelloWorldTask = &v1.Task{ObjectMeta: baseObjectMeta("hello-world", "foo")} + simpleSomeTask = &v1.Task{ObjectMeta: baseObjectMeta("some-task", "foo")} + simpleHelloWorldPipeline = &v1.Pipeline{ ObjectMeta: baseObjectMeta("test-pipeline", "foo"), - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "hello-world-1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "hello-world", }, }}, @@ -161,7 +162,7 @@ func initializePipelineRunControllerAssets(t *testing.T, d test.Data, opts pipel // validateTaskRunsCount ensure that there are `expectedCount` TaskRuns // It will fatal the test if the number of TaskRuns is not `expectedCount` -func validateTaskRunsCount(t *testing.T, taskRuns map[string]*v1beta1.TaskRun, expectedCount int) { +func validateTaskRunsCount(t *testing.T, taskRuns map[string]*v1.TaskRun, expectedCount int) { t.Helper() actualCount := len(taskRuns) @@ -172,7 +173,7 @@ func validateTaskRunsCount(t *testing.T, taskRuns map[string]*v1beta1.TaskRun, e // getTaskRunByName retrieves the TaskRun with the specified name from the given TaskRuns // It will fatal the test if the name does not exist -func getTaskRunByName(t *testing.T, taskRuns map[string]*v1beta1.TaskRun, expectedName string) *v1beta1.TaskRun { +func getTaskRunByName(t *testing.T, taskRuns map[string]*v1.TaskRun, expectedName string) *v1.TaskRun { t.Helper() tr, exist := taskRuns[expectedName] @@ -185,7 +186,7 @@ func getTaskRunByName(t *testing.T, taskRuns map[string]*v1beta1.TaskRun, expect // getTaskRunsForPipelineRun returns the set of TaskRuns associated with the input PipelineRun. // It will fatal the test if an error occurred. -func getTaskRunsForPipelineRun(ctx context.Context, t *testing.T, clients test.Clients, namespace string, prName string) map[string]*v1beta1.TaskRun { +func getTaskRunsForPipelineRun(ctx context.Context, t *testing.T, clients test.Clients, namespace string, prName string) map[string]*v1.TaskRun { t.Helper() labelSelector := pipeline.PipelineRunLabelKey + "=" + prName return getTaskRuns(ctx, t, clients, namespace, labelSelector) @@ -193,7 +194,7 @@ func getTaskRunsForPipelineRun(ctx context.Context, t *testing.T, clients test.C // getTaskRunsForPipelineTask returns the set of TaskRuns associated with the input PipelineRun and PipelineTask // It will fatal the test if an error occurred. -func getTaskRunsForPipelineTask(ctx context.Context, t *testing.T, clients test.Clients, namespace string, prName string, ptLabel string) map[string]*v1beta1.TaskRun { +func getTaskRunsForPipelineTask(ctx context.Context, t *testing.T, clients test.Clients, namespace string, prName string, ptLabel string) map[string]*v1.TaskRun { t.Helper() labelSelector := pipeline.PipelineRunLabelKey + "=" + prName + "," + pipeline.PipelineTaskLabelKey + "=" + ptLabel return getTaskRuns(ctx, t, clients, namespace, labelSelector) @@ -201,19 +202,19 @@ func getTaskRunsForPipelineTask(ctx context.Context, t *testing.T, clients test. // getTaskRuns returns the set of TaskRuns matching the label selector. // It will fatal the test if an error occurred. -func getTaskRuns(ctx context.Context, t *testing.T, clients test.Clients, namespace string, labelSelector string) map[string]*v1beta1.TaskRun { +func getTaskRuns(ctx context.Context, t *testing.T, clients test.Clients, namespace string, labelSelector string) map[string]*v1.TaskRun { t.Helper() opt := metav1.ListOptions{ LabelSelector: labelSelector, } - taskRuns, err := clients.Pipeline.TektonV1beta1().TaskRuns(namespace).List(ctx, opt) + taskRuns, err := clients.Pipeline.TektonV1().TaskRuns(namespace).List(ctx, opt) if err != nil { t.Fatalf("failed to list taskruns, %s", err) } - outputs := make(map[string]*v1beta1.TaskRun) + outputs := make(map[string]*v1.TaskRun) for _, item := range taskRuns.Items { tr := item outputs[tr.Name] = &tr @@ -230,7 +231,7 @@ func TestReconcile(t *testing.T) { prName := "test-pipeline-run-success" trName := "test-pipeline-run-success-unit-test-1" - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-success namespace: foo @@ -240,9 +241,10 @@ spec: value: somethingmorefun pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa `)} - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -302,8 +304,8 @@ spec: kind: ClusterTask name: unit-test-cluster-task `)} - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: unit-test-task namespace: foo @@ -390,7 +392,7 @@ spec: } // This PipelineRun is in progress now and the status should reflect that - checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1beta1.PipelineRunReasonRunning.String()) + checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1.PipelineRunReasonRunning.String()) tr1Name := "test-pipeline-run-success-unit-test-1" tr2Name := "test-pipeline-run-success-unit-test-cluster-task" @@ -432,7 +434,7 @@ spec: name: test-pipelinerun-custom-task namespace: namespace ownerReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 blockOwnerDeletion: true controller: true kind: PipelineRun @@ -450,15 +452,15 @@ spec: tcs := []struct { name string - pr *v1beta1.PipelineRun + pr *v1.PipelineRun wantRun *v1beta1.CustomRun }{{ name: "simple custom task with taskRef", - pr: parse.MustParseV1beta1PipelineRun(t, simpleCustomTaskPRYAML), + pr: parse.MustParseV1PipelineRun(t, simpleCustomTaskPRYAML), wantRun: parse.MustParseCustomRun(t, simpleCustomTaskWantRunYAML), }, { name: "simple custom task with taskSpec", - pr: parse.MustParseV1beta1PipelineRun(t, ` + pr: parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipelinerun namespace: namespace @@ -503,7 +505,7 @@ spec: `), }, { name: "custom task with workspace", - pr: parse.MustParseV1beta1PipelineRun(t, ` + pr: parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipelinerun namespace: namespace @@ -548,7 +550,7 @@ spec: for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{tc.pr}, + PipelineRuns: []*v1.PipelineRun{tc.pr}, } prt := newPipelineRunTest(t, d) defer prt.Cancel() @@ -567,12 +569,12 @@ spec: // Check that the expected CustomRun was created. actual := actions[0].(ktesting.CreateAction).GetObject() // Ignore the TypeMeta field, because parse.MustParseCustomRun automatically populates it but the "actual" CustomRun won't have it. - if d := cmp.Diff(tc.wantRun, actual, cmpopts.IgnoreFields(v1beta1.CustomRun{}, "TypeMeta")); d != "" { + if d := cmp.Diff(tc.wantRun, actual, cmpopts.IgnoreFields(v1beta1.CustomRun{}, "TypeMeta"), cmpopts.EquateEmpty()); d != "" { t.Errorf("expected to see CustomRun created: %s", diff.PrintWantGot(d)) } // This PipelineRun is in progress now and the status should reflect that - checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1beta1.PipelineRunReasonRunning.String()) + checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1.PipelineRunReasonRunning.String()) verifyCustomRunOrRunStatusesCount(t, customRun, reconciledRun.Status, 1) verifyCustomRunOrRunStatusesNames(t, customRun, reconciledRun.Status, tc.wantRun.Name) @@ -589,8 +591,8 @@ func TestReconcile_PipelineSpecTaskSpec(t *testing.T) { prName := "test-pipeline-run-success" trName := "test-pipeline-run-success-unit-test-task-spec" - prs := []*v1beta1.PipelineRun{ - parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{ + parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-success namespace: foo @@ -599,8 +601,8 @@ spec: name: test-pipeline `), } - ps := []*v1beta1.Pipeline{ - parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{ + parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -633,7 +635,7 @@ spec: validateTaskRunsCount(t, taskRuns, 1) actual := getTaskRunByName(t, taskRuns, trName) - expectedTaskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + expectedTaskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` spec: taskSpec: steps: @@ -645,7 +647,7 @@ spec: expectedTaskRun.ObjectMeta = taskRunObjectMeta(trName, "foo", "test-pipeline-run-success", "test-pipeline", "unit-test-task-spec", false) // ignore IgnoreUnexported ignore both after and before steps fields - if d := cmp.Diff(expectedTaskRun, actual, ignoreTypeMeta, ignoreResourceVersion, cmpopts.SortSlices(func(x, y v1beta1.TaskSpec) bool { return len(x.Steps) == len(y.Steps) })); d != "" { + if d := cmp.Diff(expectedTaskRun, actual, ignoreTypeMeta, ignoreResourceVersion, cmpopts.SortSlices(func(x, y v1.TaskSpec) bool { return len(x.Steps) == len(y.Steps) })); d != "" { t.Errorf("expected to see TaskRun %v created. Diff %s", expectedTaskRun, diff.PrintWantGot(d)) } @@ -661,13 +663,13 @@ spec: // TestReconcile_InvalidPipelineRuns runs "Reconcile" on several PipelineRuns that are invalid in different ways. // It verifies that reconcile fails, how it fails and which events are triggered. func TestReconcile_InvalidPipelineRuns(t *testing.T) { - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: a-task-that-exists namespace: foo `), - parse.MustParseV1beta1Task(t, ` + parse.MustParseV1Task(t, ` metadata: name: a-task-that-needs-params namespace: foo @@ -675,7 +677,7 @@ spec: params: - name: some-param `), - parse.MustParseV1beta1Task(t, fmt.Sprintf(` + parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: a-task-that-needs-array-params namespace: foo @@ -683,8 +685,8 @@ spec: params: - name: some-param type: %s -`, v1beta1.ParamTypeArray)), - parse.MustParseV1beta1Task(t, fmt.Sprintf(` +`, v1.ParamTypeArray)), + parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: a-task-that-needs-object-params namespace: foo @@ -695,10 +697,10 @@ spec: properties: key1: {} key2: {} -`, v1beta1.ParamTypeObject)), +`, v1.ParamTypeObject)), } - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: pipeline-missing-tasks namespace: foo @@ -708,7 +710,7 @@ spec: taskRef: name: sometask `), - parse.MustParseV1beta1Pipeline(t, ` + parse.MustParseV1Pipeline(t, ` metadata: name: a-pipeline-without-params namespace: foo @@ -718,7 +720,7 @@ spec: taskRef: name: a-task-that-needs-params `), - parse.MustParseV1beta1Pipeline(t, ` + parse.MustParseV1Pipeline(t, ` metadata: name: a-pipeline-that-should-be-caught-by-admission-control namespace: foo @@ -728,7 +730,7 @@ spec: taskRef: name: a-task-that-exists `), - parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: a-pipeline-with-array-params namespace: foo @@ -740,8 +742,8 @@ spec: - name: some-task taskRef: name: a-task-that-needs-array-params -`, v1beta1.ParamTypeArray)), - parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` +`, v1.ParamTypeArray)), + parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: a-pipeline-with-array-indexing-params namespace: foo @@ -756,8 +758,8 @@ spec: params: - name: param value: "$(params.some-param[2])" -`, v1beta1.ParamTypeArray)), - parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` +`, v1.ParamTypeArray)), + parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: a-pipeline-with-object-params namespace: foo @@ -772,19 +774,19 @@ spec: - name: some-task taskRef: name: a-task-that-needs-object-params -`, v1beta1.ParamTypeObject)), +`, v1.ParamTypeObject)), } for _, tc := range []struct { name string - pipelineRun *v1beta1.PipelineRun + pipelineRun *v1.PipelineRun reason string hasNoDefaultLabels bool permanentError bool wantEvents []string }{{ name: "invalid-pipeline-shd-be-stop-reconciling", - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: invalid-pipeline namespace: foo @@ -801,7 +803,7 @@ spec: }, }, { name: "invalid-pipeline-run-missing-tasks-shd-stop-reconciling", - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pipelinerun-missing-tasks namespace: foo @@ -817,7 +819,7 @@ spec: }, }, { name: "invalid-pipeline-run-params-dont-exist-shd-stop-reconciling", - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline-params-dont-exist namespace: foo @@ -833,7 +835,7 @@ spec: }, }, { name: "invalid-pipeline-mismatching-parameter-types", - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline-mismatching-param-type namespace: foo @@ -852,7 +854,7 @@ spec: }, }, { name: "invalid-pipeline-missing-object-keys", - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline-missing-object-param-keys namespace: foo @@ -872,7 +874,7 @@ spec: }, }, { name: "invalid-pipeline-array-index-out-of-bound", - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline-param-array-out-of-bound namespace: foo @@ -893,7 +895,7 @@ spec: }, }, { name: "invalid-embedded-pipeline-bad-name-shd-stop-reconciling", - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: embedded-pipeline-invalid namespace: foo @@ -912,7 +914,7 @@ spec: }, }, { name: "invalid-embedded-pipeline-mismatching-parameter-types", - pipelineRun: parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun: parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: embedded-pipeline-mismatching-param-type namespace: foo @@ -928,7 +930,7 @@ spec: params: - name: some-param value: stringval -`, v1beta1.ParamTypeArray)), +`, v1.ParamTypeArray)), reason: ReasonParameterTypeMismatch, permanentError: true, wantEvents: []string{ @@ -937,7 +939,7 @@ spec: }, }, { name: "invalid-pipeline-run-missing-params-shd-stop-reconciling", - pipelineRun: parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun: parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: pipelinerun-missing-params namespace: foo @@ -950,7 +952,7 @@ spec: - name: some-task taskRef: name: a-task-that-needs-params -`, v1beta1.ParamTypeString)), +`, v1.ParamTypeString)), reason: ReasonParameterMissing, permanentError: true, wantEvents: []string{ @@ -959,7 +961,7 @@ spec: }, }, { name: "invalid-pipeline-with-invalid-dag-graph", - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline-invalid-dag-graph namespace: foo @@ -979,7 +981,7 @@ spec: }, }, { name: "invalid-pipeline-with-invalid-final-tasks-graph", - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline-invalid-final-graph namespace: foo @@ -1008,7 +1010,7 @@ spec: cms := []*corev1.ConfigMap{withEnabledAlphaAPIFields(newFeatureFlagsConfigMap())} d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{tc.pipelineRun}, + PipelineRuns: []*v1.PipelineRun{tc.pipelineRun}, Pipelines: ps, Tasks: ts, ConfigMaps: cms, @@ -1050,7 +1052,7 @@ spec: } func TestMissingResultWhenStepErrorIsIgnored(t *testing.T) { - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-missing-results namespace: foo @@ -1089,7 +1091,7 @@ spec: script: 'exit 0' `)} - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-missing-results-task1", "foo", "test-pipeline-missing-results", "test-pipeline", "task1", true), ` @@ -1100,13 +1102,13 @@ status: conditions: - status: "True" type: Succeeded - taskResults: + results: - name: result1 value: 123 `)} expectedPipelineRun := - parse.MustParseV1beta1PipelineRun(t, ` + parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-missing-results namespace: foo @@ -1184,7 +1186,7 @@ status: status: "False" type: Succeeded childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: test-pipeline-missing-results-task1 pipelineTaskName: task1 @@ -1276,14 +1278,15 @@ status: - status: "False" type: Succeeded `, customRunName))} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa status: conditions: - lastTransitionTime: null @@ -1295,40 +1298,40 @@ status: - name: test-pipeline-run-completed-hello-world-task-run pipelineTaskName: hello-world-1 kind: TaskRun - apiVersion: tekton.dev/v1beta1 + apiVersion: tekton.dev/v1 - name: test-pipeline-run-completed-hello-world-custom-run pipelineTaskName: hello-world-1 kind: CustomRun - apiVersion: tekton.dev/v1beta1 + apiVersion: tekton.dev/v1 `, pipelineRunName))} - ps := []*v1beta1.Pipeline{simpleHelloWorldPipeline} - ts := []*v1beta1.Task{simpleHelloWorldTask} - trs := []*v1beta1.TaskRun{createHelloWorldTaskRunWithStatus(t, taskRunName, "foo", + ps := []*v1.Pipeline{simpleHelloWorldPipeline} + ts := []*v1.Task{simpleHelloWorldTask} + trs := []*v1.TaskRun{createHelloWorldTaskRunWithStatus(t, taskRunName, "foo", pipelineRunName, "test-pipeline", "", apis.Condition{ Type: apis.ConditionSucceeded, })} - expectedChildReferences := []v1beta1.ChildStatusReference{{ + expectedChildReferences := []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: taskRunName, PipelineTaskName: "hello-world-1", }, { TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), + APIVersion: v1.SchemeGroupVersion.String(), Kind: customRun, }, Name: customRunName, PipelineTaskName: "hello-world-1", }} - expectedTaskRunsStatus := make(map[string]*v1beta1.PipelineRunTaskRunStatus) - expectedTaskRunsStatus[taskRunName] = &v1beta1.PipelineRunTaskRunStatus{ + expectedTaskRunsStatus := make(map[string]*v1.PipelineRunTaskRunStatus) + expectedTaskRunsStatus[taskRunName] = &v1.PipelineRunTaskRunStatus{ PipelineTaskName: "hello-world-1", - Status: &v1beta1.TaskRunStatus{ + Status: &v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: []apis.Condition{{Type: apis.ConditionSucceeded}}, }, @@ -1403,22 +1406,22 @@ func withoutAffinityAssistant(cm *corev1.ConfigMap) *corev1.ConfigMap { func TestReconcileOnCancelledPipelineRun(t *testing.T) { testCases := []struct { name string - specStatus v1beta1.PipelineRunSpecStatus + specStatus v1.PipelineRunSpecStatus reason string }{ { name: "cancelled", - specStatus: v1beta1.PipelineRunSpecStatusCancelled, + specStatus: v1.PipelineRunSpecStatusCancelled, reason: ReasonCancelled, }, } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - prs := []*v1beta1.PipelineRun{createCancelledPipelineRun(t, "test-pipeline-run-cancelled", tc.specStatus)} - ps := []*v1beta1.Pipeline{simpleHelloWorldPipeline} - ts := []*v1beta1.Task{simpleHelloWorldTask} - trs := []*v1beta1.TaskRun{createHelloWorldTaskRun(t, "test-pipeline-run-cancelled-hello-world", "foo", + prs := []*v1.PipelineRun{createCancelledPipelineRun(t, "test-pipeline-run-cancelled", tc.specStatus)} + ps := []*v1.Pipeline{simpleHelloWorldPipeline} + ts := []*v1.Task{simpleHelloWorldTask} + trs := []*v1.TaskRun{createHelloWorldTaskRun(t, "test-pipeline-run-cancelled-hello-world", "foo", "test-pipeline-run-cancelled", "test-pipeline")} cms := []*corev1.ConfigMap{newFeatureFlagsConfigMap()} @@ -1461,7 +1464,7 @@ func TestReconcileForCustomTaskWithPipelineTaskTimedOut(t *testing.T) { // TestReconcileForCustomTaskWithPipelineTaskTimedOut runs "Reconcile" on a PipelineRun. // It verifies that reconcile is successful, and the individual // custom task which has timed out, is patched as cancelled. - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: test @@ -1473,14 +1476,15 @@ spec: kind: Example `)} prName := "test-pipeline-run-custom-task-with-timeout" - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-custom-task-with-timeout namespace: test spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa `)} runs := []*v1beta1.CustomRun{mustParseCustomRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-custom-task-with-timeout-hello-world-1", "test", "test-pipeline-run-custom-task-with-timeout", @@ -1547,16 +1551,13 @@ func TestReconcileForCustomTaskWithPipelineRunTimedOut(t *testing.T) { for _, tc := range []struct { name string timeout *metav1.Duration - timeouts *v1beta1.TimeoutFields + timeouts *v1.TimeoutFields }{{ - name: "spec.Timeout", - timeout: &metav1.Duration{Duration: 12 * time.Hour}, - }, { name: "spec.Timeouts.Pipeline", - timeouts: &v1beta1.TimeoutFields{Pipeline: &metav1.Duration{Duration: 12 * time.Hour}}, + timeouts: &v1.TimeoutFields{Pipeline: &metav1.Duration{Duration: 12 * time.Hour}}, }} { t.Run(tc.name, func(*testing.T) { - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: test @@ -1569,14 +1570,15 @@ spec: `)} prName := "test-pipeline-run-custom-task" - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-custom-task namespace: test spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa status: conditions: - message: running... @@ -1590,7 +1592,7 @@ status: kind: CustomRun apiVersion: example.dev/v0 `)} - prs[0].Spec.Timeout = tc.timeout + prs[0].Spec.Timeouts = tc.timeouts customRuns := []*v1beta1.CustomRun{mustParseCustomRunWithObjectMeta(t, @@ -1673,9 +1675,9 @@ status: func TestReconcileOnCancelledRunFinallyPipelineRun(t *testing.T) { // TestReconcileOnCancelledRunFinallyPipelineRun runs "Reconcile" on a PipelineRun that has been gracefully cancelled. // It verifies that reconcile is successful, the pipeline status updated and events generated. - prs := []*v1beta1.PipelineRun{createCancelledPipelineRun(t, "test-pipeline-run-cancelled-run-finally", v1beta1.PipelineRunSpecStatusCancelledRunFinally)} - ps := []*v1beta1.Pipeline{helloWorldPipelineWithRunAfter(t)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + prs := []*v1.PipelineRun{createCancelledPipelineRun(t, "test-pipeline-run-cancelled-run-finally", v1.PipelineRunSpecStatusCancelledRunFinally)} + ps := []*v1.Pipeline{helloWorldPipelineWithRunAfter(t)} + ts := []*v1.Task{simpleHelloWorldTask} cms := []*corev1.ConfigMap{newFeatureFlagsConfigMap()} d := test.Data{ PipelineRuns: prs, @@ -1703,12 +1705,12 @@ func TestReconcileOnCancelledRunFinallyPipelineRun(t *testing.T) { // There should be no task runs triggered for the pipeline tasks verifyTaskRunStatusesCount(t, reconciledRun.Status, 0) - expectedSkippedTasks := []v1beta1.SkippedTask{{ + expectedSkippedTasks := []v1.SkippedTask{{ Name: "hello-world-1", - Reason: v1beta1.GracefullyCancelledSkip, + Reason: v1.GracefullyCancelledSkip, }, { Name: "hello-world-2", - Reason: v1beta1.GracefullyCancelledSkip, + Reason: v1.GracefullyCancelledSkip, }} if d := cmp.Diff(expectedSkippedTasks, reconciledRun.Status.SkippedTasks); d != "" { @@ -1721,9 +1723,9 @@ func TestReconcileOnCancelledRunFinallyPipelineRun(t *testing.T) { // that reconcile is successful, final tasks run, the pipeline status updated // and events generated. func TestReconcileOnCancelledRunFinallyPipelineRunWithFinalTask(t *testing.T) { - prs := []*v1beta1.PipelineRun{createCancelledPipelineRun(t, "test-pipeline-run-cancelled-run-finally", v1beta1.PipelineRunSpecStatusCancelledRunFinally)} - ps := []*v1beta1.Pipeline{ - parse.MustParseV1beta1Pipeline(t, ` + prs := []*v1.PipelineRun{createCancelledPipelineRun(t, "test-pipeline-run-cancelled-run-finally", v1.PipelineRunSpecStatusCancelledRunFinally)} + ps := []*v1.Pipeline{ + parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -1743,7 +1745,7 @@ spec: name: some-task `), } - ts := []*v1beta1.Task{ + ts := []*v1.Task{ simpleHelloWorldTask, simpleSomeTask, } @@ -1780,23 +1782,24 @@ spec: func TestReconcileOnCancelledRunFinallyPipelineRunWithRunningFinalTask(t *testing.T) { // TestReconcileOnCancelledRunFinallyPipelineRunWithRunningFinalTask runs "Reconcile" on a PipelineRun that has been gracefully cancelled. // It verifies that reconcile is successful and completed tasks and running final tasks are left untouched. - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-cancelled-run-finally namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa status: CancelledRunFinally status: startTime: "2022-01-01T00:00:00Z" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: test-pipeline-run-cancelled-run-finally-final-task pipelineTaskName: final-task-1 - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: test-pipeline-run-cancelled-run-finally-hello-world pipelineTaskName: hello-world-1 @@ -1806,7 +1809,7 @@ status: status: "True" type: Succeeded `)} - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -1820,11 +1823,11 @@ spec: taskRef: name: hello-world `)} - ts := []*v1beta1.Task{ + ts := []*v1.Task{ simpleHelloWorldTask, simpleSomeTask, } - trs := []*v1beta1.TaskRun{ + trs := []*v1.TaskRun{ createHelloWorldTaskRunWithStatus(t, "test-pipeline-run-cancelled-run-finally-hello-world", "foo", "test-pipeline-run-cancelled-run-finally", "test-pipeline", "my-pod-name", apis.Condition{ @@ -1878,19 +1881,19 @@ func TestReconcileOnCancelledRunFinallyPipelineRunWithFinalTaskAndRetries(t *tes // TestReconcileOnCancelledRunFinallyPipelineRunWithFinalTaskAndRetries runs "Reconcile" on a PipelineRun that has // been gracefully cancelled. It verifies that reconcile is successful, the pipeline status updated and events generated. // Pipeline has a DAG task "hello-world-1" and Finally task "hello-world-2" - ps := []*v1beta1.Pipeline{{ + ps := []*v1.Pipeline{{ ObjectMeta: baseObjectMeta("test-pipeline", "foo"), - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "hello-world-1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "hello-world", }, Retries: 2, }}, - Finally: []v1beta1.PipelineTask{{ + Finally: []v1.PipelineTask{{ Name: "hello-world-2", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "hello-world", }, }}, @@ -1899,37 +1902,39 @@ func TestReconcileOnCancelledRunFinallyPipelineRunWithFinalTaskAndRetries(t *tes // PipelineRun has been gracefully cancelled, and it has a TaskRun for DAG task "hello-world-1" that has failed // with reason of cancellation - prs := []*v1beta1.PipelineRun{{ + prs := []*v1.PipelineRun{{ ObjectMeta: baseObjectMeta("test-pipeline-run-cancelled-run-finally", "foo"), - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{Name: "test-pipeline"}, - ServiceAccountName: "test-sa", - Status: v1beta1.PipelineRunSpecStatusCancelledRunFinally, + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{Name: "test-pipeline"}, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "test-sa", + }, + Status: v1.PipelineRunSpecStatusCancelledRunFinally, }, - Status: v1beta1.PipelineRunStatus{ - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{}, + Status: v1.PipelineRunStatus{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{}, }, }} - prs[0].Status.ChildReferences = append(prs[0].Status.ChildReferences, v1beta1.ChildStatusReference{ + prs[0].Status.ChildReferences = append(prs[0].Status.ChildReferences, v1.ChildStatusReference{ TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "test-pipeline-run-cancelled-run-finally-hello-world", PipelineTaskName: "hello-world-1", }) // TaskRun exists for DAG task "hello-world-1" that has failed with reason of cancellation - trs := []*v1beta1.TaskRun{createHelloWorldTaskRunWithStatus(t, "test-pipeline-run-cancelled-run-finally-hello-world", "foo", + trs := []*v1.TaskRun{createHelloWorldTaskRunWithStatus(t, "test-pipeline-run-cancelled-run-finally-hello-world", "foo", "test-pipeline-run-cancelled-run-finally", "test-pipeline", "my-pod-name", apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, - Reason: v1beta1.TaskRunSpecStatusCancelled, + Reason: v1.TaskRunSpecStatusCancelled, })} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} cms := []*corev1.ConfigMap{newFeatureFlagsConfigMap()} d := test.Data{ @@ -1959,13 +1964,13 @@ func TestReconcileOnCancelledRunFinallyPipelineRunWithFinalTaskAndRetries(t *tes } func TestReconcileTaskResolutionError(t *testing.T) { - ts := []*v1beta1.Task{ + ts := []*v1.Task{ simpleHelloWorldTask, } ptName := "hello-world-1" prName := "test-pipeline-fails-task-resolution" - prs := []*v1beta1.PipelineRun{ - parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + prs := []*v1.PipelineRun{ + parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -1983,10 +1988,10 @@ status: - name: %s%s pipelineTaskName: %s kind: TaskRun -`, prName, v1beta1.PipelineRunSpecStatusCancelledRunFinally, ptName, prName, ptName)), +`, prName, v1.PipelineRunSpecStatusCancelledRunFinally, ptName, prName, ptName)), } - trs := []*v1beta1.TaskRun{ + trs := []*v1.TaskRun{ getTaskRun( t, "test-pipeline-fails-task-resolutionhello-world-1", @@ -1998,7 +2003,7 @@ status: } d := test.Data{ PipelineRuns: prs, - Pipelines: []*v1beta1.Pipeline{simpleHelloWorldPipeline}, + Pipelines: []*v1.Pipeline{simpleHelloWorldPipeline}, Tasks: ts, TaskRuns: trs, ConfigMaps: []*corev1.ConfigMap{}, @@ -2023,7 +2028,7 @@ status: } // Check that the PipelineRun is still running with correct error message - reconciledRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Get(testAssets.Ctx, "test-pipeline-fails-task-resolution", metav1.GetOptions{}) + reconciledRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Get(testAssets.Ctx, "test-pipeline-fails-task-resolution", metav1.GetOptions{}) if err != nil { t.Fatalf("Somehow had error getting reconciled run out of fake client: %s", err) } @@ -2055,21 +2060,22 @@ metadata: spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa status: %s status: - startTime: %s`, v1beta1.PipelineRunSpecStatusStoppedRunFinally, now.Format(time.RFC3339)) + startTime: %s`, v1.PipelineRunSpecStatusStoppedRunFinally, now.Format(time.RFC3339)) testCases := []struct { name string - pipeline *v1beta1.Pipeline - taskRuns []*v1beta1.TaskRun - initialChildReferences []v1beta1.ChildStatusReference + pipeline *v1.Pipeline + taskRuns []*v1.TaskRun + initialChildReferences []v1.ChildStatusReference expectedEvents []string hasNilCompletionTime bool isFailed bool childRefInStatusCount int - skippedTasks []v1beta1.SkippedTask + skippedTasks []v1.SkippedTask }{ { name: "stopped PipelineRun", @@ -2080,11 +2086,11 @@ status: hasNilCompletionTime: false, isFailed: true, childRefInStatusCount: 0, - skippedTasks: []v1beta1.SkippedTask{{Name: "hello-world-1", Reason: v1beta1.GracefullyStoppedSkip}}, + skippedTasks: []v1.SkippedTask{{Name: "hello-world-1", Reason: v1.GracefullyStoppedSkip}}, }, { name: "with running task", pipeline: simpleHelloWorldPipeline, - taskRuns: []*v1beta1.TaskRun{getTaskRun( + taskRuns: []*v1.TaskRun{getTaskRun( t, "test-pipeline-run-stopped-run-finally-hello-world", "test-pipeline-run-stopped-run-finally", @@ -2092,10 +2098,10 @@ status: "hello-world", corev1.ConditionUnknown, )}, - initialChildReferences: []v1beta1.ChildStatusReference{{ + initialChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "test-pipeline-run-stopped-run-finally-hello-world", PipelineTaskName: "hello-world-1", @@ -2108,7 +2114,7 @@ status: }, { name: "with completed task", pipeline: helloWorldPipelineWithRunAfter(t), - taskRuns: []*v1beta1.TaskRun{getTaskRun( + taskRuns: []*v1.TaskRun{getTaskRun( t, "test-pipeline-run-stopped-run-finally-hello-world", "test-pipeline-run-stopped-run-finally", @@ -2116,10 +2122,10 @@ status: "hello-world", corev1.ConditionTrue, )}, - initialChildReferences: []v1beta1.ChildStatusReference{{ + initialChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "test-pipeline-run-stopped-run-finally-hello-world", PipelineTaskName: "hello-world-1", @@ -2129,20 +2135,20 @@ status: hasNilCompletionTime: false, isFailed: true, childRefInStatusCount: 1, - skippedTasks: []v1beta1.SkippedTask{{Name: "hello-world-2", Reason: v1beta1.GracefullyStoppedSkip}}, + skippedTasks: []v1.SkippedTask{{Name: "hello-world-2", Reason: v1.GracefullyStoppedSkip}}, }, } for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - pr := parse.MustParseV1beta1PipelineRun(t, basePRYAML) + pr := parse.MustParseV1PipelineRun(t, basePRYAML) if tc.initialChildReferences != nil { pr.Status.ChildReferences = tc.initialChildReferences } - ps := []*v1beta1.Pipeline{tc.pipeline} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ps := []*v1.Pipeline{tc.pipeline} + ts := []*v1.Task{simpleHelloWorldTask} d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, + PipelineRuns: []*v1.PipelineRun{pr}, Pipelines: ps, Tasks: ts, TaskRuns: tc.taskRuns, @@ -2189,19 +2195,20 @@ status: func TestReconcileOnPendingPipelineRun(t *testing.T) { // TestReconcileOnPendingPipelineRun runs "Reconcile" on a PipelineRun that is pending. // It verifies that reconcile is successful, the pipeline status updated and events generated. - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-pending namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa status: PipelineRunPending `)} - ps := []*v1beta1.Pipeline{simpleHelloWorldPipeline} - var ts []*v1beta1.Task - var trs []*v1beta1.TaskRun + ps := []*v1.Pipeline{simpleHelloWorldPipeline} + var ts []*v1.Task + var trs []*v1.TaskRun d := test.Data{ PipelineRuns: prs, @@ -2215,67 +2222,18 @@ spec: var wantEvents []string reconciledRun, _ := prt.reconcileRun("foo", "test-pipeline-run-pending", wantEvents, false) - checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1beta1.PipelineRunReasonPending.String()) + checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1.PipelineRunReasonPending.String()) if reconciledRun.Status.StartTime != nil { t.Errorf("Start time should be nil, not: %s", reconciledRun.Status.StartTime) } } -func TestReconcileWithTimeoutDeprecated(t *testing.T) { - // TestReconcileWithTimeoutDeprecated runs "Reconcile" on a PipelineRun that has timed out. - // It verifies that reconcile is successful, no TaskRun is created, the PipelineTask is marked as skipped, and the - // pipeline status updated and events generated. - ps := []*v1beta1.Pipeline{simpleHelloWorldPipeline} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` -metadata: - name: test-pipeline-run-with-timeout - namespace: foo -spec: - pipelineRef: - name: test-pipeline - serviceAccountName: test-sa - timeout: 12h0m0s -status: - startTime: "2021-12-31T11:00:00Z" -`)} - ts := []*v1beta1.Task{simpleHelloWorldTask} - - d := test.Data{ - PipelineRuns: prs, - Pipelines: ps, - Tasks: ts, - } - prt := newPipelineRunTest(t, d) - defer prt.Cancel() - - wantEvents := []string{ - "Warning Failed PipelineRun \"test-pipeline-run-with-timeout\" failed to finish within \"12h0m0s\"", - } - reconciledRun, _ := prt.reconcileRun("foo", "test-pipeline-run-with-timeout", wantEvents, false) - - if reconciledRun.Status.CompletionTime == nil { - t.Errorf("Expected a CompletionTime on invalid PipelineRun but was nil") - } - - // The PipelineRun should be timed out. - if reconciledRun.Status.GetCondition(apis.ConditionSucceeded).Reason != "PipelineRunTimeout" { - t.Errorf("Expected PipelineRun to be timed out, but condition reason is %s", reconciledRun.Status.GetCondition(apis.ConditionSucceeded)) - } - - // Check that there is a skipped task for the expected reason - if len(reconciledRun.Status.SkippedTasks) != 1 { - t.Errorf("expected one skipped task, found %d", len(reconciledRun.Status.SkippedTasks)) - } else if reconciledRun.Status.SkippedTasks[0].Reason != v1beta1.PipelineTimedOutSkip { - t.Errorf("expected skipped reason to be '%s', but was '%s", v1beta1.PipelineTimedOutSkip, reconciledRun.Status.SkippedTasks[0].Reason) - } -} - func TestReconcileWithTimeouts_Pipeline(t *testing.T) { // TestReconcileWithTimeouts_Pipeline runs "Reconcile" on a PipelineRun that has timed out. // It verifies that reconcile is successful, no TaskRun is created, the PipelineTask is marked as skipped, and the // pipeline status updated and events generated. - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -2288,14 +2246,15 @@ spec: taskRef: name: hello-world `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-with-timeout namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa timeouts: pipeline: 12h0m0s status: @@ -2305,9 +2264,9 @@ status: pipelineTaskName: hello-world-1 kind: TaskRun `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-with-timeout-hello-world-1", "foo", "test-pipeline-run-with-timeout", + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-with-timeout-hello-world-1", "foo", "test-pipeline-run-with-timeout", "test-pipeline", "hello-world-1", false), ` spec: serviceAccountName: test-sa @@ -2342,20 +2301,20 @@ spec: // Check that there is a skipped task for the expected reason if len(reconciledRun.Status.SkippedTasks) != 1 { t.Errorf("expected one skipped task, found %d", len(reconciledRun.Status.SkippedTasks)) - } else if reconciledRun.Status.SkippedTasks[0].Reason != v1beta1.PipelineTimedOutSkip { - t.Errorf("expected skipped reason to be '%s', but was '%s", v1beta1.PipelineTimedOutSkip, reconciledRun.Status.SkippedTasks[0].Reason) + } else if reconciledRun.Status.SkippedTasks[0].Reason != v1.PipelineTimedOutSkip { + t.Errorf("expected skipped reason to be '%s', but was '%s", v1.PipelineTimedOutSkip, reconciledRun.Status.SkippedTasks[0].Reason) } - updatedTaskRun, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").Get(context.Background(), trs[0].Name, metav1.GetOptions{}) + updatedTaskRun, err := clients.Pipeline.TektonV1().TaskRuns("foo").Get(context.Background(), trs[0].Name, metav1.GetOptions{}) if err != nil { t.Fatalf("error getting updated TaskRun: %#v", err) } - if updatedTaskRun.Spec.Status != v1beta1.TaskRunSpecStatusCancelled { - t.Errorf("expected existing TaskRun Spec.Status to be set to %s, but was %s", v1beta1.TaskRunSpecStatusCancelled, updatedTaskRun.Spec.Status) + if updatedTaskRun.Spec.Status != v1.TaskRunSpecStatusCancelled { + t.Errorf("expected existing TaskRun Spec.Status to be set to %s, but was %s", v1.TaskRunSpecStatusCancelled, updatedTaskRun.Spec.Status) } - if updatedTaskRun.Spec.StatusMessage != v1beta1.TaskRunCancelledByPipelineTimeoutMsg { - t.Errorf("expected existing TaskRun Spec.StatusMessage to be set to %s, but was %s", v1beta1.TaskRunCancelledByPipelineTimeoutMsg, updatedTaskRun.Spec.StatusMessage) + if updatedTaskRun.Spec.StatusMessage != v1.TaskRunCancelledByPipelineTimeoutMsg { + t.Errorf("expected existing TaskRun Spec.StatusMessage to be set to %s, but was %s", v1.TaskRunCancelledByPipelineTimeoutMsg, updatedTaskRun.Spec.StatusMessage) } } @@ -2380,7 +2339,7 @@ func TestReconcileWithTimeoutGreaterThan24h(t *testing.T) { for _, tc := range testCases { startTime := time.Date(2022, time.January, 1, 0, 0, 0, 0, time.UTC).Add(-3 * tc.timeout) t.Run(tc.name, func(t *testing.T) { - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -2393,25 +2352,25 @@ spec: taskRef: name: hello-world `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-with-timeout namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa timeouts: pipeline: 30h0m0s status: startTime: "2021-12-30T00:00:00Z" `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-with-timeout-hello-world-1", "foo", "test-pipeline-run-with-timeout", + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-with-timeout-hello-world-1", "foo", "test-pipeline-run-with-timeout", "test-pipeline", "hello-world-1", false), ` spec: - resources: {} serviceAccountName: test-sa taskRef: name: hello-world @@ -2439,7 +2398,7 @@ spec: t.Fatalf("Expected error: %s Got: %s", tc.wantError, reconcileError) } prt.Test.Logf("Getting reconciled run") - reconciledRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "test-pipeline-run-with-timeout", metav1.GetOptions{}) + reconciledRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "test-pipeline-run-with-timeout", metav1.GetOptions{}) if err != nil { prt.Test.Fatalf("Somehow had error getting reconciled run out of fake client: %s", err) } @@ -2481,7 +2440,7 @@ func TestReconcileWithTimeoutForALongTimeAndEtcdLimit_Pipeline(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -2494,22 +2453,23 @@ spec: taskRef: name: hello-world `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-with-timeout namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa timeouts: pipeline: 12h0m0s status: startTime: "2021-12-30T00:00:00Z" `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-with-timeout-hello-world-1", "foo", "test-pipeline-run-with-timeout", + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-with-timeout-hello-world-1", "foo", "test-pipeline-run-with-timeout", "test-pipeline", "hello-world-1", false), ` spec: resources: {} @@ -2596,7 +2556,7 @@ func TestReconcileWithTimeouts_Tasks(t *testing.T) { // TestReconcileWithTimeouts_Tasks runs "Reconcile" on a PipelineRun with timeouts.tasks configured. // It verifies that reconcile is successful, no TaskRun is created, the PipelineTask is marked as skipped, and the // pipeline status updated and events generated. - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -2609,14 +2569,15 @@ spec: taskRef: name: hello-world `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-with-timeout namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa timeouts: tasks: 2m status: @@ -2626,9 +2587,9 @@ status: pipelineTaskName: hello-world-1 kind: TaskRun `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-with-timeout-hello-world-1", "foo", "test-pipeline-run-with-timeout", + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-with-timeout-hello-world-1", "foo", "test-pipeline-run-with-timeout", "test-pipeline", "hello-world-1", false), ` spec: serviceAccountName: test-sa @@ -2661,27 +2622,27 @@ status: } // The PipelineRun should be running. - if reconciledRun.Status.GetCondition(apis.ConditionSucceeded).Reason != v1beta1.PipelineRunReasonRunning.String() { + if reconciledRun.Status.GetCondition(apis.ConditionSucceeded).Reason != v1.PipelineRunReasonRunning.String() { t.Errorf("Expected PipelineRun to be running, but condition reason is %s", reconciledRun.Status.GetCondition(apis.ConditionSucceeded).Reason) } // Check that there is a skipped task for the expected reason if len(reconciledRun.Status.SkippedTasks) != 1 { t.Errorf("expected one skipped task, found %d", len(reconciledRun.Status.SkippedTasks)) - } else if reconciledRun.Status.SkippedTasks[0].Reason != v1beta1.TasksTimedOutSkip { - t.Errorf("expected skipped reason to be '%s', but was '%s", v1beta1.TasksTimedOutSkip, reconciledRun.Status.SkippedTasks[0].Reason) + } else if reconciledRun.Status.SkippedTasks[0].Reason != v1.TasksTimedOutSkip { + t.Errorf("expected skipped reason to be '%s', but was '%s", v1.TasksTimedOutSkip, reconciledRun.Status.SkippedTasks[0].Reason) } - updatedTaskRun, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").Get(context.Background(), trs[0].Name, metav1.GetOptions{}) + updatedTaskRun, err := clients.Pipeline.TektonV1().TaskRuns("foo").Get(context.Background(), trs[0].Name, metav1.GetOptions{}) if err != nil { t.Fatalf("error getting updated TaskRun: %#v", err) } - if updatedTaskRun.Spec.Status != v1beta1.TaskRunSpecStatusCancelled { - t.Errorf("expected existing TaskRun Spec.Status to be set to %s, but was %s", v1beta1.TaskRunSpecStatusCancelled, updatedTaskRun.Spec.Status) + if updatedTaskRun.Spec.Status != v1.TaskRunSpecStatusCancelled { + t.Errorf("expected existing TaskRun Spec.Status to be set to %s, but was %s", v1.TaskRunSpecStatusCancelled, updatedTaskRun.Spec.Status) } - if updatedTaskRun.Spec.StatusMessage != v1beta1.TaskRunCancelledByPipelineTimeoutMsg { - t.Errorf("expected existing TaskRun Spec.StatusMessage to be set to %s, but was %s", v1beta1.TaskRunCancelledByPipelineTimeoutMsg, updatedTaskRun.Spec.StatusMessage) + if updatedTaskRun.Spec.StatusMessage != v1.TaskRunCancelledByPipelineTimeoutMsg { + t.Errorf("expected existing TaskRun Spec.StatusMessage to be set to %s, but was %s", v1.TaskRunCancelledByPipelineTimeoutMsg, updatedTaskRun.Spec.StatusMessage) } } @@ -2689,7 +2650,7 @@ func TestReconcileWithTimeouts_Finally(t *testing.T) { // TestReconcileWithTimeouts_Finally runs "Reconcile" on a PipelineRun with timeouts.finally configured. // It verifies that reconcile is successful, no TaskRun is created, the PipelineTask is marked as skipped, and the // pipeline status updated and events generated. - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline-with-finally namespace: foo @@ -2706,14 +2667,15 @@ spec: taskRef: name: hello-world `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-with-timeout namespace: foo spec: pipelineRef: name: test-pipeline-with-finally - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa timeouts: finally: 15m status: @@ -2721,7 +2683,7 @@ status: startTime: "2021-12-31T23:40:00Z" childReferences: - name: test-pipeline-run-with-timeout-hello-world - apiVersion: tekton.dev/v1beta1 + apiVersion: tekton.dev/v1 kind: TaskRun pipelineTaskName: task1 status: @@ -2730,7 +2692,7 @@ status: status: "True" type: Succeeded - name: test-pipeline-run-with-timeout-finaltask-1 - apiVersion: tekton.dev/v1beta1 + apiVersion: tekton.dev/v1 kind: TaskRun pipelineTaskName: finaltask-1 status: @@ -2739,8 +2701,8 @@ status: status: "Unknown" type: Succeeded `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} - trs := []*v1beta1.TaskRun{ + ts := []*v1.Task{simpleHelloWorldTask} + trs := []*v1.TaskRun{ getTaskRun( t, "test-pipeline-run-with-timeout-hello-world", @@ -2752,7 +2714,6 @@ status: mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-with-timeout-finaltask-1", "foo", "test-pipeline-run-with-timeout", "test-pipeline", "finaltask-1", false), ` spec: - serviceAccountName: test-sa taskRef: name: hello-world @@ -2778,34 +2739,34 @@ spec: } // The PipelineRun should be running. - if reconciledRun.Status.GetCondition(apis.ConditionSucceeded).Reason != v1beta1.PipelineRunReasonRunning.String() { + if reconciledRun.Status.GetCondition(apis.ConditionSucceeded).Reason != v1.PipelineRunReasonRunning.String() { t.Errorf("Expected PipelineRun to be running, but condition reason is %s", reconciledRun.Status.GetCondition(apis.ConditionSucceeded).Reason) } // Check that there is a skipped task for the expected reason if len(reconciledRun.Status.SkippedTasks) != 1 { t.Errorf("expected one skipped task, found %d", len(reconciledRun.Status.SkippedTasks)) - } else if reconciledRun.Status.SkippedTasks[0].Reason != v1beta1.FinallyTimedOutSkip { - t.Errorf("expected skipped reason to be '%s', but was '%s", v1beta1.FinallyTimedOutSkip, reconciledRun.Status.SkippedTasks[0].Reason) + } else if reconciledRun.Status.SkippedTasks[0].Reason != v1.FinallyTimedOutSkip { + t.Errorf("expected skipped reason to be '%s', but was '%s", v1.FinallyTimedOutSkip, reconciledRun.Status.SkippedTasks[0].Reason) } - updatedTaskRun, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").Get(context.Background(), trs[1].Name, metav1.GetOptions{}) + updatedTaskRun, err := clients.Pipeline.TektonV1().TaskRuns("foo").Get(context.Background(), trs[1].Name, metav1.GetOptions{}) if err != nil { t.Fatalf("error getting updated TaskRun: %#v", err) } - if updatedTaskRun.Spec.Status != v1beta1.TaskRunSpecStatusCancelled { - t.Errorf("expected existing TaskRun Spec.Status to be set to %s, but was %s", v1beta1.TaskRunSpecStatusCancelled, updatedTaskRun.Spec.Status) + if updatedTaskRun.Spec.Status != v1.TaskRunSpecStatusCancelled { + t.Errorf("expected existing TaskRun Spec.Status to be set to %s, but was %s", v1.TaskRunSpecStatusCancelled, updatedTaskRun.Spec.Status) } - if updatedTaskRun.Spec.StatusMessage != v1beta1.TaskRunCancelledByPipelineTimeoutMsg { - t.Errorf("expected existing TaskRun Spec.StatusMessage to be set to %s, but was %s", v1beta1.TaskRunCancelledByPipelineTimeoutMsg, updatedTaskRun.Spec.StatusMessage) + if updatedTaskRun.Spec.StatusMessage != v1.TaskRunCancelledByPipelineTimeoutMsg { + t.Errorf("expected existing TaskRun Spec.StatusMessage to be set to %s, but was %s", v1.TaskRunCancelledByPipelineTimeoutMsg, updatedTaskRun.Spec.StatusMessage) } } func TestReconcileWithoutPVC(t *testing.T) { // TestReconcileWithoutPVC runs "Reconcile" on a PipelineRun that has two unrelated tasks. // It verifies that reconcile is successful and that no PVC is created - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -2819,7 +2780,7 @@ spec: name: hello-world `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run namespace: foo @@ -2827,7 +2788,7 @@ spec: pipelineRef: name: test-pipeline `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} d := test.Data{ PipelineRuns: prs, @@ -2860,15 +2821,15 @@ func TestReconcileCancelledFailsTaskRunCancellation(t *testing.T) { testCases := []struct { name string - specStatus v1beta1.PipelineRunSpecStatus + specStatus v1.PipelineRunSpecStatus }{ { name: "cancelled", - specStatus: v1beta1.PipelineRunSpecStatusCancelled, + specStatus: v1.PipelineRunSpecStatusCancelled, }, { name: "cancelled run finally", - specStatus: v1beta1.PipelineRunSpecStatusCancelledRunFinally, + specStatus: v1.PipelineRunSpecStatusCancelledRunFinally, }, } @@ -2878,7 +2839,7 @@ func TestReconcileCancelledFailsTaskRunCancellation(t *testing.T) { // The TaskRun cannot be cancelled. Check that the pipelinerun cancel fails, that reconcile fails and // an event is generated names.TestingSeed() - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: test-pipeline-fails-to-cancel namespace: foo @@ -2894,12 +2855,12 @@ status: type: Succeeded startTime: "2022-01-01T00:00:00Z" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: test-pipeline-fails-to-cancelhello-world-1 pipelineTaskName: hello-world-1 `, tc.specStatus))} - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -2912,8 +2873,8 @@ spec: taskRef: name: hello-world `)} - tasks := []*v1beta1.Task{simpleHelloWorldTask} - taskRuns := []*v1beta1.TaskRun{ + tasks := []*v1.Task{simpleHelloWorldTask} + taskRuns := []*v1.TaskRun{ getTaskRun( t, "test-pipeline-fails-to-cancelhello-world-1", @@ -2951,7 +2912,7 @@ spec: } // Check that the PipelineRun is still running with correct error message - reconciledRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Get(testAssets.Ctx, "test-pipeline-fails-to-cancel", metav1.GetOptions{}) + reconciledRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Get(testAssets.Ctx, "test-pipeline-fails-to-cancel", metav1.GetOptions{}) if err != nil { t.Fatalf("Somehow had error getting reconciled run out of fake client: %s", err) } @@ -2996,7 +2957,7 @@ func TestReconcileFailsTaskRunTimeOut(t *testing.T) { // The TaskRun cannot be timed out. Check that the pipelinerun timeout fails, that reconcile fails and // an event is generated names.TestingSeed() - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-fails-to-timeout namespace: foo @@ -3012,12 +2973,12 @@ status: type: Succeeded startTime: "2021-12-31T22:59:00Z" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: test-pipeline-fails-to-timeouthello-world-1 pipelineTaskName: hello-world-1 `)} - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -3030,8 +2991,8 @@ spec: taskRef: name: hello-world `)} - tasks := []*v1beta1.Task{simpleHelloWorldTask} - taskRuns := []*v1beta1.TaskRun{ + tasks := []*v1.Task{simpleHelloWorldTask} + taskRuns := []*v1.TaskRun{ getTaskRun( t, "test-pipeline-fails-to-timeouthello-world-1", @@ -3069,7 +3030,7 @@ spec: } // Check that the PipelineRun is still running with correct error message - reconciledRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Get(testAssets.Ctx, "test-pipeline-fails-to-timeout", metav1.GetOptions{}) + reconciledRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Get(testAssets.Ctx, "test-pipeline-fails-to-timeout", metav1.GetOptions{}) if err != nil { t.Fatalf("Somehow had error getting reconciled run out of fake client: %s", err) } @@ -3112,8 +3073,8 @@ func TestReconcilePropagateLabelsAndAnnotations(t *testing.T) { prName := "test-pipeline-run-with-labels" trName := "test-pipeline-run-with-labels-hello-world-1" - ps := []*v1beta1.Pipeline{simpleHelloWorldPipeline} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + ps := []*v1.Pipeline{simpleHelloWorldPipeline} + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: annotations: PipelineRunAnnotation: PipelineRunValue @@ -3125,9 +3086,10 @@ metadata: spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} expectedObjectMeta := taskRunObjectMeta(trName, "foo", "test-pipeline-run-with-labels", "test-pipeline", "hello-world-1", false) @@ -3156,7 +3118,7 @@ spec: validateTaskRunsCount(t, taskRuns, 1) actual := getTaskRunByName(t, taskRuns, trName) - // We're ignoring TypeMeta here because parse.MustParseV1beta1TaskRun populates that, but ktesting does not, so actual does not have it. + // We're ignoring TypeMeta here because parse.MustParseV1TaskRun populates that, but ktesting does not, so actual does not have it. if d := cmp.Diff(expected, actual, ignoreTypeMeta, ignoreResourceVersion); d != "" { t.Errorf("expected to see TaskRun %v created. Diff %s", expected, diff.PrintWantGot(d)) } @@ -3165,14 +3127,14 @@ spec: func TestReconcilePropagateLabelsWithSpecStatus(t *testing.T) { testCases := []struct { name string - specStatus v1beta1.PipelineRunSpecStatus + specStatus v1.PipelineRunSpecStatus }{ { name: "pending", - specStatus: v1beta1.PipelineRunSpecStatusPending, + specStatus: v1.PipelineRunSpecStatusPending, }, { name: "cancelled", - specStatus: v1beta1.PipelineRunSpecStatusCancelled, + specStatus: v1.PipelineRunSpecStatusCancelled, }, } @@ -3180,8 +3142,8 @@ func TestReconcilePropagateLabelsWithSpecStatus(t *testing.T) { t.Run(tc.name, func(t *testing.T) { names.TestingSeed() - ps := []*v1beta1.Pipeline{simpleHelloWorldPipeline} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + ps := []*v1.Pipeline{simpleHelloWorldPipeline} + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: annotations: PipelineRunAnnotation: PipelineRunValue @@ -3193,11 +3155,12 @@ metadata: spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa status: %s `, tc.specStatus))} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} d := test.Data{ PipelineRuns: prs, @@ -3209,7 +3172,7 @@ spec: _, clients := prt.reconcileRun("foo", "test-pipeline-run-with-labels", []string{}, false) - reconciledRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "test-pipeline-run-with-labels", metav1.GetOptions{}) + reconciledRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "test-pipeline-run-with-labels", metav1.GetOptions{}) if err != nil { t.Fatalf("unexpected error when updating status: %v", err) } @@ -3226,7 +3189,7 @@ spec: func TestReconcileWithDifferentServiceAccounts(t *testing.T) { names.TestingSeed() - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -3239,19 +3202,20 @@ spec: taskRef: name: hello-world-task `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-different-service-accs namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa-0 + taskRunTemplate: + serviceAccountName: test-sa-0 taskRunSpecs: - - taskServiceAccountName: test-sa-1 + - serviceAccountName: test-sa-1 pipelineTaskName: hello-world-1 `)} - ts := []*v1beta1.Task{parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{parse.MustParseV1Task(t, ` metadata: name: hello-world-task namespace: foo @@ -3269,7 +3233,7 @@ metadata: taskRunNames := []string{"test-pipeline-run-different-service-accs-hello-world-0", "test-pipeline-run-different-service-accs-hello-world-1"} - expectedTaskRuns := []*v1beta1.TaskRun{ + expectedTaskRuns := []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta(taskRunNames[0], "foo", "test-pipeline-run-different-service-accs", "test-pipeline", "hello-world-0", false), ` @@ -3292,7 +3256,7 @@ spec: for i := range ps[0].Spec.Tasks { // Check that the expected TaskRun was created - actual, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").Get(prt.TestAssets.Ctx, taskRunNames[i], metav1.GetOptions{}) + actual, err := clients.Pipeline.TektonV1().TaskRuns("foo").Get(prt.TestAssets.Ctx, taskRunNames[i], metav1.GetOptions{}) if err != nil { t.Fatalf("Expected a TaskRun to be created, but it wasn't: %s", err) } @@ -3305,7 +3269,7 @@ spec: func TestReconcileCustomTasksWithDifferentServiceAccounts(t *testing.T) { names.TestingSeed() - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -3321,16 +3285,17 @@ spec: kind: Example `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-different-service-accs namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa-0 + taskRunTemplate: + serviceAccountName: test-sa-0 taskRunSpecs: - - taskServiceAccountName: test-sa-1 + - serviceAccountName: test-sa-1 pipelineTaskName: hello-world-1 `)} @@ -3369,8 +3334,8 @@ func TestReconcileAndPropagateCustomPipelineTaskRunSpec(t *testing.T) { prName := "test-pipeline-run" trName := "test-pipeline-run-hello-world-1" - ps := []*v1beta1.Pipeline{simpleHelloWorldPipeline} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + ps := []*v1.Pipeline{simpleHelloWorldPipeline} + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: annotations: PipelineRunAnnotation: PipelineRunValue @@ -3379,19 +3344,20 @@ metadata: spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa taskRunSpecs: - pipelineTaskName: hello-world-1 sidecarOverrides: - name: bar stepOverrides: - name: foo - taskPodTemplate: + podTemplate: nodeSelector: workloadtype: tekton - taskServiceAccountName: custom-sa + serviceAccountName: custom-sa `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} d := test.Data{ PipelineRuns: prs, @@ -3433,7 +3399,7 @@ spec: func TestReconcileCustomTasksWithTaskRunSpec(t *testing.T) { names.TestingSeed() prName := "test-pipeline-run" - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -3446,20 +3412,21 @@ spec: `)} serviceAccount := "custom-sa" - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa taskRunSpecs: - pipelineTaskName: hello-world-1 - taskPodTemplate: + podTemplate: nodeSelector: workloadtype: tekton - taskServiceAccountName: custom-sa + serviceAccountName: custom-sa `)} cms := []*corev1.ConfigMap{newFeatureFlagsConfigMap()} @@ -3486,7 +3453,7 @@ spec: func TestReconcileWithWhenExpressionsWithTaskResultsAndParams(t *testing.T) { names.TestingSeed() - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -3532,7 +3499,7 @@ spec: taskRef: name: d-task `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-different-service-accs namespace: foo @@ -3542,15 +3509,16 @@ spec: value: "yes" pipelineRef: name: test-pipeline - serviceAccountName: test-sa-0 + taskRunTemplate: + serviceAccountName: test-sa-0 `)} - ts := []*v1beta1.Task{ + ts := []*v1.Task{ {ObjectMeta: baseObjectMeta("a-task", "foo")}, {ObjectMeta: baseObjectMeta("b-task", "foo")}, {ObjectMeta: baseObjectMeta("c-task", "foo")}, {ObjectMeta: baseObjectMeta("d-task", "foo")}, } - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-different-service-accs-a-task-xxyyy", "foo", "test-pipeline-run-different-service-accs", "test-pipeline", "a-task", true), ` @@ -3563,7 +3531,7 @@ status: conditions: - status: "True" type: Succeeded - taskResults: + results: - name: aResult value: aResultValue `)} @@ -3595,7 +3563,7 @@ spec: kind: Task `) // Check that the expected TaskRun was created - actual, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + actual, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: "tekton.dev/pipelineTask=b-task,tekton.dev/pipelineRun=test-pipeline-run-different-service-accs", Limit: 1, }) @@ -3611,7 +3579,7 @@ spec: t.Errorf("expected to see TaskRun %v created. Diff %s", expectedTaskRunName, diff.PrintWantGot(d)) } - expectedWhenExpressionsInTaskRun := []v1beta1.WhenExpression{{ + expectedWhenExpressionsInTaskRun := []v1.WhenExpression{{ Input: "aResultValue", Operator: "in", Values: []string{"aResultValue"}, @@ -3627,10 +3595,10 @@ spec: verifyTaskRunStatusesWhenExpressions(t, pipelineRun.Status, expectedTaskRunName, expectedWhenExpressionsInTaskRun) actualSkippedTasks := pipelineRun.Status.SkippedTasks - expectedSkippedTasks := []v1beta1.SkippedTask{{ + expectedSkippedTasks := []v1.SkippedTask{{ Name: "c-task", - Reason: v1beta1.WhenExpressionsSkip, - WhenExpressions: v1beta1.WhenExpressions{{ + Reason: v1.WhenExpressionsSkip, + WhenExpressions: v1.WhenExpressions{{ Input: "aResultValue", Operator: "in", Values: []string{"missing"}, @@ -3647,7 +3615,7 @@ spec: skippedTasks := []string{"c-task"} for _, skippedTask := range skippedTasks { labelSelector := fmt.Sprintf("tekton.dev/pipelineTask=%s,tekton.dev/pipelineRun=test-pipeline-run-different-service-accs", skippedTask) - actualSkippedTask, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + actualSkippedTask, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: labelSelector, Limit: 1, }) @@ -3667,7 +3635,7 @@ func TestReconcileWithWhenExpressions(t *testing.T) { // \ // (e) ———— (f) names.TestingSeed() - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -3724,14 +3692,15 @@ spec: name: f-task `)} // initialize the pipelinerun with the skipped a-task - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-different-service-accs namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa-0 + taskRunTemplate: + serviceAccountName: test-sa-0 status: skippedTasks: - name: a-task @@ -3742,8 +3711,8 @@ status: - bar `)} // initialize the tasks used in the pipeline - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: a-task namespace: foo @@ -3785,7 +3754,7 @@ spec: kind: Task `, taskName)) - actual, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + actual, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: fmt.Sprintf("tekton.dev/pipelineTask=%s,tekton.dev/pipelineRun=test-pipeline-run-different-service-accs", taskName), Limit: 1, }) @@ -3806,11 +3775,11 @@ spec: taskRunExists("d-task", "test-pipeline-run-different-service-accs-d-task") actualSkippedTasks := pipelineRun.Status.SkippedTasks - expectedSkippedTasks := []v1beta1.SkippedTask{{ + expectedSkippedTasks := []v1.SkippedTask{{ // its when expressions evaluate to false Name: "a-task", - Reason: v1beta1.WhenExpressionsSkip, - WhenExpressions: v1beta1.WhenExpressions{{ + Reason: v1.WhenExpressionsSkip, + WhenExpressions: v1.WhenExpressions{{ Input: "foo", Operator: "in", Values: []string{"bar"}, @@ -3818,8 +3787,8 @@ spec: }, { // its when expressions evaluate to false Name: "c-task", - Reason: v1beta1.WhenExpressionsSkip, - WhenExpressions: v1beta1.WhenExpressions{{ + Reason: v1.WhenExpressionsSkip, + WhenExpressions: v1.WhenExpressions{{ Input: "foo", Operator: "in", Values: []string{"bar"}, @@ -3827,15 +3796,15 @@ spec: }, { // was attempted, but has missing results references Name: "e-task", - Reason: v1beta1.MissingResultsSkip, - WhenExpressions: v1beta1.WhenExpressions{{ + Reason: v1.MissingResultsSkip, + WhenExpressions: v1.WhenExpressions{{ Input: "$(tasks.a-task.results.aResult)", Operator: "in", Values: []string{"aResultValue"}, }}, }, { Name: "f-task", - Reason: v1beta1.ParentTasksSkip, + Reason: v1.ParentTasksSkip, }} if d := cmp.Diff(expectedSkippedTasks, actualSkippedTasks); d != "" { t.Errorf("expected to find Skipped Tasks %v. Diff %s", expectedSkippedTasks, diff.PrintWantGot(d)) @@ -3845,7 +3814,7 @@ spec: skippedTasks := []string{"a-task", "c-task", "e-task", "f-task"} for _, skippedTask := range skippedTasks { labelSelector := fmt.Sprintf("tekton.dev/pipelineTask=%s,tekton.dev/pipelineRun=test-pipeline-run-different-service-accs", skippedTask) - actualSkippedTask, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + actualSkippedTask, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: labelSelector, Limit: 1, }) @@ -3860,7 +3829,7 @@ spec: func TestReconcileWithWhenExpressionsWithResultRefs(t *testing.T) { names.TestingSeed() - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -3886,17 +3855,18 @@ spec: taskRef: name: c-task `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-different-service-accs namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa-0 + taskRunTemplate: + serviceAccountName: test-sa-0 `)} - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: a-task namespace: foo @@ -3908,7 +3878,7 @@ spec: {ObjectMeta: baseObjectMeta("b-task", "foo")}, {ObjectMeta: baseObjectMeta("c-task", "foo")}, } - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-different-service-accs-a-task-xxyyy", "foo", "test-pipeline-run-different-service-accs", "test-pipeline", "a-task", true), @@ -3922,7 +3892,7 @@ status: conditions: - status: "True" type: Succeeded - taskResults: + results: - name: aResult value: aResultValue `)} @@ -3942,7 +3912,7 @@ status: } pipelineRun, clients := prt.reconcileRun("foo", "test-pipeline-run-different-service-accs", wantEvents, false) - actual, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + actual, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: "tekton.dev/pipelineTask=c-task,tekton.dev/pipelineRun=test-pipeline-run-different-service-accs", Limit: 1, }) @@ -3955,11 +3925,11 @@ status: } actualSkippedTasks := pipelineRun.Status.SkippedTasks - expectedSkippedTasks := []v1beta1.SkippedTask{{ + expectedSkippedTasks := []v1.SkippedTask{{ // its when expressions evaluate to false Name: "b-task", - Reason: v1beta1.WhenExpressionsSkip, - WhenExpressions: v1beta1.WhenExpressions{{ + Reason: v1.WhenExpressionsSkip, + WhenExpressions: v1.WhenExpressions{{ Input: "aResultValue", Operator: "in", Values: []string{"notResultValue"}, @@ -3973,7 +3943,7 @@ status: skippedTasks := []string{"b-task"} for _, skippedTask := range skippedTasks { labelSelector := fmt.Sprintf("tekton.dev/pipelineTask=%s,tekton.dev/pipelineRun=test-pipeline-run-different-service-accs", skippedTask) - actualSkippedTask, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + actualSkippedTask, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: labelSelector, Limit: 1, }) @@ -3993,7 +3963,7 @@ func TestReconcileWithAffinityAssistantStatefulSet(t *testing.T) { workspaceName := "ws1" workspaceName2 := "ws2" pipelineRunName := "test-pipeline-run" - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -4023,7 +3993,7 @@ spec: - name: emptyDirWorkspace `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run namespace: foo @@ -4044,7 +4014,7 @@ spec: - emptyDir: {} name: emptyDirWorkspace `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} d := test.Data{ PipelineRuns: prs, @@ -4083,7 +4053,7 @@ spec: } } - taskRuns, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{}) + taskRuns, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{}) if err != nil { t.Fatalf("unexpected error when listing TaskRuns: %v", err) } @@ -4124,7 +4094,7 @@ spec: // a PVC is created and that the workspace appears as a PersistentVolumeClaim workspace for TaskRuns. func TestReconcileWithVolumeClaimTemplateWorkspace(t *testing.T) { pipelineRunName := "test-pipeline-run" - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -4143,7 +4113,7 @@ spec: - name: ws1 `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run namespace: foo @@ -4157,7 +4127,7 @@ spec: creationTimestamp: null name: myclaim `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} cms := []*corev1.ConfigMap{withoutAffinityAssistant(newFeatureFlagsConfigMap())} d := test.Data{ @@ -4196,7 +4166,7 @@ spec: } } - taskRuns, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{}) + taskRuns, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{}) if err != nil { t.Fatalf("unexpected error when listing TaskRuns: %v", err) } @@ -4225,7 +4195,7 @@ func TestReconcileWithVolumeClaimTemplateWorkspaceUsingSubPaths(t *testing.T) { subPath2 := "otherdirecory" pipelineRunWsSubPath := "mypath" pipelineRunName := "test-pipeline-run" - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -4283,7 +4253,7 @@ spec: - name: ws3 `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -4309,7 +4279,7 @@ spec: creationTimestamp: null name: myclaim `, pipelineRunName))} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} d := test.Data{ PipelineRuns: prs, @@ -4321,7 +4291,7 @@ spec: reconciledRun, clients := prt.reconcileRun("foo", pipelineRunName, []string{}, false) - taskRuns, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{}) + taskRuns, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{}) if err != nil { t.Fatalf("unexpected error when listing TaskRuns: %v", err) } @@ -4408,7 +4378,7 @@ spec: func TestReconcileWithTaskResults(t *testing.T) { names.TestingSeed() - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -4424,23 +4394,24 @@ spec: taskRef: name: b-task `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-different-service-accs namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa-0 + taskRunTemplate: + serviceAccountName: test-sa-0 `)} - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: a-task namespace: foo spec: {} `), - parse.MustParseV1beta1Task(t, ` + parse.MustParseV1Task(t, ` metadata: name: b-task namespace: foo @@ -4450,7 +4421,7 @@ spec: type: string `), } - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-different-service-accs-a-task-xxyyy", "foo", "test-pipeline-run-different-service-accs", "test-pipeline", "a-task", true), ` @@ -4464,7 +4435,7 @@ status: - lastTransitionTime: null status: "True" type: Succeeded - taskResults: + results: - name: aResult value: aResultValue `)} @@ -4495,7 +4466,7 @@ spec: kind: Task `) // Check that the expected TaskRun was created - actual, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + actual, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: "tekton.dev/pipelineTask=b-task,tekton.dev/pipelineRun=test-pipeline-run-different-service-accs", Limit: 1, }) @@ -4514,7 +4485,7 @@ spec: func TestReconcileWithTaskResultsEmbeddedNoneStarted(t *testing.T) { names.TestingSeed() - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-different-service-accs namespace: foo @@ -4536,10 +4507,11 @@ spec: value: $(params.foo)/baz@$(tasks.a-task.results.A_RESULT) taskRef: name: b-task - serviceAccountName: test-sa-0 + taskRunTemplate: + serviceAccountName: test-sa-0 `)} - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: a-task namespace: foo @@ -4547,7 +4519,7 @@ spec: results: - name: A_RESULT `), - parse.MustParseV1beta1Task(t, ` + parse.MustParseV1Task(t, ` metadata: name: b-task namespace: foo @@ -4583,7 +4555,7 @@ spec: name: a-task `) // Check that the expected TaskRun was created (only) - actual, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{}) + actual, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{}) if err != nil { t.Fatalf("Failure to list TaskRun's %s", err) } @@ -4598,7 +4570,7 @@ spec: func TestReconcileWithFinallyResults(t *testing.T) { names.TestingSeed() - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -4624,7 +4596,7 @@ spec: kind: Example name: b-task `)} - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-finally-results-task-run-a", "foo", "test-pipeline-run-finally-results", "test-pipeline", "a-task", true), ` @@ -4635,7 +4607,7 @@ status: conditions: - status: "True" type: Succeeded - taskResults: + results: - name: a-Result value: aResultValue `), mustParseTaskRunWithObjectMeta(t, @@ -4666,7 +4638,7 @@ status: - name: b-Result value: bResultValue `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-finally-results namespace: foo @@ -4679,8 +4651,8 @@ status: type: Succeeded reason: Succeeded `)} - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: a-task namespace: foo @@ -4688,7 +4660,7 @@ spec: results: - name: a-Result `), - parse.MustParseV1beta1Task(t, ` + parse.MustParseV1Task(t, ` metadata: name: c-task namespace: foo @@ -4714,7 +4686,7 @@ spec: defer prt.Cancel() reconciledRun, _ := prt.reconcileRun("foo", "test-pipeline-run-finally-results", []string{}, false) - expectedPrStatus := parse.MustParseV1beta1PipelineRun(t, ` + expectedPrStatus := parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-finally-results namespace: foo @@ -4753,17 +4725,17 @@ status: type: Succeeded reason: Succeeded message: "Tasks Completed: 3 (Failed: 0, Cancelled 0), Skipped: 0" - pipelineResults: + results: - name: result value: aResultValue - name: custom-result value: bResultValue childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: test-pipeline-run-finally-results-task-run-c pipelineTaskName: c-task - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: test-pipeline-run-finally-results-task-run-a pipelineTaskName: a-task @@ -4791,7 +4763,7 @@ status: func TestReconcileWithPipelineResults(t *testing.T) { names.TestingSeed() - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -4813,7 +4785,7 @@ spec: taskRef: name: a-task `)} - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-results-task-run-a", "foo", "test-pipeline-run-results", "test-pipeline", "a-task", true), ` @@ -4824,7 +4796,7 @@ status: conditions: - status: "True" type: Succeeded - taskResults: + results: - name: a-Result value: aResultValue `)} @@ -4844,7 +4816,7 @@ status: - name: b-Result value: bResultValue `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-results namespace: foo @@ -4856,8 +4828,8 @@ status: - status: "Unknown" type: Succeeded `)} - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: a-task namespace: foo @@ -4880,7 +4852,7 @@ spec: defer prt.Cancel() reconciledRun, _ := prt.reconcileRun("foo", "test-pipeline-run-results", []string{}, false) - expectedPrStatus := parse.MustParseV1beta1PipelineRun(t, ` + expectedPrStatus := parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-results namespace: foo @@ -4914,7 +4886,7 @@ status: type: Succeeded reason: Succeeded message: "Tasks Completed: 2 (Failed: 0, Cancelled 0), Skipped: 0" - pipelineResults: + results: - name: result value: aResultValue - name: custom-result @@ -4924,7 +4896,7 @@ status: kind: CustomRun name: test-pipeline-run-results-task-run-b pipelineTaskName: b-task - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: test-pipeline-run-results-task-run-a pipelineTaskName: a-task @@ -4948,7 +4920,7 @@ status: func TestReconcileWithPipelineResults_OnFailedPipelineRun(t *testing.T) { names.TestingSeed() - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -4968,7 +4940,7 @@ spec: taskRef: name: b-task `)} - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-failed-pr-with-task-results-a-task", "foo", "test-failed-pr-with-task-results", "test-pipeline", "a-task", true), ` @@ -4981,7 +4953,7 @@ status: conditions: - status: "True" type: Succeeded - taskResults: + results: - name: aResult value: aResultValue `), mustParseTaskRunWithObjectMeta(t, @@ -4997,18 +4969,19 @@ status: conditions: - status: "False" type: Succeeded - taskResults: + results: - name: bResult value: bResultValue `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-failed-pr-with-task-results namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa-0 + taskRunTemplate: + serviceAccountName: test-sa-0 timeouts: pipeline: "0" status: @@ -5019,9 +4992,9 @@ status: type: Succeeded startTime: "2021-12-31T00:00:00Z" `)} - ts := []*v1beta1.Task{ + ts := []*v1.Task{ {ObjectMeta: baseObjectMeta("a-task", "foo")}, - parse.MustParseV1beta1Task(t, ` + parse.MustParseV1Task(t, ` metadata: name: b-task namespace: foo @@ -5031,14 +5004,15 @@ spec: type: string `), } - wantPrs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + wantPrs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-failed-pr-with-task-results namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa-0 + taskRunTemplate: + serviceAccountName: test-sa-0 timeouts: pipeline: "0" status: @@ -5047,7 +5021,7 @@ status: reason: Failed status: "False" type: Succeeded - pipelineResults: + results: - name: result value: aResultValue `)} @@ -5067,13 +5041,13 @@ status: if d := cmp.Diff(reconciledRun.Status.Conditions, wantPrs[0].Status.Conditions, ignoreResourceVersion, ignoreLastTransitionTime); d != "" { t.Errorf("expected to see pipeline run marked as failed. Diff %s", diff.PrintWantGot(d)) } - if d := cmp.Diff(reconciledRun.Status.PipelineResults, wantPrs[0].Status.PipelineResults, ignoreResourceVersion, ignoreLastTransitionTime); d != "" { + if d := cmp.Diff(reconciledRun.Status.Results, wantPrs[0].Status.Results, ignoreResourceVersion, ignoreLastTransitionTime); d != "" { t.Errorf("expected to see pipeline run results created. Diff %s", diff.PrintWantGot(d)) } } func Test_storePipelineSpecAndRefSource(t *testing.T) { - pr := parse.MustParseV1beta1PipelineRun(t, ` + pr := parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-success labels: @@ -5081,7 +5055,7 @@ metadata: annotations: io.annotation: value `) - refSource := &v1beta1.RefSource{ + refSource := &v1.RefSource{ URI: "abc.com", Digest: map[string]string{ "sha1": "a123", @@ -5089,16 +5063,15 @@ metadata: EntryPoint: "foo/bar", } - ps := v1beta1.PipelineSpec{Description: "foo-pipeline"} - ps1 := v1beta1.PipelineSpec{Description: "bar-pipeline"} + ps := v1.PipelineSpec{Description: "foo-pipeline"} + ps1 := v1.PipelineSpec{Description: "bar-pipeline"} want := pr.DeepCopy() - want.Status = v1beta1.PipelineRunStatus{ - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + want.Status = v1.PipelineRunStatus{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ PipelineSpec: ps.DeepCopy(), - Provenance: &v1beta1.Provenance{ + Provenance: &v1.Provenance{ RefSource: refSource.DeepCopy(), - ConfigSource: (*v1beta1.ConfigSource)(refSource.DeepCopy()), FeatureFlags: config.DefaultFeatureFlags.DeepCopy(), }, }, @@ -5106,7 +5079,7 @@ metadata: want.ObjectMeta.Labels["tekton.dev/pipeline"] = pr.ObjectMeta.Name type args struct { - pipelineSpec *v1beta1.PipelineSpec + pipelineSpec *v1.PipelineSpec resolvedObjectMeta *resolutionutil.ResolvedObjectMeta } @@ -5114,7 +5087,7 @@ metadata: name string reconcile1Args *args reconcile2Args *args - wantPipelineRun *v1beta1.PipelineRun + wantPipelineRun *v1.PipelineRun }{ { name: "spec and source are available in the same reconcile", @@ -5177,11 +5150,11 @@ func Test_storePipelineSpec_metadata(t *testing.T) { wantedlabels := map[string]string{"lbl1": "value1", "lbl2": "value2", "lbl3": "value3", pipeline.PipelineLabelKey: "bar"} wantedannotations := map[string]string{"io.annotation.1": "value1", "io.annotation.2": "value2", "io.annotation.3": "value3"} - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "foo", Labels: pipelinerunlabels, Annotations: pipelinerunannotations}, } meta := metav1.ObjectMeta{Name: "bar", Labels: pipelinelabels, Annotations: pipelineannotations} - if err := storePipelineSpecAndMergeMeta(context.Background(), pr, &v1beta1.PipelineSpec{}, &resolutionutil.ResolvedObjectMeta{ + if err := storePipelineSpecAndMergeMeta(context.Background(), pr, &v1.PipelineSpec{}, &resolutionutil.ResolvedObjectMeta{ ObjectMeta: &meta, }); err != nil { t.Errorf("storePipelineSpecAndMergeMeta error = %v", err) @@ -5206,7 +5179,7 @@ func TestReconcileOutOfSyncPipelineRun(t *testing.T) { prOutOfSyncName := "test-pipeline-run-out-of-sync" helloWorldTask := simpleHelloWorldTask - testPipeline := parse.MustParseV1beta1Pipeline(t, ` + testPipeline := parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -5264,7 +5237,7 @@ status: type: Succeeded `) - prOutOfSync := parse.MustParseV1beta1PipelineRun(t, ` + prOutOfSync := parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-out-of-sync namespace: foo @@ -5278,21 +5251,21 @@ status: type: Succeeded `) - prOutOfSync.Status.ChildReferences = []v1beta1.ChildStatusReference{ + prOutOfSync.Status.ChildReferences = []v1.ChildStatusReference{ { TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: taskRunDone.Name, PipelineTaskName: "hello-world-1", }, } - prs := []*v1beta1.PipelineRun{prOutOfSync} - ps := []*v1beta1.Pipeline{testPipeline} - ts := []*v1beta1.Task{helloWorldTask} - trs := []*v1beta1.TaskRun{taskRunDone, taskRunOrphaned} + prs := []*v1.PipelineRun{prOutOfSync} + ps := []*v1.Pipeline{testPipeline} + ts := []*v1.Task{helloWorldTask} + trs := []*v1.TaskRun{taskRunDone, taskRunOrphaned} customRuns := []*v1beta1.CustomRun{orphanedCustomRun} cms := []*corev1.ConfigMap{newFeatureFlagsConfigMap()} @@ -5317,12 +5290,12 @@ status: t.Errorf("Expected PipelineRun status to be running, but was %v", reconciledRun.Status.GetCondition(apis.ConditionSucceeded)) } - expectedTaskRunsStatus := make(map[string]*v1beta1.PipelineRunTaskRunStatus) - expectedRunsStatus := make(map[string]*v1beta1.PipelineRunRunStatus) + expectedTaskRunsStatus := make(map[string]*v1.PipelineRunTaskRunStatus) + expectedRunsStatus := make(map[string]*v1.PipelineRunRunStatus) // taskRunDone did not change - expectedTaskRunsStatus[taskRunDone.Name] = &v1beta1.PipelineRunTaskRunStatus{ + expectedTaskRunsStatus[taskRunDone.Name] = &v1.PipelineRunTaskRunStatus{ PipelineTaskName: "hello-world-1", - Status: &v1beta1.TaskRunStatus{ + Status: &v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: []apis.Condition{ { @@ -5334,9 +5307,9 @@ status: }, } // taskRunOrphaned was recovered into the status - expectedTaskRunsStatus[taskRunOrphaned.Name] = &v1beta1.PipelineRunTaskRunStatus{ + expectedTaskRunsStatus[taskRunOrphaned.Name] = &v1.PipelineRunTaskRunStatus{ PipelineTaskName: "hello-world-2", - Status: &v1beta1.TaskRunStatus{ + Status: &v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: []apis.Condition{ { @@ -5348,7 +5321,7 @@ status: }, } // orphanedCustomRun was recovered into the status - expectedRunsStatus[orphanedCustomRun.Name] = &v1beta1.PipelineRunRunStatus{ + expectedRunsStatus[orphanedCustomRun.Name] = &v1.PipelineRunRunStatus{ PipelineTaskName: "hello-world-5", Status: &v1beta1.CustomRunStatus{ Status: duckv1.Status{ @@ -5362,24 +5335,24 @@ status: }, } - taskRunsStatus := make(map[string]*v1beta1.PipelineRunTaskRunStatus) - runsStatus := make(map[string]*v1beta1.PipelineRunRunStatus) + taskRunsStatus := make(map[string]*v1.PipelineRunTaskRunStatus) + runsStatus := make(map[string]*v1.PipelineRunRunStatus) for _, cr := range reconciledRun.Status.ChildReferences { if cr.Kind == taskRun { - trStatusForPipelineRun := &v1beta1.PipelineRunTaskRunStatus{ + trStatusForPipelineRun := &v1.PipelineRunTaskRunStatus{ PipelineTaskName: cr.PipelineTaskName, WhenExpressions: cr.WhenExpressions, } - tr, _ := clients.Pipeline.TektonV1beta1().TaskRuns("foo").Get(ctx, cr.Name, metav1.GetOptions{}) + tr, _ := clients.Pipeline.TektonV1().TaskRuns("foo").Get(ctx, cr.Name, metav1.GetOptions{}) if tr != nil { trStatusForPipelineRun.Status = &tr.Status } taskRunsStatus[cr.Name] = trStatusForPipelineRun - } else if cr.Kind == customRun { - rStatusForPipelineRun := &v1beta1.PipelineRunRunStatus{ + } else if cr.Kind == "CustomRun" { + rStatusForPipelineRun := &v1.PipelineRunRunStatus{ PipelineTaskName: cr.PipelineTaskName, WhenExpressions: cr.WhenExpressions, } @@ -5401,7 +5374,7 @@ status: func TestUpdatePipelineRunStatusFromInformer(t *testing.T) { names.TestingSeed() - pr := parse.MustParseV1beta1PipelineRun(t, ` + pr := parse.MustParseV1PipelineRun(t, ` metadata: labels: mylabel: myvale @@ -5425,7 +5398,7 @@ spec: cms := []*corev1.ConfigMap{newFeatureFlagsConfigMap()} d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, + PipelineRuns: []*v1.PipelineRun{pr}, ConfigMaps: cms, } prt := newPipelineRunTest(t, d) @@ -5465,7 +5438,7 @@ spec: // Add a label to the PipelineRun. This tests a scenario in issue 3126 which could prevent the reconciler // from finding TaskRuns that are missing from the status. reconciledRun.ObjectMeta.Labels["bah"] = "humbug" - reconciledRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Update(prt.TestAssets.Ctx, reconciledRun, metav1.UpdateOptions{}) + reconciledRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Update(prt.TestAssets.Ctx, reconciledRun, metav1.UpdateOptions{}) if err != nil { t.Fatalf("unexpected error when updating status: %v", err) } @@ -5473,8 +5446,8 @@ spec: // The label update triggers another reconcile. Depending on timing, the PipelineRun passed to the reconcile may or may not // have the updated status with the name of the created TaskRun. Clear the status because we want to test the case where the // status does not have the TaskRun. - reconciledRun.Status = v1beta1.PipelineRunStatus{} - if _, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").UpdateStatus(prt.TestAssets.Ctx, reconciledRun, metav1.UpdateOptions{}); err != nil { + reconciledRun.Status = v1.PipelineRunStatus{} + if _, err := clients.Pipeline.TektonV1().PipelineRuns("foo").UpdateStatus(prt.TestAssets.Ctx, reconciledRun, metav1.UpdateOptions{}); err != nil { t.Fatalf("unexpected error when updating status: %v", err) } @@ -5491,12 +5464,12 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { tests := []struct { name string pipelineRunName string - prs []*v1beta1.PipelineRun - ps []*v1beta1.Pipeline - ts []*v1beta1.Task - trs []*v1beta1.TaskRun - expectedTaskRuns map[string]*v1beta1.PipelineRunTaskRunStatus - expectedChildReferences []v1beta1.ChildStatusReference + prs []*v1.PipelineRun + ps []*v1.Pipeline + ts []*v1.Task + trs []*v1.TaskRun + expectedTaskRuns map[string]*v1.PipelineRunTaskRunStatus + expectedChildReferences []v1.ChildStatusReference pipelineRunStatusUnknown bool pipelineRunStatusFalse bool }{{ @@ -5516,7 +5489,7 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { "pipeline-run-dag-task-failing", "pipeline-dag-task-failing", corev1.ConditionFalse, - v1beta1.PipelineRunReasonFailed.String(), + v1.PipelineRunReasonFailed.String(), "Tasks Completed: 2 (Failed: 1, Cancelled 0), Skipped: 0", map[string]string{ "dag-task-1": "task-run-dag-task", @@ -5526,20 +5499,20 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { ps: getPipeline( "pipeline-dag-task-failing", - v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "dag-task-1", - TaskRef: &v1beta1.TaskRef{Name: "hello-world"}, + TaskRef: &v1.TaskRef{Name: "hello-world"}, }}, - Finally: []v1beta1.PipelineTask{{ + Finally: []v1.PipelineTask{{ Name: "final-task-1", - TaskRef: &v1beta1.TaskRef{Name: "hello-world"}, + TaskRef: &v1.TaskRef{Name: "hello-world"}, }}, }), - ts: []*v1beta1.Task{simpleHelloWorldTask}, + ts: []*v1.Task{simpleHelloWorldTask}, - trs: []*v1beta1.TaskRun{ + trs: []*v1.TaskRun{ getTaskRun( t, "task-run-dag-task", @@ -5558,22 +5531,22 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { ), }, - expectedTaskRuns: map[string]*v1beta1.PipelineRunTaskRunStatus{ + expectedTaskRuns: map[string]*v1.PipelineRunTaskRunStatus{ "task-run-dag-task": getTaskRunStatus("dag-task-1", corev1.ConditionFalse), "task-run-final-task": getTaskRunStatus("final-task-1", ""), }, - expectedChildReferences: []v1beta1.ChildStatusReference{{ + expectedChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "task-run-dag-task", PipelineTaskName: "dag-task-1", }, { TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "task-run-final-task", PipelineTaskName: "final-task-1", @@ -5595,7 +5568,7 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { "pipeline-run-with-dag-successful-but-final-failing", "pipeline-with-dag-successful-but-final-failing", corev1.ConditionFalse, - v1beta1.PipelineRunReasonFailed.String(), + v1.PipelineRunReasonFailed.String(), "Tasks Completed: 2 (Failed: 1, Cancelled 0), Skipped: 0", map[string]string{ "dag-task-1": "task-run-dag-task", @@ -5605,20 +5578,20 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { ps: getPipeline( "pipeline-with-dag-successful-but-final-failing", - v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "dag-task-1", - TaskRef: &v1beta1.TaskRef{Name: "hello-world"}, + TaskRef: &v1.TaskRef{Name: "hello-world"}, }}, - Finally: []v1beta1.PipelineTask{{ + Finally: []v1.PipelineTask{{ Name: "final-task-1", - TaskRef: &v1beta1.TaskRef{Name: "hello-world"}, + TaskRef: &v1.TaskRef{Name: "hello-world"}, }}, }), - ts: []*v1beta1.Task{simpleHelloWorldTask}, + ts: []*v1.Task{simpleHelloWorldTask}, - trs: []*v1beta1.TaskRun{ + trs: []*v1.TaskRun{ getTaskRun( t, "task-run-dag-task", @@ -5637,22 +5610,22 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { ), }, - expectedTaskRuns: map[string]*v1beta1.PipelineRunTaskRunStatus{ + expectedTaskRuns: map[string]*v1.PipelineRunTaskRunStatus{ "task-run-dag-task": getTaskRunStatus("dag-task-1", ""), "task-run-final-task": getTaskRunStatus("final-task-1", corev1.ConditionFalse), }, - expectedChildReferences: []v1beta1.ChildStatusReference{{ + expectedChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "task-run-dag-task", PipelineTaskName: "dag-task-1", }, { TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "task-run-final-task", PipelineTaskName: "final-task-1", @@ -5676,7 +5649,7 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { "pipeline-run-with-dag-and-final-failing", "pipeline-with-dag-and-final-failing", corev1.ConditionFalse, - v1beta1.PipelineRunReasonFailed.String(), + v1.PipelineRunReasonFailed.String(), "Tasks Completed: 2 (Failed: 2, Cancelled 0), Skipped: 0", map[string]string{ "dag-task-1": "task-run-dag-task", @@ -5686,20 +5659,20 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { ps: getPipeline( "pipeline-with-dag-and-final-failing", - v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "dag-task-1", - TaskRef: &v1beta1.TaskRef{Name: "hello-world"}, + TaskRef: &v1.TaskRef{Name: "hello-world"}, }}, - Finally: []v1beta1.PipelineTask{{ + Finally: []v1.PipelineTask{{ Name: "final-task-1", - TaskRef: &v1beta1.TaskRef{Name: "hello-world"}, + TaskRef: &v1.TaskRef{Name: "hello-world"}, }}, }), - ts: []*v1beta1.Task{simpleHelloWorldTask}, + ts: []*v1.Task{simpleHelloWorldTask}, - trs: []*v1beta1.TaskRun{ + trs: []*v1.TaskRun{ getTaskRun( t, "task-run-dag-task", @@ -5718,22 +5691,22 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { ), }, - expectedTaskRuns: map[string]*v1beta1.PipelineRunTaskRunStatus{ + expectedTaskRuns: map[string]*v1.PipelineRunTaskRunStatus{ "task-run-dag-task": getTaskRunStatus("dag-task-1", corev1.ConditionFalse), "task-run-final-task": getTaskRunStatus("final-task-1", corev1.ConditionFalse), }, - expectedChildReferences: []v1beta1.ChildStatusReference{{ + expectedChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "task-run-dag-task", PipelineTaskName: "dag-task-1", }, { TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "task-run-final-task", PipelineTaskName: "final-task-1", @@ -5758,7 +5731,7 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { "pipeline-run-with-dag-running", "pipeline-with-dag-running", corev1.ConditionUnknown, - v1beta1.PipelineRunReasonRunning.String(), + v1.PipelineRunReasonRunning.String(), "Tasks Completed: 1 (Failed: 1, Cancelled 0), Incomplete: 2, Skipped: 0", map[string]string{ "dag-task-1": "task-run-dag-task-1", @@ -5768,26 +5741,26 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { ps: getPipeline( "pipeline-with-dag-running", - v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{ + v1.PipelineSpec{ + Tasks: []v1.PipelineTask{ { Name: "dag-task-1", - TaskRef: &v1beta1.TaskRef{Name: "hello-world"}, + TaskRef: &v1.TaskRef{Name: "hello-world"}, }, { Name: "dag-task-2", - TaskRef: &v1beta1.TaskRef{Name: "hello-world"}, + TaskRef: &v1.TaskRef{Name: "hello-world"}, }, }, - Finally: []v1beta1.PipelineTask{{ + Finally: []v1.PipelineTask{{ Name: "final-task-1", - TaskRef: &v1beta1.TaskRef{Name: "hello-world"}, + TaskRef: &v1.TaskRef{Name: "hello-world"}, }}, }), - ts: []*v1beta1.Task{simpleHelloWorldTask}, + ts: []*v1.Task{simpleHelloWorldTask}, - trs: []*v1beta1.TaskRun{ + trs: []*v1.TaskRun{ getTaskRun( t, "task-run-dag-task-1", @@ -5806,23 +5779,23 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { ), }, - expectedChildReferences: []v1beta1.ChildStatusReference{{ + expectedChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "task-run-dag-task-1", PipelineTaskName: "dag-task-1", }, { TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "task-run-dag-task-2", PipelineTaskName: "dag-task-2", }}, - expectedTaskRuns: map[string]*v1beta1.PipelineRunTaskRunStatus{ + expectedTaskRuns: map[string]*v1.PipelineRunTaskRunStatus{ "task-run-dag-task-1": getTaskRunStatus("dag-task-1", corev1.ConditionFalse), "task-run-dag-task-2": getTaskRunStatus("dag-task-2", corev1.ConditionUnknown), }, @@ -5847,7 +5820,7 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { "pipeline-run-dag-task-running", "pipeline-dag-task-running", corev1.ConditionUnknown, - v1beta1.PipelineRunReasonRunning.String(), + v1.PipelineRunReasonRunning.String(), "Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0", map[string]string{ "dag-task-1": "task-run-dag-task-1", @@ -5856,20 +5829,20 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { ps: getPipeline( "pipeline-dag-task-running", - v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "dag-task-1", - TaskRef: &v1beta1.TaskRef{Name: "hello-world"}, + TaskRef: &v1.TaskRef{Name: "hello-world"}, }}, - Finally: []v1beta1.PipelineTask{{ + Finally: []v1.PipelineTask{{ Name: "final-task-1", - TaskRef: &v1beta1.TaskRef{Name: "hello-world"}, + TaskRef: &v1.TaskRef{Name: "hello-world"}, }}, }), - ts: []*v1beta1.Task{simpleHelloWorldTask}, + ts: []*v1.Task{simpleHelloWorldTask}, - trs: []*v1beta1.TaskRun{ + trs: []*v1.TaskRun{ getTaskRun( t, "task-run-dag-task-1", @@ -5880,16 +5853,16 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { ), }, - expectedChildReferences: []v1beta1.ChildStatusReference{{ + expectedChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: taskRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: "TaskRun", }, Name: "task-run-dag-task-1", PipelineTaskName: "dag-task-1", }}, - expectedTaskRuns: map[string]*v1beta1.PipelineRunTaskRunStatus{ + expectedTaskRuns: map[string]*v1.PipelineRunTaskRunStatus{ "task-run-dag-task-1": getTaskRunStatus("dag-task-1", corev1.ConditionUnknown), }, @@ -5918,10 +5891,10 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { } // The first update action should be updating the PipelineRun. - var actual *v1beta1.PipelineRun + var actual *v1.PipelineRun for _, action := range actions { if actualPrime, ok := action.(ktesting.UpdateAction); ok { - actual = actualPrime.GetObject().(*v1beta1.PipelineRun) + actual = actualPrime.GetObject().(*v1.PipelineRun) break } } @@ -5964,7 +5937,7 @@ func TestReconcilePipeline_FinalTasks(t *testing.T) { // checkTaskRunStatusFromChildRefs checks the status of taskruns from ChildReferences to be expected. func checkTaskRunStatusFromChildRefs(ctx context.Context, t *testing.T, namespace string, clients test.Clients, - childRefs []v1beta1.ChildStatusReference, expectedTaskRuns map[string]*v1beta1.PipelineRunTaskRunStatus) { + childRefs []v1.ChildStatusReference, expectedTaskRuns map[string]*v1.PipelineRunTaskRunStatus) { t.Helper() taskrunsToCheck := len(expectedTaskRuns) if taskrunsToCheck == 0 { @@ -5977,7 +5950,7 @@ func checkTaskRunStatusFromChildRefs(ctx context.Context, t *testing.T, namespac } trName := childRef.Name - trFromChildRef, err := clients.Pipeline.TektonV1beta1().TaskRuns(namespace).Get(ctx, trName, metav1.GetOptions{}) + trFromChildRef, err := clients.Pipeline.TektonV1().TaskRuns(namespace).Get(ctx, trName, metav1.GetOptions{}) if err != nil { t.Fatalf("Failure to get TaskRun from ChildReference %s: %s", childRef.Name, err) } @@ -5995,14 +5968,16 @@ func checkTaskRunStatusFromChildRefs(ctx context.Context, t *testing.T, namespac } } -func getPipelineRun(pr, p string, status corev1.ConditionStatus, reason string, m string, tr map[string]string) []*v1beta1.PipelineRun { - pRun := &v1beta1.PipelineRun{ +func getPipelineRun(pr, p string, status corev1.ConditionStatus, reason string, m string, tr map[string]string) []*v1.PipelineRun { + pRun := &v1.PipelineRun{ ObjectMeta: baseObjectMeta(pr, "foo"), - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{Name: p}, - ServiceAccountName: "test-sa", + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{Name: p}, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "test-sa", + }, }, - Status: v1beta1.PipelineRunStatus{ + Status: v1.PipelineRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{ apis.Condition{ @@ -6016,36 +5991,36 @@ func getPipelineRun(pr, p string, status corev1.ConditionStatus, reason string, }, } for k, v := range tr { - pRun.Status.ChildReferences = append(pRun.Status.ChildReferences, v1beta1.ChildStatusReference{ + pRun.Status.ChildReferences = append(pRun.Status.ChildReferences, v1.ChildStatusReference{ PipelineTaskName: k, Name: v, TypeMeta: runtime.TypeMeta{ - Kind: taskRun, - APIVersion: "tekton.dev/v1beta1", + Kind: "TaskRun", + APIVersion: "tekton.dev/v1", }, }) } - return []*v1beta1.PipelineRun{pRun} + return []*v1.PipelineRun{pRun} } // withOwnerReference adds the PipelineRun name to each TaskRun as their OwnerReference // TODO: This shall be removed along with the refactor of `getTaskRun` to populate matched // OwnerReference with the PipelineRun at https://github.com/tektoncd/pipeline/issues/6008 -func withOwnerReference(trs []*v1beta1.TaskRun, prName string) { +func withOwnerReference(trs []*v1.TaskRun, prName string) { for _, tr := range trs { tr.OwnerReferences = []metav1.OwnerReference{{Name: prName}} } } -func getPipeline(p string, spec v1beta1.PipelineSpec) []*v1beta1.Pipeline { - ps := []*v1beta1.Pipeline{{ +func getPipeline(p string, spec v1.PipelineSpec) []*v1.Pipeline { + ps := []*v1.Pipeline{{ ObjectMeta: baseObjectMeta(p, "foo"), Spec: spec, }} return ps } -func getTaskRun(t *testing.T, tr, pr, p, tl string, status corev1.ConditionStatus) *v1beta1.TaskRun { +func getTaskRun(t *testing.T, tr, pr, p, tl string, status corev1.ConditionStatus) *v1.TaskRun { t.Helper() return createHelloWorldTaskRunWithStatusTaskLabel(t, tr, "foo", pr, p, "", tl, apis.Condition{ @@ -6054,10 +6029,10 @@ func getTaskRun(t *testing.T, tr, pr, p, tl string, status corev1.ConditionStatu }) } -func getTaskRunStatus(t string, status corev1.ConditionStatus) *v1beta1.PipelineRunTaskRunStatus { - return &v1beta1.PipelineRunTaskRunStatus{ +func getTaskRunStatus(t string, status corev1.ConditionStatus) *v1.PipelineRunTaskRunStatus { + return &v1.PipelineRunTaskRunStatus{ PipelineTaskName: t, - Status: &v1beta1.TaskRunStatus{ + Status: &v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: []apis.Condition{ {Type: apis.ConditionSucceeded, Status: status}, @@ -6072,8 +6047,8 @@ func getTaskRunStatus(t string, status corev1.ConditionStatus) *v1beta1.Pipeline func TestReconcile_CloudEvents(t *testing.T) { names.TestingSeed() - prs := []*v1beta1.PipelineRun{ - parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{ + parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipelinerun namespace: foo @@ -6083,8 +6058,8 @@ spec: name: test-pipeline `), } - ps := []*v1beta1.Pipeline{ - parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{ + parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -6095,8 +6070,8 @@ spec: name: test-task `), } - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: test-task namespace: foo @@ -6138,7 +6113,7 @@ spec: reconciledRun, clients := prt.reconcileRun("foo", "test-pipelinerun", wantEvents, false) // This PipelineRun is in progress now and the status should reflect that - checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1beta1.PipelineRunReasonRunning.String()) + checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1.PipelineRunReasonRunning.String()) verifyTaskRunStatusesCount(t, reconciledRun.Status, 1) @@ -6154,8 +6129,8 @@ spec: func TestReconcilePipeline_TaskSpecMetadata(t *testing.T) { names.TestingSeed() - prs := []*v1beta1.PipelineRun{ - parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{ + parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-success namespace: foo @@ -6165,8 +6140,8 @@ spec: `), } - ps := []*v1beta1.Pipeline{ - parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{ + parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -6207,10 +6182,10 @@ spec: t.Fatalf("Expected client to have been used to create a TaskRun but it wasn't") } - actualTaskRun := make(map[string]*v1beta1.TaskRun) + actualTaskRun := make(map[string]*v1.TaskRun) for _, a := range actions { if a.GetResource().Resource == "taskruns" { - t := a.(ktesting.CreateAction).GetObject().(*v1beta1.TaskRun) + t := a.(ktesting.CreateAction).GetObject().(*v1.TaskRun) actualTaskRun[t.Name] = t } } @@ -6220,7 +6195,7 @@ spec: t.Errorf("Expected two TaskRuns to be created, but found %d TaskRuns.", len(actualTaskRun)) } - expectedTaskRun := make(map[string]*v1beta1.TaskRun) + expectedTaskRun := make(map[string]*v1.TaskRun) expectedTaskRun["test-pipeline-run-success-task-with-metadata"] = getTaskRunWithTaskSpec( "test-pipeline-run-success-task-with-metadata", "test-pipeline-run-success", @@ -6252,7 +6227,7 @@ func TestReconciler_ReconcileKind_PipelineTaskContext(t *testing.T) { pipelineName := "p-pipelinetask-status" pipelineRunName := "pr-pipelinetask-status" - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: p-pipelinetask-status namespace: foo @@ -6270,19 +6245,20 @@ spec: name: mytask `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: pr-pipelinetask-status namespace: foo spec: pipelineRef: name: p-pipelinetask-status - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa `)} - ts := []*v1beta1.Task{ + ts := []*v1.Task{ {ObjectMeta: baseObjectMeta("mytask", "foo")}, - parse.MustParseV1beta1Task(t, ` + parse.MustParseV1Task(t, ` metadata: name: finaltask namespace: foo @@ -6292,7 +6268,7 @@ spec: type: string `)} - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta(pipelineRunName+"-task1-xxyy", "foo", pipelineRunName, pipelineName, "task1", false), ` spec: @@ -6320,7 +6296,7 @@ status: expectedTaskRunName := pipelineRunName + "-finaltask" expectedTaskRunObjectMeta := taskRunObjectMeta(expectedTaskRunName, "foo", pipelineRunName, pipelineName, "finaltask", false) - expectedTaskRunObjectMeta.Labels[pipeline.MemberOfLabelKey] = v1beta1.PipelineFinallyTasks + expectedTaskRunObjectMeta.Labels[pipeline.MemberOfLabelKey] = v1.PipelineFinallyTasks expectedTaskRun := mustParseTaskRunWithObjectMeta(t, expectedTaskRunObjectMeta, ` spec: params: @@ -6332,7 +6308,7 @@ spec: kind: Task `) // Check that the expected TaskRun was created - actual, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + actual, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: "tekton.dev/pipelineTask=finaltask,tekton.dev/pipelineRun=" + pipelineRunName, Limit: 1, }) @@ -6352,7 +6328,7 @@ spec: func TestReconcileWithTaskResultsInFinalTasks(t *testing.T) { names.TestingSeed() - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -6432,23 +6408,24 @@ spec: name: dag-task `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-final-task-results namespace: foo spec: pipelineRef: name: test-pipeline - serviceAccountName: test-sa-0 + taskRunTemplate: + serviceAccountName: test-sa-0 `)} - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: dag-task namespace: foo `), - parse.MustParseV1beta1Task(t, ` + parse.MustParseV1Task(t, ` metadata: name: final-task namespace: foo @@ -6459,7 +6436,7 @@ spec: `), } - trs := []*v1beta1.TaskRun{ + trs := []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-final-task-results-dag-task-1-xxyyy", "foo", "test-pipeline-run-final-task-results", "test-pipeline", "dag-task-1", false), @@ -6473,7 +6450,7 @@ status: - reason: Succeeded status: "True" type: Succeeded - taskResults: + results: - name: aResult value: aResultValue `), @@ -6504,7 +6481,7 @@ status: - lastTransitionTime: null status: "False" type: Succeeded - taskResults: + results: - name: aResult value: aResultValue `), @@ -6524,7 +6501,7 @@ status: expectedTaskRunName := "test-pipeline-run-final-task-results-final-task-1" expectedTaskRunObjectMeta := taskRunObjectMeta("test-pipeline-run-final-task-results-final-task-1", "foo", "test-pipeline-run-final-task-results", "test-pipeline", "final-task-1", true) - expectedTaskRunObjectMeta.Labels[pipeline.MemberOfLabelKey] = v1beta1.PipelineFinallyTasks + expectedTaskRunObjectMeta.Labels[pipeline.MemberOfLabelKey] = v1.PipelineFinallyTasks expectedTaskRun := mustParseTaskRunWithObjectMeta(t, expectedTaskRunObjectMeta, ` spec: params: @@ -6537,7 +6514,7 @@ spec: `) // Check that the expected TaskRun was created - actual, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + actual, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: "tekton.dev/pipelineTask=final-task-1,tekton.dev/pipelineRun=test-pipeline-run-final-task-results", Limit: 1, }) @@ -6552,23 +6529,23 @@ spec: if d := cmp.Diff(*expectedTaskRun, actualTaskRun, ignoreResourceVersion, ignoreTypeMeta); d != "" { t.Errorf("expected to see TaskRun %v created. Diff %s", expectedTaskRunName, diff.PrintWantGot(d)) } - expectedSkippedTasks := []v1beta1.SkippedTask{{ + expectedSkippedTasks := []v1.SkippedTask{{ Name: "final-task-2", - Reason: v1beta1.MissingResultsSkip, + Reason: v1.MissingResultsSkip, }, { Name: "final-task-3", - Reason: v1beta1.WhenExpressionsSkip, - WhenExpressions: v1beta1.WhenExpressions{{ + Reason: v1.WhenExpressionsSkip, + WhenExpressions: v1.WhenExpressions{{ Input: "aResultValue", Operator: "notin", Values: []string{"aResultValue"}, }}, }, { Name: "final-task-5", - Reason: v1beta1.MissingResultsSkip, + Reason: v1.MissingResultsSkip, }, { Name: "final-task-6", - Reason: v1beta1.MissingResultsSkip, + Reason: v1.MissingResultsSkip, }} if d := cmp.Diff(expectedSkippedTasks, reconciledRun.Status.SkippedTasks); d != "" { @@ -6589,7 +6566,7 @@ func newPipelineRunTest(t *testing.T, data test.Data) *PipelineRunTest { } } -func (prt PipelineRunTest) reconcileRun(namespace, pipelineRunName string, wantEvents []string, permanentError bool) (*v1beta1.PipelineRun, test.Clients) { +func (prt PipelineRunTest) reconcileRun(namespace, pipelineRunName string, wantEvents []string, permanentError bool) (*v1.PipelineRun, test.Clients) { prt.Test.Helper() c := prt.TestAssets.Controller clients := prt.TestAssets.Clients @@ -6610,7 +6587,7 @@ func (prt PipelineRunTest) reconcileRun(namespace, pipelineRunName string, wantE } prt.Test.Logf("Getting reconciled run") // Check that the PipelineRun was reconciled correctly - reconciledRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns(namespace).Get(prt.TestAssets.Ctx, pipelineRunName, metav1.GetOptions{}) + reconciledRun, err := clients.Pipeline.TektonV1().PipelineRuns(namespace).Get(prt.TestAssets.Ctx, pipelineRunName, metav1.GetOptions{}) if err != nil { prt.Test.Fatalf("Somehow had error getting reconciled run out of fake client: %s", err) } @@ -6619,6 +6596,7 @@ func (prt PipelineRunTest) reconcileRun(namespace, pipelineRunName string, wantE // Check generated events match what's expected if len(wantEvents) > 0 { if err := k8sevent.CheckEventsOrdered(prt.Test, prt.TestAssets.Recorder.Events, pipelineRunName, wantEvents); err != nil { + prt.Test.Fatalf("falal added: %s:", err.Error()) prt.Test.Errorf(err.Error()) } } @@ -6633,17 +6611,18 @@ func TestReconcile_RemotePipelineRef(t *testing.T) { prName := "test-pipeline-run-success" trName := "test-pipeline-run-success-unit-test-1" - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-success namespace: foo spec: pipelineRef: resolver: bar - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa timeout: 1h0m0s `)} - ps := parse.MustParseV1beta1Pipeline(t, ` + ps := parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -6654,7 +6633,7 @@ spec: resolver: bar `) - remoteTask := parse.MustParseV1beta1Task(t, ` + remoteTask := parse.MustParseV1Task(t, ` metadata: name: unit-test-task namespace: foo @@ -6677,8 +6656,16 @@ metadata: d := test.Data{ PipelineRuns: prs, ServiceAccounts: []*corev1.ServiceAccount{{ - ObjectMeta: metav1.ObjectMeta{Name: prs[0].Spec.ServiceAccountName, Namespace: namespace}, + ObjectMeta: metav1.ObjectMeta{Name: prs[0].Spec.TaskRunTemplate.ServiceAccountName, Namespace: namespace}, }}, + ConfigMaps: []*corev1.ConfigMap{ + { + ObjectMeta: metav1.ObjectMeta{Name: config.GetFeatureFlagsConfigName(), Namespace: system.Namespace()}, + Data: map[string]string{ + "enable-api-fields": "beta", + }, + }, + }, ResolutionRequests: []*resolutionv1beta1.ResolutionRequest{&taskReq, &pipelineReq}, } @@ -6698,8 +6685,7 @@ metadata: actual := getTaskRunByName(t, taskRuns, trName) expectedTaskRun := mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta(trName, namespace, prName, - "test-pipeline", "unit-test-1", false), - ` + "test-pipeline", "unit-test-1", false), ` spec: serviceAccountName: test-sa taskRef: @@ -6732,7 +6718,7 @@ func TestReconcile_OptionalWorkspacesOmitted(t *testing.T) { cfg := config.NewStore(logtesting.TestLogger(t)) ctx = cfg.ToContext(ctx) - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-success namespace: foo @@ -6752,14 +6738,15 @@ spec: workspaces: - name: optional-workspace optional: true - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa `)} // Unlike the tests above, we do *not* locally define our pipeline or unit-test task. d := test.Data{ PipelineRuns: prs, ServiceAccounts: []*corev1.ServiceAccount{{ - ObjectMeta: metav1.ObjectMeta{Name: prs[0].Spec.ServiceAccountName, Namespace: namespace}, + ObjectMeta: metav1.ObjectMeta{Name: prs[0].Spec.TaskRunTemplate.ServiceAccountName, Namespace: namespace}, }}, ConfigMaps: []*corev1.ConfigMap{newFeatureFlagsConfigMap()}, } @@ -6793,7 +6780,7 @@ spec: } // This PipelineRun is in progress now and the status should reflect that - checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1beta1.PipelineRunReasonRunning.String()) + checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1.PipelineRunReasonRunning.String()) verifyTaskRunStatusesCount(t, reconciledRun.Status, 1) verifyTaskRunStatusesNames(t, reconciledRun.Status, "test-pipeline-run-success-unit-test-1") @@ -6806,8 +6793,8 @@ func TestReconcile_DependencyValidationsImmediatelyFailPipelineRun(t *testing.T) cfg := config.NewStore(logtesting.TestLogger(t)) ctx = cfg.ToContext(ctx) - prs := []*v1beta1.PipelineRun{ - parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{ + parse.MustParseV1PipelineRun(t, ` metadata: name: pipelinerun-param-invalid-result-variable namespace: foo @@ -6829,7 +6816,7 @@ spec: - image: foo:latest serviceAccountName: test-sa `), - parse.MustParseV1beta1PipelineRun(t, ` + parse.MustParseV1PipelineRun(t, ` metadata: name: pipelinerun-pipeline-result-invalid-result-variable namespace: foo @@ -6849,7 +6836,7 @@ spec: - image: foo:latest serviceAccountName: test-sa `), - parse.MustParseV1beta1PipelineRun(t, ` + parse.MustParseV1PipelineRun(t, ` metadata: name: pipelinerun-with-optional-workspace-validation namespace: foo @@ -6870,7 +6857,7 @@ spec: optional: true serviceAccountName: test-sa `), - parse.MustParseV1beta1PipelineRun(t, ` + parse.MustParseV1PipelineRun(t, ` metadata: name: pipelinerun-matrix-param-invalid-type namespace: foo @@ -6901,7 +6888,7 @@ spec: ConfigMaps: cms, PipelineRuns: prs, ServiceAccounts: []*corev1.ServiceAccount{{ - ObjectMeta: metav1.ObjectMeta{Name: prs[0].Spec.ServiceAccountName, Namespace: "foo"}, + ObjectMeta: metav1.ObjectMeta{Name: prs[0].Spec.TaskRunTemplate.ServiceAccountName, Namespace: "foo"}, }}, } @@ -6948,7 +6935,7 @@ spec: // that when the request is successfully resolved the PipelineRun begins running. func TestReconcileWithResolver(t *testing.T) { resolverName := "foobar" - pr := parse.MustParseV1beta1PipelineRun(t, ` + pr := parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: default @@ -6959,9 +6946,9 @@ spec: `) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, + PipelineRuns: []*v1.PipelineRun{pr}, ServiceAccounts: []*corev1.ServiceAccount{{ - ObjectMeta: metav1.ObjectMeta{Name: pr.Spec.ServiceAccountName, Namespace: "foo"}, + ObjectMeta: metav1.ObjectMeta{Name: pr.Spec.TaskRunTemplate.ServiceAccountName, Namespace: "foo"}, }}, } @@ -6991,7 +6978,7 @@ spec: // Mock a successful resolution var pipelineBytes = []byte(` kind: Pipeline - apiVersion: tekton.dev/v1beta1 + apiVersion: tekton.dev/v1 metadata: name: foo spec: @@ -7015,7 +7002,7 @@ spec: // PipelineRun reconciler and that the PipelineRun has now // started executing. updatedPipelineRun, _ := prt.reconcileRun("default", "pr", nil, false) - checkPipelineRunConditionStatusAndReason(t, updatedPipelineRun, corev1.ConditionUnknown, v1beta1.PipelineRunReasonRunning.String()) + checkPipelineRunConditionStatusAndReason(t, updatedPipelineRun, corev1.ConditionUnknown, v1.PipelineRunReasonRunning.String()) } // TestReconcileWithFailingResolver checks that a PipelineRun with a failing Resolver @@ -7023,7 +7010,7 @@ spec: // that when the request fails, the PipelineRun fails. func TestReconcileWithFailingResolver(t *testing.T) { resolverName := "does-not-exist" - pr := parse.MustParseV1beta1PipelineRun(t, ` + pr := parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: default @@ -7034,9 +7021,9 @@ spec: `) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, + PipelineRuns: []*v1.PipelineRun{pr}, ServiceAccounts: []*corev1.ServiceAccount{{ - ObjectMeta: metav1.ObjectMeta{Name: pr.Spec.ServiceAccountName, Namespace: "foo"}, + ObjectMeta: metav1.ObjectMeta{Name: pr.Spec.TaskRunTemplate.ServiceAccountName, Namespace: "foo"}, }}, } @@ -7079,7 +7066,7 @@ spec: // that when the request fails, the PipelineRun fails. func TestReconcileWithFailingTaskResolver(t *testing.T) { resolverName := "foobar" - pr := parse.MustParseV1beta1PipelineRun(t, ` + pr := parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: default @@ -7089,14 +7076,16 @@ spec: - name: some-task taskRef: resolver: foobar - serviceAccountName: default + taskRunTemplate: + serviceAccountName: default `) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, + PipelineRuns: []*v1.PipelineRun{pr}, ServiceAccounts: []*corev1.ServiceAccount{{ - ObjectMeta: metav1.ObjectMeta{Name: pr.Spec.ServiceAccountName, Namespace: "foo"}, + ObjectMeta: metav1.ObjectMeta{Name: pr.Spec.TaskRunTemplate.ServiceAccountName, Namespace: "foo"}, }}, + ConfigMaps: []*corev1.ConfigMap{withEnabledAlphaAPIFields(newFeatureFlagsConfigMap())}, } prt := newPipelineRunTest(t, d) @@ -7104,7 +7093,7 @@ spec: wantEvents := []string(nil) pipelinerun, _ := prt.reconcileRun(pr.Namespace, pr.Name, wantEvents, false) - checkPipelineRunConditionStatusAndReason(t, pipelinerun, corev1.ConditionUnknown, v1beta1.TaskRunReasonResolvingTaskRef) + checkPipelineRunConditionStatusAndReason(t, pipelinerun, corev1.ConditionUnknown, v1.TaskRunReasonResolvingTaskRef) client := prt.TestAssets.Clients.ResolutionRequests.ResolutionV1beta1().ResolutionRequests("default") resolutionrequests, err := client.List(prt.TestAssets.Ctx, metav1.ListOptions{}) @@ -7138,7 +7127,7 @@ spec: // that when the request is successfully resolved the PipelineRun begins running. func TestReconcileWithTaskResolver(t *testing.T) { resolverName := "foobar" - pr := parse.MustParseV1beta1PipelineRun(t, ` + pr := parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: default @@ -7151,14 +7140,16 @@ spec: params: - name: foo value: bar - serviceAccountName: default + taskRunTemplate: + serviceAccountName: default `) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, + PipelineRuns: []*v1.PipelineRun{pr}, ServiceAccounts: []*corev1.ServiceAccount{{ - ObjectMeta: metav1.ObjectMeta{Name: pr.Spec.ServiceAccountName, Namespace: "foo"}, + ObjectMeta: metav1.ObjectMeta{Name: pr.Spec.TaskRunTemplate.ServiceAccountName, Namespace: "foo"}, }}, + ConfigMaps: []*corev1.ConfigMap{withEnabledAlphaAPIFields(newFeatureFlagsConfigMap())}, } prt := newPipelineRunTest(t, d) @@ -7166,7 +7157,7 @@ spec: wantEvents := []string(nil) pipelinerun, _ := prt.reconcileRun(pr.Namespace, pr.Name, wantEvents, false) - checkPipelineRunConditionStatusAndReason(t, pipelinerun, corev1.ConditionUnknown, v1beta1.TaskRunReasonResolvingTaskRef) + checkPipelineRunConditionStatusAndReason(t, pipelinerun, corev1.ConditionUnknown, v1.TaskRunReasonResolvingTaskRef) client := prt.TestAssets.Clients.ResolutionRequests.ResolutionV1beta1().ResolutionRequests("default") resolutionrequests, err := client.List(prt.TestAssets.Ctx, metav1.ListOptions{}) @@ -7195,7 +7186,7 @@ spec: taskBytes := []byte(` kind: Task -apiVersion: tekton.dev/v1beta1 +apiVersion: tekton.dev/v1 metadata: name: foo spec: @@ -7217,21 +7208,21 @@ spec: // PipelineRun reconciler and that the PipelineRun has now // started executing. updatedPipelineRun, _ := prt.reconcileRun("default", "pr", nil, false) - checkPipelineRunConditionStatusAndReason(t, updatedPipelineRun, corev1.ConditionUnknown, v1beta1.PipelineRunReasonRunning.String()) + checkPipelineRunConditionStatusAndReason(t, updatedPipelineRun, corev1.ConditionUnknown, v1.PipelineRunReasonRunning.String()) } -func getTaskRunWithTaskSpec(tr, pr, p, t string, labels, annotations map[string]string) *v1beta1.TaskRun { +func getTaskRunWithTaskSpec(tr, pr, p, t string, labels, annotations map[string]string) *v1.TaskRun { om := taskRunObjectMeta(tr, "foo", pr, p, t, false) for k, v := range labels { om.Labels[k] = v } om.Annotations = annotations - return &v1beta1.TaskRun{ + return &v1.TaskRun{ ObjectMeta: om, - Spec: v1beta1.TaskRunSpec{ - TaskSpec: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + Spec: v1.TaskRunSpec{ + TaskSpec: &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "mystep", Image: "myimage", }}, @@ -7257,7 +7248,7 @@ func taskRunObjectMeta(trName, ns, prName, pipelineName, pipelineTaskName string OwnerReferences: []metav1.OwnerReference{{ Kind: "PipelineRun", Name: prName, - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Controller: &trueb, BlockOwnerDeletion: &trueb, }}, @@ -7269,7 +7260,7 @@ func taskRunObjectMeta(trName, ns, prName, pipelineName, pipelineTaskName string Annotations: map[string]string{}, } if !skipMemberOfLabel { - om.Labels[pipeline.MemberOfLabelKey] = v1beta1.PipelineTasks + om.Labels[pipeline.MemberOfLabelKey] = v1.PipelineTasks } return om } @@ -7286,14 +7277,14 @@ func createHelloWorldTaskRunWithStatus( t *testing.T, trName, ns, prName, pName, podName string, condition apis.Condition, -) *v1beta1.TaskRun { +) *v1.TaskRun { t.Helper() p := createHelloWorldTaskRun(t, trName, ns, prName, pName) - p.Status = v1beta1.TaskRunStatus{ + p.Status = v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{condition}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + TaskRunStatusFields: v1.TaskRunStatusFields{ PodName: podName, }, } @@ -7304,7 +7295,7 @@ func createHelloWorldTaskRunWithStatusTaskLabel( t *testing.T, trName, ns, prName, pName, podName, taskLabel string, condition apis.Condition, -) *v1beta1.TaskRun { +) *v1.TaskRun { t.Helper() p := createHelloWorldTaskRunWithStatus(t, trName, ns, prName, pName, podName, condition) p.Labels[pipeline.PipelineTaskLabelKey] = taskLabel @@ -7312,9 +7303,9 @@ func createHelloWorldTaskRunWithStatusTaskLabel( return p } -func createHelloWorldTaskRun(t *testing.T, trName, ns, prName, pName string) *v1beta1.TaskRun { +func createHelloWorldTaskRun(t *testing.T, trName, ns, prName, pName string) *v1.TaskRun { t.Helper() - return parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + return parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -7328,9 +7319,9 @@ spec: `, trName, ns, pipeline.PipelineLabelKey, pName, pipeline.PipelineRunLabelKey, prName)) } -func createCancelledPipelineRun(t *testing.T, prName string, specStatus v1beta1.PipelineRunSpecStatus) *v1beta1.PipelineRun { +func createCancelledPipelineRun(t *testing.T, prName string, specStatus v1.PipelineRunSpecStatus) *v1.PipelineRun { t.Helper() - return parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + return parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -7342,14 +7333,14 @@ spec: status: startTime: %s`, prName, specStatus, now.Format(time.RFC3339))) } -func verifyTaskRunStatusesCount(t *testing.T, prStatus v1beta1.PipelineRunStatus, taskCount int) { +func verifyTaskRunStatusesCount(t *testing.T, prStatus v1.PipelineRunStatus, taskCount int) { t.Helper() if len(filterChildRefsForKind(prStatus.ChildReferences, taskRun)) != taskCount { t.Errorf("Expected PipelineRun status ChildReferences to have %d tasks, but was %d", taskCount, len(filterChildRefsForKind(prStatus.ChildReferences, taskRun))) } } -func verifyTaskRunStatusesNames(t *testing.T, prStatus v1beta1.PipelineRunStatus, taskNames ...string) { +func verifyTaskRunStatusesNames(t *testing.T, prStatus v1.PipelineRunStatus, taskNames ...string) { t.Helper() tnMap := make(map[string]struct{}) @@ -7364,14 +7355,14 @@ func verifyTaskRunStatusesNames(t *testing.T, prStatus v1beta1.PipelineRunStatus } } -func verifyCustomRunOrRunStatusesCount(t *testing.T, kind string, prStatus v1beta1.PipelineRunStatus, runCount int) { +func verifyCustomRunOrRunStatusesCount(t *testing.T, kind string, prStatus v1.PipelineRunStatus, runCount int) { t.Helper() if len(filterChildRefsForKind(prStatus.ChildReferences, kind)) != runCount { t.Errorf("Expected PipelineRun status ChildReferences to have %d %ss, but was %d", runCount, kind, len(filterChildRefsForKind(prStatus.ChildReferences, kind))) } } -func verifyCustomRunOrRunStatusesNames(t *testing.T, kind string, prStatus v1beta1.PipelineRunStatus, runNames ...string) { +func verifyCustomRunOrRunStatusesNames(t *testing.T, kind string, prStatus v1.PipelineRunStatus, runNames ...string) { t.Helper() rnMap := make(map[string]struct{}) @@ -7386,9 +7377,9 @@ func verifyCustomRunOrRunStatusesNames(t *testing.T, kind string, prStatus v1bet } } -func verifyTaskRunStatusesWhenExpressions(t *testing.T, prStatus v1beta1.PipelineRunStatus, trName string, expectedWhen []v1beta1.WhenExpression) { +func verifyTaskRunStatusesWhenExpressions(t *testing.T, prStatus v1.PipelineRunStatus, trName string, expectedWhen []v1.WhenExpression) { t.Helper() - var actualWhenExpressionsInTaskRun []v1beta1.WhenExpression + var actualWhenExpressionsInTaskRun []v1.WhenExpression for _, cr := range prStatus.ChildReferences { if cr.Name == trName { actualWhenExpressionsInTaskRun = append(actualWhenExpressionsInTaskRun, cr.WhenExpressions...) @@ -7399,8 +7390,8 @@ func verifyTaskRunStatusesWhenExpressions(t *testing.T, prStatus v1beta1.Pipelin } } -func filterChildRefsForKind(childRefs []v1beta1.ChildStatusReference, kind string) []v1beta1.ChildStatusReference { - var filtered []v1beta1.ChildStatusReference +func filterChildRefsForKind(childRefs []v1.ChildStatusReference, kind string) []v1.ChildStatusReference { + var filtered []v1.ChildStatusReference for _, cr := range childRefs { if cr.Kind == kind { filtered = append(filtered, cr) @@ -7409,9 +7400,9 @@ func filterChildRefsForKind(childRefs []v1beta1.ChildStatusReference, kind strin return filtered } -func mustParseTaskRunWithObjectMeta(t *testing.T, objectMeta metav1.ObjectMeta, asYAML string) *v1beta1.TaskRun { +func mustParseTaskRunWithObjectMeta(t *testing.T, objectMeta metav1.ObjectMeta, asYAML string) *v1.TaskRun { t.Helper() - tr := parse.MustParseV1beta1TaskRun(t, asYAML) + tr := parse.MustParseV1TaskRun(t, asYAML) tr.ObjectMeta = objectMeta return tr } @@ -7423,9 +7414,9 @@ func mustParseCustomRunWithObjectMeta(t *testing.T, objectMeta metav1.ObjectMeta return r } -func helloWorldPipelineWithRunAfter(t *testing.T) *v1beta1.Pipeline { +func helloWorldPipelineWithRunAfter(t *testing.T) *v1.Pipeline { t.Helper() - return parse.MustParseV1beta1Pipeline(t, ` + return parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -7442,7 +7433,7 @@ spec: `) } -func checkPipelineRunConditionStatusAndReason(t *testing.T, reconciledRun *v1beta1.PipelineRun, conditionStatus corev1.ConditionStatus, conditionReason string) { +func checkPipelineRunConditionStatusAndReason(t *testing.T, reconciledRun *v1.PipelineRun, conditionStatus corev1.ConditionStatus, conditionReason string) { t.Helper() condition := reconciledRun.Status.GetCondition(apis.ConditionSucceeded) @@ -7460,11 +7451,11 @@ func checkPipelineRunConditionStatusAndReason(t *testing.T, reconciledRun *v1bet func TestGetTaskrunWorkspaces_Failure(t *testing.T) { tests := []struct { name string - pr *v1beta1.PipelineRun + pr *v1.PipelineRun expectedError string }{{ name: "failure declaring workspace with different name", - pr: parse.MustParseV1beta1PipelineRun(t, ` + pr: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline spec: @@ -7482,7 +7473,7 @@ spec: }, { name: "failure mapping workspace with different name", - pr: parse.MustParseV1beta1PipelineRun(t, ` + pr: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline spec: @@ -7501,7 +7492,7 @@ spec: }, { name: "failure propagating workspaces using scripts", - pr: parse.MustParseV1beta1PipelineRun(t, ` + pr: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline spec: @@ -7522,7 +7513,7 @@ spec: }, { name: "failure propagating workspaces using args", - pr: parse.MustParseV1beta1PipelineRun(t, ` + pr: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline spec: @@ -7569,20 +7560,20 @@ spec: func TestGetTaskrunWorkspaces_Success(t *testing.T) { tests := []struct { name string - pr *v1beta1.PipelineRun + pr *v1.PipelineRun rprt *resources.ResolvedPipelineTask }{{ name: "valid declaration of workspace names", - pr: parse.MustParseV1beta1PipelineRun(t, ` + pr: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline spec: workspaces: - name: source`), rprt: &resources.ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "resolved-pipelinetask", - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{{ + Workspaces: []v1.WorkspacePipelineTaskBinding{{ Name: "my-task-workspace", Workspace: "source", }}, @@ -7591,16 +7582,16 @@ spec: }, { name: "valid mapping with same workspace names", - pr: parse.MustParseV1beta1PipelineRun(t, ` + pr: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline spec: workspaces: - name: source`), rprt: &resources.ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "resolved-pipelinetask", - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{{ + Workspaces: []v1.WorkspacePipelineTaskBinding{{ Name: "source", Workspace: "", }}, @@ -7609,18 +7600,18 @@ spec: }, { name: "propagating workspaces using scripts", - pr: parse.MustParseV1beta1PipelineRun(t, ` + pr: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline spec: workspaces: - name: source`), rprt: &resources.ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "resolved-pipelinetask", - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "mystep", Image: "myimage", Script: "echo $(workspaces.source.path)", @@ -7632,18 +7623,18 @@ spec: }, { name: "propagating workspaces using args", - pr: parse.MustParseV1beta1PipelineRun(t, ` + pr: parse.MustParseV1PipelineRun(t, ` metadata: name: pipeline spec: workspaces: - name: source`), rprt: &resources.ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "resolved-pipelinetask", - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "mystep", Image: "myimage", Command: []string{"/mycmd"}, @@ -7651,7 +7642,7 @@ spec: }}, }, }, - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{{ + Workspaces: []v1.WorkspacePipelineTaskBinding{{ Name: "source", }}, }, @@ -7676,8 +7667,8 @@ func Test_taskWorkspaceByWorkspaceVolumeSource(t *testing.T) { testPr := &v1beta1.PipelineRun{} tests := []struct { name, taskWorkspaceName, pipelineWorkspaceName, prName string - wb v1beta1.WorkspaceBinding - expectedBinding v1beta1.WorkspaceBinding + wb v1.WorkspaceBinding + expectedBinding v1.WorkspaceBinding disableAffinityAssistant bool }{ { @@ -7685,11 +7676,11 @@ func Test_taskWorkspaceByWorkspaceVolumeSource(t *testing.T) { prName: "test-pipeline-run", taskWorkspaceName: "task-workspace", pipelineWorkspaceName: "pipeline-workspace", - wb: v1beta1.WorkspaceBinding{ + wb: v1.WorkspaceBinding{ Name: "foo", VolumeClaimTemplate: &corev1.PersistentVolumeClaim{}, }, - expectedBinding: v1beta1.WorkspaceBinding{ + expectedBinding: v1.WorkspaceBinding{ Name: "task-workspace", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "pvc-2c26b46b68-affinity-assistant-e011a5ef79-0", @@ -7700,11 +7691,11 @@ func Test_taskWorkspaceByWorkspaceVolumeSource(t *testing.T) { name: "PVC Workspace without Affinity Assistant", prName: "test-pipeline-run", taskWorkspaceName: "task-workspace", - wb: v1beta1.WorkspaceBinding{ + wb: v1.WorkspaceBinding{ Name: "foo", VolumeClaimTemplate: &corev1.PersistentVolumeClaim{}, }, - expectedBinding: v1beta1.WorkspaceBinding{ + expectedBinding: v1.WorkspaceBinding{ Name: "task-workspace", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "pvc-2c26b46b68", @@ -7715,11 +7706,11 @@ func Test_taskWorkspaceByWorkspaceVolumeSource(t *testing.T) { { name: "non-PVC Workspace", taskWorkspaceName: "task-workspace", - wb: v1beta1.WorkspaceBinding{ + wb: v1.WorkspaceBinding{ Name: "foo", EmptyDir: &corev1.EmptyDirVolumeSource{}, }, - expectedBinding: v1beta1.WorkspaceBinding{ + expectedBinding: v1.WorkspaceBinding{ Name: "task-workspace", EmptyDir: &corev1.EmptyDirVolumeSource{}, }, @@ -7758,8 +7749,8 @@ func TestReconcile_PropagatePipelineTaskRunSpecMetadata(t *testing.T) { prName := "test-pipeline-run" trName := "test-pipeline-run-hello-world-1" - ps := []*v1beta1.Pipeline{simpleHelloWorldPipeline} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + ps := []*v1.Pipeline{simpleHelloWorldPipeline} + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run namespace: foo @@ -7773,9 +7764,9 @@ spec: PipelineTaskRunSpecLabel: PipelineTaskRunSpecValue annotations: PipelineTaskRunSpecAnnotation: PipelineTaskRunSpecValue - taskServiceAccountName: custom-sa + serviceAccountName: custom-sa `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} d := test.Data{ PipelineRuns: prs, @@ -7814,7 +7805,7 @@ func TestReconcile_AddMetadataByPrecedence(t *testing.T) { prName := "test-pipeline-run" trName := "test-pipeline-run-hello-world-1" - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -7831,7 +7822,7 @@ spec: annotations: TestPrecedenceAnnotation: PipelineTaskSpecValue `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run namespace: foo @@ -7850,9 +7841,9 @@ spec: TestPrecedenceLabel: PipelineTaskRunSpecValue annotations: TestPrecedenceAnnotation: PipelineTaskRunSpecValue - taskServiceAccountName: custom-sa + serviceAccountName: custom-sa `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} d := test.Data{ PipelineRuns: prs, @@ -7888,7 +7879,7 @@ spec: func TestReconciler_PipelineTaskMatrix(t *testing.T) { names.TestingSeed() - task := parse.MustParseV1beta1Task(t, ` + task := parse.MustParseV1Task(t, ` metadata: name: mytask namespace: foo @@ -7904,7 +7895,7 @@ spec: echo "$(params.platform) and $(params.browser) and $(params.version)" `) - expectedTaskRuns := []*v1beta1.TaskRun{ + expectedTaskRuns := []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("pr-platforms-and-browsers-0", "foo", "pr", "p", "platforms-and-browsers", false), @@ -8065,13 +8056,13 @@ spec: tests := []struct { name string memberOf string - p *v1beta1.Pipeline - tr *v1beta1.TaskRun - expectedPipelineRun *v1beta1.PipelineRun + p *v1.Pipeline + tr *v1.TaskRun + expectedPipelineRun *v1.PipelineRun }{{ name: "p-dag", memberOf: "tasks", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -8096,7 +8087,7 @@ spec: - name: version value: v0.33.0 `, "p-dag")), - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -8104,7 +8095,8 @@ metadata: labels: tekton.dev/pipeline: p-dag spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-dag status: @@ -8135,39 +8127,39 @@ status: reason: "Running" message: "Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-0 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-1 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-2 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-3 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-4 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-5 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-6 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-7 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-8 pipelineTaskName: platforms-and-browsers @@ -8185,7 +8177,7 @@ status: }, { name: "p-finally", memberOf: "finally", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -8244,7 +8236,7 @@ status: reason: Succeeded message: All Tasks have completed executing `), - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -8252,7 +8244,8 @@ metadata: labels: tekton.dev/pipeline: p-finally spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-finally status: @@ -8295,43 +8288,43 @@ status: reason: "Running" message: "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-unmatrixed-pt pipelineTaskName: unmatrixed-pt - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-0 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-1 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-2 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-3 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-4 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-5 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-6 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-7 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-8 pipelineTaskName: platforms-and-browsers @@ -8349,29 +8342,30 @@ status: }} for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: pr namespace: foo spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: %s `, tt.name)) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, - Pipelines: []*v1beta1.Pipeline{tt.p}, - Tasks: []*v1beta1.Task{task}, + PipelineRuns: []*v1.PipelineRun{pr}, + Pipelines: []*v1.Pipeline{tt.p}, + Tasks: []*v1.Task{task}, ConfigMaps: cms, } if tt.tr != nil { - d.TaskRuns = []*v1beta1.TaskRun{tt.tr} + d.TaskRuns = []*v1.TaskRun{tt.tr} } prt := newPipelineRunTest(t, d) defer prt.Cancel() _, clients := prt.reconcileRun("foo", "pr", []string{}, false) - taskRuns, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + taskRuns, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=pr,tekton.dev/pipeline=%s,tekton.dev/pipelineTask=platforms-and-browsers", tt.name), Limit: 1, }) @@ -8392,7 +8386,7 @@ spec: } } - pipelineRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) + pipelineRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) if err != nil { t.Fatalf("Got an error getting reconciled run out of fake client: %s", err) } @@ -8402,10 +8396,11 @@ spec: }) } } + func TestReconciler_PipelineTaskMatrixWithArrayReferences(t *testing.T) { names.TestingSeed() - task := parse.MustParseV1beta1Task(t, ` + task := parse.MustParseV1Task(t, ` metadata: name: mytask namespace: foo @@ -8426,12 +8421,12 @@ spec: tests := []struct { name string memberOf string - p *v1beta1.Pipeline - tr *v1beta1.TaskRun - expectedPipelineRun *v1beta1.PipelineRun + p *v1.Pipeline + tr *v1.TaskRun + expectedPipelineRun *v1.PipelineRun }{{ name: "p-dag", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -8453,7 +8448,7 @@ spec: value: $(params.browsers[*]) `, "p-dag")), - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -8472,7 +8467,8 @@ spec: - chrome - safari - firefox - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-dag status: @@ -8505,39 +8501,39 @@ status: reason: "Running" message: "Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-0 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-1 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-2 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-3 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-4 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-5 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-6 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-7 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-8 pipelineTaskName: platforms-and-browsers @@ -8555,12 +8551,13 @@ status: }} for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: pr namespace: foo spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa params: - name: platforms value: @@ -8576,13 +8573,13 @@ spec: name: %s `, tt.name)) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, - Pipelines: []*v1beta1.Pipeline{tt.p}, - Tasks: []*v1beta1.Task{task}, + PipelineRuns: []*v1.PipelineRun{pr}, + Pipelines: []*v1.Pipeline{tt.p}, + Tasks: []*v1.Task{task}, ConfigMaps: cms, } if tt.tr != nil { - d.TaskRuns = []*v1beta1.TaskRun{tt.tr} + d.TaskRuns = []*v1.TaskRun{tt.tr} } expectedTaskRunsData := []struct { @@ -8617,7 +8614,7 @@ spec: platform: "windows", }} - expectedTaskRuns := []*v1beta1.TaskRun{} + expectedTaskRuns := []*v1.TaskRun{} for i, trd := range expectedTaskRunsData { trName := "pr-platforms-and-browsers-" + strconv.Itoa(i) expectedTaskRuns = append(expectedTaskRuns, mustParseTaskRunWithObjectMeta(t, @@ -8663,7 +8660,7 @@ labels: func TestReconciler_PipelineTaskIncludeParams(t *testing.T) { names.TestingSeed() - task := parse.MustParseV1beta1Task(t, ` + task := parse.MustParseV1Task(t, ` metadata: name: mytask namespace: foo @@ -8684,7 +8681,7 @@ spec: echo "$(params.GOARCH) and $(params.version)" `) - expectedTaskRuns := []*v1beta1.TaskRun{ + expectedTaskRuns := []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("pr-matrix-include-0", "foo", "pr", "p", "matrix-include", false), @@ -8817,13 +8814,13 @@ spec: tests := []struct { name string memberOf string - p *v1beta1.Pipeline - tr *v1beta1.TaskRun - expectedPipelineRun *v1beta1.PipelineRun + p *v1.Pipeline + tr *v1.TaskRun + expectedPipelineRun *v1.PipelineRun }{{ name: "p-dag", memberOf: "tasks", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -8865,7 +8862,7 @@ spec: - name: GOARCH value: I-do-not-exist `, "p-dag")), - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -8873,7 +8870,8 @@ metadata: labels: tekton.dev/pipeline: p-dag spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-dag status: @@ -8921,31 +8919,31 @@ status: reason: "Running" message: "Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-0 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-1 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-2 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-3 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-4 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-5 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-6 pipelineTaskName: matrix-include @@ -8963,7 +8961,7 @@ status: }, { name: "p-finally", memberOf: "finally", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -9047,7 +9045,7 @@ status: reason: Succeeded message: All Tasks have completed executing `), - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -9055,7 +9053,8 @@ metadata: labels: tekton.dev/pipeline: p-finally spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-finally status: @@ -9119,35 +9118,35 @@ status: reason: "Running" message: "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-unmatrixed-pt pipelineTaskName: unmatrixed-pt - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-0 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-1 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-2 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-3 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-4 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-5 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-6 pipelineTaskName: matrix-include @@ -9165,29 +9164,30 @@ status: }} for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: pr namespace: foo spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: %s `, tt.name)) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, - Pipelines: []*v1beta1.Pipeline{tt.p}, - Tasks: []*v1beta1.Task{task}, + PipelineRuns: []*v1.PipelineRun{pr}, + Pipelines: []*v1.Pipeline{tt.p}, + Tasks: []*v1.Task{task}, ConfigMaps: cms, } if tt.tr != nil { - d.TaskRuns = []*v1beta1.TaskRun{tt.tr} + d.TaskRuns = []*v1.TaskRun{tt.tr} } prt := newPipelineRunTest(t, d) defer prt.Cancel() _, clients := prt.reconcileRun("foo", "pr", []string{}, false) - taskRuns, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + taskRuns, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=pr,tekton.dev/pipeline=%s,tekton.dev/pipelineTask=matrix-include", tt.name), Limit: 1, }) @@ -9208,7 +9208,7 @@ spec: } } - pipelineRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) + pipelineRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) if err != nil { t.Fatalf("Got an error getting reconciled run out of fake client: %s", err) } @@ -9223,7 +9223,7 @@ spec: func TestReconciler_PipelineTaskExplicitCombos(t *testing.T) { names.TestingSeed() - task := parse.MustParseV1beta1Task(t, ` + task := parse.MustParseV1Task(t, ` metadata: name: mytask namespace: foo @@ -9238,7 +9238,7 @@ spec: echo "$(params.IMAGE) and $(params.DOCKERFILE)" `) - expectedTaskRuns := []*v1beta1.TaskRun{ + expectedTaskRuns := []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("pr-matrix-include-0", "foo", "pr", "p", "matrix-include", false), @@ -9291,13 +9291,13 @@ spec: tests := []struct { name string memberOf string - p *v1beta1.Pipeline - tr *v1beta1.TaskRun - expectedPipelineRun *v1beta1.PipelineRun + p *v1.Pipeline + tr *v1.TaskRun + expectedPipelineRun *v1.PipelineRun }{{ name: "p-dag", memberOf: "tasks", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -9327,7 +9327,7 @@ spec: - name: DOCKERFILE value: path/to/Dockerfile3 `, "p-dag")), - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -9335,7 +9335,8 @@ metadata: labels: tekton.dev/pipeline: p-dag spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-dag status: @@ -9371,15 +9372,15 @@ status: reason: "Running" message: "Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-0 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-1 pipelineTaskName: matrix-include - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-matrix-include-2 pipelineTaskName: matrix-include @@ -9398,29 +9399,30 @@ status: } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: pr namespace: foo spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: %s `, tt.name)) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, - Pipelines: []*v1beta1.Pipeline{tt.p}, - Tasks: []*v1beta1.Task{task}, + PipelineRuns: []*v1.PipelineRun{pr}, + Pipelines: []*v1.Pipeline{tt.p}, + Tasks: []*v1.Task{task}, ConfigMaps: cms, } if tt.tr != nil { - d.TaskRuns = []*v1beta1.TaskRun{tt.tr} + d.TaskRuns = []*v1.TaskRun{tt.tr} } prt := newPipelineRunTest(t, d) defer prt.Cancel() _, clients := prt.reconcileRun("foo", "pr", []string{}, false) - taskRuns, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + taskRuns, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=pr,tekton.dev/pipeline=%s,tekton.dev/pipelineTask=matrix-include", tt.name), Limit: 1, }) @@ -9441,7 +9443,7 @@ spec: } } - pipelineRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) + pipelineRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) if err != nil { t.Fatalf("Got an error getting reconciled run out of fake client: %s", err) } @@ -9456,7 +9458,7 @@ spec: func TestReconciler_PipelineTaskMatrixWithResults(t *testing.T) { names.TestingSeed() - task := parse.MustParseV1beta1Task(t, ` + task := parse.MustParseV1Task(t, ` metadata: name: mytask namespace: foo @@ -9472,7 +9474,7 @@ spec: echo "$(params.platform) and $(params.browser) and $(params.version)" `) - taskwithresults := parse.MustParseV1beta1Task(t, ` + taskwithresults := parse.MustParseV1Task(t, ` metadata: name: taskwithresults namespace: foo @@ -9498,7 +9500,7 @@ spec: printf v0.33.0 | tee /tekton/results/version `) - expectedTaskRuns := []*v1beta1.TaskRun{ + expectedTaskRuns := []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("pr-platforms-and-browsers-0", "foo", "pr", "p", "platforms-and-browsers", false), @@ -9659,13 +9661,13 @@ spec: tests := []struct { name string memberOf string - p *v1beta1.Pipeline - tr *v1beta1.TaskRun - expectedPipelineRun *v1beta1.PipelineRun + p *v1.Pipeline + tr *v1.TaskRun + expectedPipelineRun *v1.PipelineRun }{{ name: "p-dag", memberOf: "tasks", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -9717,7 +9719,7 @@ status: status: "True" reason: Succeeded message: All Tasks have completed executing - taskResults: + results: - name: platform-1 value: linux - name: platform-2 @@ -9733,7 +9735,7 @@ status: - name: version value: v0.33.0 `), - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -9741,7 +9743,8 @@ metadata: labels: tekton.dev/pipeline: p-dag spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-dag status: @@ -9783,43 +9786,43 @@ status: reason: "Running" message: "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-pt-with-result pipelineTaskName: pt-with-result - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-0 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-1 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-2 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-3 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-4 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-5 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-6 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-7 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-8 pipelineTaskName: platforms-and-browsers @@ -9837,7 +9840,7 @@ status: }, { name: "p-finally", memberOf: "finally", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -9891,7 +9894,7 @@ status: status: "True" reason: Succeeded message: All Tasks have completed executing - taskResults: + results: - name: platform-1 value: linux - name: platform-2 @@ -9907,7 +9910,7 @@ status: - name: version value: v0.33.0 `), - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -9915,7 +9918,8 @@ metadata: labels: tekton.dev/pipeline: p-finally spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-finally status: @@ -9958,43 +9962,43 @@ status: reason: "Running" message: "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-pt-with-result pipelineTaskName: pt-with-result - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-0 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-1 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-2 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-3 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-4 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-5 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-6 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-7 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-8 pipelineTaskName: platforms-and-browsers @@ -10012,29 +10016,30 @@ status: }} for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: pr namespace: foo spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: %s `, tt.name)) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, - Pipelines: []*v1beta1.Pipeline{tt.p}, - Tasks: []*v1beta1.Task{task, taskwithresults}, + PipelineRuns: []*v1.PipelineRun{pr}, + Pipelines: []*v1.Pipeline{tt.p}, + Tasks: []*v1.Task{task, taskwithresults}, ConfigMaps: cms, } if tt.tr != nil { - d.TaskRuns = []*v1beta1.TaskRun{tt.tr} + d.TaskRuns = []*v1.TaskRun{tt.tr} } prt := newPipelineRunTest(t, d) defer prt.Cancel() _, clients := prt.reconcileRun("foo", "pr", []string{}, false) - taskRuns, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + taskRuns, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=pr,tekton.dev/pipeline=%s,tekton.dev/pipelineTask=platforms-and-browsers", tt.name), Limit: 1, }) @@ -10055,7 +10060,7 @@ spec: } } - pipelineRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) + pipelineRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) if err != nil { t.Fatalf("Got an error getting reconciled run out of fake client: %s", err) } @@ -10069,7 +10074,7 @@ spec: func TestReconciler_PipelineTaskMatrixResultsWithArrayIndexing(t *testing.T) { names.TestingSeed() - task := parse.MustParseV1beta1Task(t, ` + task := parse.MustParseV1Task(t, ` metadata: name: mytask namespace: foo @@ -10083,7 +10088,7 @@ spec: script: | echo "$(params.platform)" `) - taskwithresults := parse.MustParseV1beta1Task(t, ` + taskwithresults := parse.MustParseV1Task(t, ` metadata: name: taskwithresults namespace: foo @@ -10104,14 +10109,14 @@ spec: tests := []struct { name string pName string - p *v1beta1.Pipeline - tr *v1beta1.TaskRun - expectedTaskRuns []*v1beta1.TaskRun - expectedPipelineRun *v1beta1.PipelineRun + p *v1.Pipeline + tr *v1.TaskRun + expectedTaskRuns []*v1.TaskRun + expectedPipelineRun *v1.PipelineRun }{{ name: "indexing results in params", pName: "p-dag", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -10147,14 +10152,14 @@ status: status: "True" reason: Succeeded message: All Tasks have completed executing - taskResults: + results: - name: platforms value: - linux - mac - windows `), - expectedTaskRuns: []*v1beta1.TaskRun{ + expectedTaskRuns: []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("pr-echo-platforms", "foo", "pr", "p-dag", "echo-platforms", false), @@ -10175,7 +10180,7 @@ labels: tekton.dev/pipeline: p-dag `), }, - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -10183,7 +10188,8 @@ metadata: labels: tekton.dev/pipeline: p-dag spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-dag status: @@ -10212,11 +10218,11 @@ status: reason: "Running" message: "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-pt-with-result pipelineTaskName: pt-with-result - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-echo-platforms pipelineTaskName: echo-platforms @@ -10234,7 +10240,7 @@ status: }, { name: "indexing results in matrix.params", pName: "p-dag-2", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -10271,14 +10277,14 @@ status: status: "True" reason: Succeeded message: All Tasks have completed executing - taskResults: + results: - name: platforms value: - linux - mac - windows `), - expectedTaskRuns: []*v1beta1.TaskRun{ + expectedTaskRuns: []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("pr-echo-platforms-0", "foo", "pr", "p-dag-2", "echo-platforms", false), @@ -10328,7 +10334,7 @@ labels: tekton.dev/pipeline: p-dag-2 `), }, - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -10336,7 +10342,8 @@ metadata: labels: tekton.dev/pipeline: p-dag-2 spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-dag-2 status: @@ -10366,19 +10373,19 @@ status: reason: "Running" message: "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-pt-with-result pipelineTaskName: pt-with-result - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-echo-platforms-0 pipelineTaskName: echo-platforms - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-echo-platforms-1 pipelineTaskName: echo-platforms - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-echo-platforms-2 pipelineTaskName: echo-platforms @@ -10396,23 +10403,24 @@ status: }} for _, tt := range tests { t.Run(tt.pName, func(t *testing.T) { - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: pr namespace: foo spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: %s `, tt.pName)) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, - Pipelines: []*v1beta1.Pipeline{tt.p}, - Tasks: []*v1beta1.Task{task, taskwithresults}, + PipelineRuns: []*v1.PipelineRun{pr}, + Pipelines: []*v1.Pipeline{tt.p}, + Tasks: []*v1.Task{task, taskwithresults}, ConfigMaps: cms, } if tt.tr != nil { - d.TaskRuns = []*v1beta1.TaskRun{tt.tr} + d.TaskRuns = []*v1.TaskRun{tt.tr} } prt := newPipelineRunTest(t, d) defer prt.Cancel() @@ -10438,7 +10446,7 @@ spec: func TestReconciler_PipelineTaskMatrixWithRetries(t *testing.T) { names.TestingSeed() - task := parse.MustParseV1beta1Task(t, ` + task := parse.MustParseV1Task(t, ` metadata: name: mytask namespace: foo @@ -10459,13 +10467,13 @@ spec: tests := []struct { name string - trs []*v1beta1.TaskRun - prs []*v1beta1.PipelineRun - expectedPipelineRun *v1beta1.PipelineRun - expectedTaskRuns []*v1beta1.TaskRun + trs []*v1.TaskRun + prs []*v1.PipelineRun + expectedPipelineRun *v1.PipelineRun + expectedTaskRuns []*v1.TaskRun }{{ name: "matrixed pipelinetask with retries, where one taskrun has failed and another one is running", - trs: []*v1beta1.TaskRun{ + trs: []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("pr-platforms-and-browsers-0", "foo", "pr", "p", "platforms-and-browsers", false), @@ -10511,8 +10519,8 @@ status: status: "Unknown" `), }, - prs: []*v1beta1.PipelineRun{ - parse.MustParseV1beta1PipelineRun(t, ` + prs: []*v1.PipelineRun{ + parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -10546,17 +10554,17 @@ status: reason: "Running" message: "Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-0 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-1 pipelineTaskName: platforms-and-browsers `), }, - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -10590,11 +10598,11 @@ status: reason: "Running" message: "Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-0 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-1 pipelineTaskName: platforms-and-browsers @@ -10609,7 +10617,7 @@ status: ResultExtractionMethod: "termination-message" MaxResultSize: 4096 `), - expectedTaskRuns: []*v1beta1.TaskRun{ + expectedTaskRuns: []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("pr-platforms-and-browsers-0", "foo", "pr", "p", "platforms-and-browsers", false), @@ -10657,7 +10665,7 @@ status: }, }, { name: "matrixed pipelinetask with retries, where both taskruns have failed", - trs: []*v1beta1.TaskRun{ + trs: []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("pr-platforms-and-browsers-0", "foo", "pr", "p", "platforms-and-browsers", false), @@ -10707,8 +10715,8 @@ status: type: Succeeded `), }, - prs: []*v1beta1.PipelineRun{ - parse.MustParseV1beta1PipelineRun(t, ` + prs: []*v1.PipelineRun{ + parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -10742,17 +10750,17 @@ status: reason: "Running" message: "Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-0 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-1 pipelineTaskName: platforms-and-browsers `), }, - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -10786,11 +10794,11 @@ status: reason: "Running" message: "Tasks Completed: 0 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-0 pipelineTaskName: platforms-and-browsers - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-platforms-and-browsers-1 pipelineTaskName: platforms-and-browsers @@ -10805,7 +10813,7 @@ status: ResultExtractionMethod: "termination-message" MaxResultSize: 4096 `), - expectedTaskRuns: []*v1beta1.TaskRun{ + expectedTaskRuns: []*v1.TaskRun{ mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("pr-platforms-and-browsers-0", "foo", "pr", "p", "platforms-and-browsers", false), @@ -10860,7 +10868,7 @@ status: for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { d := test.Data{ - Tasks: []*v1beta1.Task{task}, + Tasks: []*v1.Task{task}, TaskRuns: tt.trs, PipelineRuns: tt.prs, ConfigMaps: cms, @@ -10869,7 +10877,7 @@ status: defer prt.Cancel() _, clients := prt.reconcileRun("foo", "pr", []string{}, false) - taskRuns, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ + taskRuns, err := clients.Pipeline.TektonV1().TaskRuns("foo").List(prt.TestAssets.Ctx, metav1.ListOptions{ LabelSelector: "tekton.dev/pipelineRun=pr,tekton.dev/pipelineTask=platforms-and-browsers", Limit: 1, }) @@ -10888,7 +10896,7 @@ status: } } - pipelineRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) + pipelineRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) if err != nil { t.Fatalf("Got an error getting reconciled run out of fake client: %s", err) } @@ -10903,7 +10911,7 @@ status: func TestReconciler_PipelineTaskMatrixWithCustomTask(t *testing.T) { names.TestingSeed() - task := parse.MustParseV1beta1Task(t, ` + task := parse.MustParseV1Task(t, ` metadata: name: mytask namespace: foo @@ -11100,13 +11108,13 @@ spec: tests := []struct { name string memberOf string - p *v1beta1.Pipeline - tr *v1beta1.TaskRun - expectedPipelineRun *v1beta1.PipelineRun + p *v1.Pipeline + tr *v1.TaskRun + expectedPipelineRun *v1.PipelineRun }{{ name: "p-dag", memberOf: "tasks", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -11132,7 +11140,7 @@ spec: - name: version value: v0.1 `, "p-dag")), - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -11140,7 +11148,8 @@ metadata: labels: tekton.dev/pipeline: p-dag spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-dag status: @@ -11221,7 +11230,7 @@ status: }, { name: "p-finally", memberOf: "finally", - p: parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + p: parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: foo @@ -11281,7 +11290,7 @@ status: reason: Succeeded message: All Tasks have completed executing `), - expectedPipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + expectedPipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: pr namespace: foo @@ -11289,7 +11298,8 @@ metadata: labels: tekton.dev/pipeline: p-finally spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: p-finally status: @@ -11332,7 +11342,7 @@ status: reason: "Running" message: "Tasks Completed: 1 (Failed: 0, Cancelled 0), Incomplete: 1, Skipped: 0" childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: pr-unmatrixed-pt pipelineTaskName: unmatrixed-pt @@ -11386,23 +11396,24 @@ status: }} for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: pr namespace: foo spec: - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa pipelineRef: name: %s `, tt.name)) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, - Pipelines: []*v1beta1.Pipeline{tt.p}, - Tasks: []*v1beta1.Task{task}, + PipelineRuns: []*v1.PipelineRun{pr}, + Pipelines: []*v1.Pipeline{tt.p}, + Tasks: []*v1.Task{task}, ConfigMaps: cms, } if tt.tr != nil { - d.TaskRuns = []*v1beta1.TaskRun{tt.tr} + d.TaskRuns = []*v1.TaskRun{tt.tr} } prt := newPipelineRunTest(t, d) defer prt.Cancel() @@ -11424,12 +11435,12 @@ spec: expectedTaskRun := expectedCustomRuns[i] expectedTaskRun.Labels["tekton.dev/pipeline"] = tt.name expectedTaskRun.Labels["tekton.dev/memberOf"] = tt.memberOf - if d := cmp.Diff(expectedTaskRun, &customRuns.Items[i], ignoreResourceVersion, ignoreTypeMeta); d != "" { + if d := cmp.Diff(expectedTaskRun, &customRuns.Items[i], ignoreResourceVersion, ignoreTypeMeta, cmpopts.EquateEmpty()); d != "" { t.Errorf("expected to see TaskRun %v created. Diff %s", expectedCustomRuns[i].Name, diff.PrintWantGot(d)) } } - pipelineRun, err := clients.Pipeline.TektonV1beta1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) + pipelineRun, err := clients.Pipeline.TektonV1().PipelineRuns("foo").Get(prt.TestAssets.Ctx, "pr", metav1.GetOptions{}) if err != nil { t.Fatalf("Got an error getting reconciled run out of fake client: %s", err) } @@ -11448,7 +11459,7 @@ func TestReconcile_SetDefaults(t *testing.T) { prName := "test-pipeline-run-success" trName := "test-pipeline-run-success-unit-test-1" - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-success namespace: foo @@ -11458,9 +11469,10 @@ spec: value: somethingmorefun pipelineRef: name: test-pipeline - serviceAccountName: test-sa + taskRunTemplate: + serviceAccountName: test-sa `)} - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -11490,8 +11502,8 @@ spec: kind: ClusterTask name: unit-test-cluster-task `)} - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: unit-test-task namespace: foo @@ -11555,7 +11567,7 @@ spec: } // This PipelineRun is in progress now and the status should reflect that - checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1beta1.PipelineRunReasonRunning.String()) + checkPipelineRunConditionStatusAndReason(t, reconciledRun, corev1.ConditionUnknown, v1.PipelineRunReasonRunning.String()) tr1Name := "test-pipeline-run-success-unit-test-1" tr2Name := "test-pipeline-run-success-unit-test-cluster-task" @@ -11565,7 +11577,7 @@ spec: } func TestReconcile_CreateTaskRunWithComputeResources(t *testing.T) { - simplePipeline := parse.MustParseV1beta1Pipeline(t, ` + simplePipeline := parse.MustParseV1Pipeline(t, ` metadata: name: foo-pipeline namespace: default @@ -11586,13 +11598,13 @@ spec: testCases := []struct { name string - pipeline *v1beta1.Pipeline - pipelineRun *v1beta1.PipelineRun + pipeline *v1.Pipeline + pipelineRun *v1.PipelineRun expectedComputeResources []corev1.ResourceRequirements }{{ name: "only with requests", pipeline: simplePipeline, - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: foo-pipeline-run namespace: default @@ -11611,7 +11623,7 @@ spec: }, { name: "only with limits", pipeline: simplePipeline, - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: foo-pipeline-run namespace: default @@ -11630,7 +11642,7 @@ spec: }, { name: "both with requests and limits", pipeline: simplePipeline, - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: foo-pipeline-run namespace: default @@ -11652,7 +11664,7 @@ spec: }, { name: "both with cpu and memory", pipeline: simplePipeline, - pipelineRun: parse.MustParseV1beta1PipelineRun(t, ` + pipelineRun: parse.MustParseV1PipelineRun(t, ` metadata: name: foo-pipeline-run namespace: default @@ -11677,7 +11689,7 @@ spec: }} // verifyTaskLevelComputeResources verifies that the created TaskRuns have the expected compute resources - verifyTaskLevelComputeResources := func(expectedComputeResources []corev1.ResourceRequirements, taskRuns []v1beta1.TaskRun) error { + verifyTaskLevelComputeResources := func(expectedComputeResources []corev1.ResourceRequirements, taskRuns []v1.TaskRun) error { if len(expectedComputeResources) != len(taskRuns) { return fmt.Errorf("expected %d compute resource requirements, got %d", len(expectedComputeResources), len(taskRuns)) } @@ -11692,8 +11704,8 @@ spec: for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{tc.pipelineRun}, - Pipelines: []*v1beta1.Pipeline{tc.pipeline}, + PipelineRuns: []*v1.PipelineRun{tc.pipelineRun}, + Pipelines: []*v1.Pipeline{tc.pipeline}, } prt := newPipelineRunTest(t, d) defer prt.Cancel() @@ -11704,7 +11716,7 @@ spec: t.Errorf("Expected a CompletionTime on valid PipelineRun, but got nil") } - TaskRunList, err := clients.Pipeline.TektonV1beta1().TaskRuns("default").List(prt.TestAssets.Ctx, metav1.ListOptions{}) + TaskRunList, err := clients.Pipeline.TektonV1().TaskRuns("default").List(prt.TestAssets.Ctx, metav1.ListOptions{}) if err != nil { t.Fatalf("Failure to list TaskRun's %s", err) } @@ -11718,7 +11730,7 @@ spec: func TestReconcile_CancelUnscheduled(t *testing.T) { pipelineRunName := "cancel-test-run" - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, `metadata: + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, `metadata: name: cancel-test-run namespace: foo spec: @@ -11747,7 +11759,7 @@ spec: name: hello-world `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} cms := []*corev1.ConfigMap{newFeatureFlagsConfigMap()} @@ -11849,7 +11861,7 @@ spec: Mode: v1alpha1.ModeWarn, }}} - prs := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + prs := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: test-pipelinerun namespace: foo @@ -11915,7 +11927,7 @@ spec: taskReq := getResolvedResolutionRequest(t, resolverName, signedTaskBytes, prs.Namespace, prs.Name+"-"+ps.Spec.Tasks[0].Name) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{prs}, + PipelineRuns: []*v1.PipelineRun{prs}, VerificationPolicies: tc.verificationPolicies, ConfigMaps: cms, ResolutionRequests: []*resolutionv1beta1.ResolutionRequest{&pipelineReq, &taskReq}, @@ -12055,7 +12067,7 @@ spec: }, } - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: test-pipelinerun namespace: foo @@ -12099,7 +12111,7 @@ spec: taskReq := getResolvedResolutionRequest(t, resolverName, tc.taskBytes, pr.Namespace, pr.Name+"-"+ps.Spec.Tasks[0].Name) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, + PipelineRuns: []*v1.PipelineRun{pr}, ConfigMaps: cms, VerificationPolicies: vps, ResolutionRequests: []*resolutionv1beta1.ResolutionRequest{&pipelineReq, &taskReq}, @@ -12183,7 +12195,7 @@ spec: Mode: v1alpha1.ModeWarn, }}} - prs := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + prs := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: test-pipelinerun namespace: foo @@ -12250,7 +12262,7 @@ spec: taskReq := getResolvedResolutionRequest(t, resolverName, signedTaskBytes, prs.Namespace, prs.Name+"-"+ps.Spec.Tasks[0].Name) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{prs}, + PipelineRuns: []*v1.PipelineRun{prs}, VerificationPolicies: tc.verificationPolicies, ConfigMaps: cms, ResolutionRequests: []*resolutionv1beta1.ResolutionRequest{&pipelineReq, &taskReq}, @@ -12390,7 +12402,7 @@ spec: }, } - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: test-pipelinerun namespace: foo @@ -12434,7 +12446,7 @@ spec: taskReq := getResolvedResolutionRequest(t, resolverName, tc.taskBytes, pr.Namespace, pr.Name+"-"+ps.Spec.Tasks[0].Name) d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{pr}, + PipelineRuns: []*v1.PipelineRun{pr}, ConfigMaps: cms, VerificationPolicies: vps, ResolutionRequests: []*resolutionv1beta1.ResolutionRequest{&pipelineReq, &taskReq}, @@ -12476,8 +12488,8 @@ func TestReconcileForPipelineRunCreateRunFailed(t *testing.T) { // TestReconcileForPipelineRunCreateRunFailed runs "Reconcile" on a PipelineRun that has permanent error. // It verifies that reconcile is successful, no TaskRun is created, the PipelineTask is marked as CreateRunFailed, and the // pipeline status updated and events generated. - ps := []*v1beta1.Pipeline{} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + ps := []*v1.Pipeline{} + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-with-create-run-failed namespace: foo @@ -12491,8 +12503,8 @@ spec: - name: source `)} - ts := []*v1beta1.Task{ - parse.MustParseV1beta1Task(t, ` + ts := []*v1.Task{ + parse.MustParseV1Task(t, ` metadata: name: unit-test-task namespace: foo @@ -12508,7 +12520,7 @@ spec: - name: source `)} - trs := []*v1beta1.TaskRun{} + trs := []*v1.TaskRun{} d := test.Data{ PipelineRuns: prs, @@ -12541,7 +12553,7 @@ func TestReconcileWithTimeoutsOfCompletedPipelineRun(t *testing.T) { // TestReconcileWithTimeoutsOfCompletedPipelineRun runs "Reconcile" on a PipelineRun that has completed and // which has a passed timeout. // It verifies that reconcile is successful, and the PipelineRun is not marked as timed out. - ps := []*v1beta1.Pipeline{parse.MustParseV1beta1Pipeline(t, ` + ps := []*v1.Pipeline{parse.MustParseV1Pipeline(t, ` metadata: name: test-pipeline namespace: foo @@ -12551,7 +12563,7 @@ spec: taskRef: name: hello-world `)} - prs := []*v1beta1.PipelineRun{parse.MustParseV1beta1PipelineRun(t, ` + prs := []*v1.PipelineRun{parse.MustParseV1PipelineRun(t, ` metadata: name: test-pipeline-run-with-timeout namespace: foo @@ -12575,9 +12587,9 @@ status: pipelineTaskName: hello-world-1 kind: TaskRun `)} - ts := []*v1beta1.Task{simpleHelloWorldTask} + ts := []*v1.Task{simpleHelloWorldTask} - trs := []*v1beta1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-with-timeout-hello-world-1", "foo", "test-pipeline-run-with-timeout", + trs := []*v1.TaskRun{mustParseTaskRunWithObjectMeta(t, taskRunObjectMeta("test-pipeline-run-with-timeout-hello-world-1", "foo", "test-pipeline-run-with-timeout", "test-pipeline", "hello-world-1", false), ` spec: serviceAccountName: test-sa diff --git a/pkg/reconciler/pipelinerun/pipelinerun_updatestatus_test.go b/pkg/reconciler/pipelinerun/pipelinerun_updatestatus_test.go index 202540ed7d4..b1fc9084ae9 100644 --- a/pkg/reconciler/pipelinerun/pipelinerun_updatestatus_test.go +++ b/pkg/reconciler/pipelinerun/pipelinerun_updatestatus_test.go @@ -26,6 +26,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/tektoncd/pipeline/pkg/apis/config" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/test/diff" "github.com/tektoncd/pipeline/test/parse" @@ -40,11 +41,11 @@ import ( ) type updateStatusTaskRunsData struct { - noTaskRuns map[string]*v1beta1.PipelineRunTaskRunStatus - missingTaskRun map[string]*v1beta1.PipelineRunTaskRunStatus - foundTaskRun map[string]*v1beta1.PipelineRunTaskRunStatus - recovered map[string]*v1beta1.PipelineRunTaskRunStatus - simple map[string]*v1beta1.PipelineRunTaskRunStatus + noTaskRuns map[string]*v1.PipelineRunTaskRunStatus + missingTaskRun map[string]*v1.PipelineRunTaskRunStatus + foundTaskRun map[string]*v1.PipelineRunTaskRunStatus + recovered map[string]*v1.PipelineRunTaskRunStatus + simple map[string]*v1.PipelineRunTaskRunStatus } func getUpdateStatusTaskRunsData(t *testing.T) updateStatusTaskRunsData { @@ -65,32 +66,32 @@ status: {} pipelineTaskName: task-4 ` - noTaskRuns := map[string]*v1beta1.PipelineRunTaskRunStatus{ + noTaskRuns := map[string]*v1.PipelineRunTaskRunStatus{ "pr-task-1-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask1Yaml), "pr-task-2-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask2Yaml), "pr-task-3-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask3Yaml), "pr-task-4-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask4Yaml), } - missingTaskRuns := map[string]*v1beta1.PipelineRunTaskRunStatus{ + missingTaskRuns := map[string]*v1.PipelineRunTaskRunStatus{ "pr-task-1-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask1Yaml), "pr-task-2-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask2Yaml), "pr-task-4-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask4Yaml), } - foundTaskRun := map[string]*v1beta1.PipelineRunTaskRunStatus{ + foundTaskRun := map[string]*v1.PipelineRunTaskRunStatus{ "pr-task-1-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask1Yaml), "pr-task-2-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask2Yaml), "pr-task-3-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask3Yaml), "pr-task-4-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask4Yaml), } - recovered := map[string]*v1beta1.PipelineRunTaskRunStatus{ + recovered := map[string]*v1.PipelineRunTaskRunStatus{ "pr-task-1-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask1Yaml), "pr-task-3-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask3Yaml), } - simple := map[string]*v1beta1.PipelineRunTaskRunStatus{ + simple := map[string]*v1.PipelineRunTaskRunStatus{ "pr-task-1-xxyyy": mustParsePipelineRunTaskRunStatus(t, prTask1Yaml), } @@ -104,40 +105,40 @@ pipelineTaskName: task-4 } type updateStatusChildRefsData struct { - noTaskRuns []v1beta1.ChildStatusReference - missingTaskRun []v1beta1.ChildStatusReference - foundTaskRun []v1beta1.ChildStatusReference - missingRun []v1beta1.ChildStatusReference - recovered []v1beta1.ChildStatusReference - simple []v1beta1.ChildStatusReference - simpleRun []v1beta1.ChildStatusReference + noTaskRuns []v1.ChildStatusReference + missingTaskRun []v1.ChildStatusReference + foundTaskRun []v1.ChildStatusReference + missingRun []v1.ChildStatusReference + recovered []v1.ChildStatusReference + simple []v1.ChildStatusReference + simpleRun []v1.ChildStatusReference } func getUpdateStatusChildRefsData(t *testing.T) updateStatusChildRefsData { t.Helper() prTask1Yaml := ` -apiVersion: tekton.dev/v1beta1 +apiVersion: tekton.dev/v1 kind: TaskRun name: pr-task-1-xxyyy pipelineTaskName: task-1 ` prTask2Yaml := ` -apiVersion: tekton.dev/v1beta1 +apiVersion: tekton.dev/v1 kind: TaskRun name: pr-task-2-xxyyy pipelineTaskName: task-2 ` prTask3Yaml := ` -apiVersion: tekton.dev/v1beta1 +apiVersion: tekton.dev/v1 kind: TaskRun name: pr-task-3-xxyyy pipelineTaskName: task-3 ` prTask4Yaml := ` -apiVersion: tekton.dev/v1beta1 +apiVersion: tekton.dev/v1 kind: TaskRun name: pr-task-4-xxyyy pipelineTaskName: task-4 @@ -151,13 +152,13 @@ pipelineTaskName: task-6 ` prTask3NoStatusYaml := ` -apiVersion: tekton.dev/v1beta1 +apiVersion: tekton.dev/v1 kind: TaskRun name: pr-task-3-xxyyy pipelineTaskName: task-3 ` - noTaskRuns := []v1beta1.ChildStatusReference{ + noTaskRuns := []v1.ChildStatusReference{ mustParseChildStatusReference(t, prTask1Yaml), mustParseChildStatusReference(t, prTask2Yaml), mustParseChildStatusReference(t, prTask3Yaml), @@ -165,14 +166,14 @@ pipelineTaskName: task-3 mustParseChildStatusReference(t, prTask6Yaml), } - missingTaskRun := []v1beta1.ChildStatusReference{ + missingTaskRun := []v1.ChildStatusReference{ mustParseChildStatusReference(t, prTask1Yaml), mustParseChildStatusReference(t, prTask2Yaml), mustParseChildStatusReference(t, prTask4Yaml), mustParseChildStatusReference(t, prTask6Yaml), } - foundTaskRun := []v1beta1.ChildStatusReference{ + foundTaskRun := []v1.ChildStatusReference{ mustParseChildStatusReference(t, prTask1Yaml), mustParseChildStatusReference(t, prTask2Yaml), mustParseChildStatusReference(t, prTask3NoStatusYaml), @@ -180,22 +181,22 @@ pipelineTaskName: task-3 mustParseChildStatusReference(t, prTask6Yaml), } - missingRun := []v1beta1.ChildStatusReference{ + missingRun := []v1.ChildStatusReference{ mustParseChildStatusReference(t, prTask1Yaml), mustParseChildStatusReference(t, prTask2Yaml), mustParseChildStatusReference(t, prTask3Yaml), mustParseChildStatusReference(t, prTask4Yaml), } - recovered := []v1beta1.ChildStatusReference{ + recovered := []v1.ChildStatusReference{ mustParseChildStatusReference(t, prTask1Yaml), mustParseChildStatusReference(t, prTask3NoStatusYaml), mustParseChildStatusReference(t, prTask6Yaml), } - simple := []v1beta1.ChildStatusReference{mustParseChildStatusReference(t, prTask1Yaml)} + simple := []v1.ChildStatusReference{mustParseChildStatusReference(t, prTask1Yaml)} - simpleRun := []v1beta1.ChildStatusReference{mustParseChildStatusReference(t, prTask6Yaml)} + simpleRun := []v1.ChildStatusReference{mustParseChildStatusReference(t, prTask6Yaml)} return updateStatusChildRefsData{ noTaskRuns: noTaskRuns, @@ -224,40 +225,40 @@ func TestUpdatePipelineRunStatusFromChildRefs(t *testing.T) { }, } - prStatusWithNoTaskRuns := v1beta1.PipelineRunStatus{ + prStatusWithNoTaskRuns := v1.PipelineRunStatus{ Status: prRunningStatus, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ ChildReferences: childRefsPRStatusData.noTaskRuns, }, } - prStatusMissingTaskRun := v1beta1.PipelineRunStatus{ + prStatusMissingTaskRun := v1.PipelineRunStatus{ Status: prRunningStatus, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ ChildReferences: childRefsPRStatusData.missingTaskRun, }, } - prStatusFoundTaskRun := v1beta1.PipelineRunStatus{ + prStatusFoundTaskRun := v1.PipelineRunStatus{ Status: prRunningStatus, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ ChildReferences: childRefsPRStatusData.foundTaskRun, }, } - prStatusMissingRun := v1beta1.PipelineRunStatus{ + prStatusMissingRun := v1.PipelineRunStatus{ Status: prRunningStatus, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ ChildReferences: childRefsPRStatusData.missingRun, }, } - prStatusWithEmptyChildRefs := v1beta1.PipelineRunStatus{ + prStatusWithEmptyChildRefs := v1.PipelineRunStatus{ Status: prRunningStatus, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{}, + PipelineRunStatusFields: v1.PipelineRunStatusFields{}, } - prStatusWithOrphans := v1beta1.PipelineRunStatus{ + prStatusWithOrphans := v1.PipelineRunStatus{ Status: duckv1.Status{ Conditions: []apis.Condition{ { @@ -268,27 +269,27 @@ func TestUpdatePipelineRunStatusFromChildRefs(t *testing.T) { }, }, }, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{}, + PipelineRunStatusFields: v1.PipelineRunStatusFields{}, } - prStatusRecovered := v1beta1.PipelineRunStatus{ + prStatusRecovered := v1.PipelineRunStatus{ Status: prRunningStatus, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ ChildReferences: childRefsPRStatusData.recovered, }, } - prStatusRecoveredSimple := v1beta1.PipelineRunStatus{ + prStatusRecoveredSimple := v1.PipelineRunStatus{ Status: prRunningStatus, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ ChildReferences: childRefsPRStatusData.simple, }, } - prStatusRecoveredSimpleWithRun := v1beta1.PipelineRunStatus{ + prStatusRecoveredSimpleWithRun := v1.PipelineRunStatus{ Status: prRunningStatus, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ APIVersion: "tekton.dev/v1beta1", Kind: customRun, @@ -312,17 +313,17 @@ metadata: tcs := []struct { prName string - prStatus v1beta1.PipelineRunStatus - trs []*v1beta1.TaskRun + prStatus v1.PipelineRunStatus + trs []*v1.TaskRun customRuns []*v1beta1.CustomRun - expectedPrStatus v1beta1.PipelineRunStatus + expectedPrStatus v1.PipelineRunStatus }{ { prName: "no-status-no-taskruns-or-runs", - prStatus: v1beta1.PipelineRunStatus{}, + prStatus: v1.PipelineRunStatus{}, trs: nil, customRuns: nil, - expectedPrStatus: v1beta1.PipelineRunStatus{}, + expectedPrStatus: v1.PipelineRunStatus{}, }, { prName: "status-no-taskruns-or-runs", prStatus: prStatusWithNoTaskRuns, @@ -332,7 +333,7 @@ metadata: }, { prName: "status-nil-taskruns", prStatus: prStatusWithEmptyChildRefs, - trs: []*v1beta1.TaskRun{parse.MustParseV1beta1TaskRun(t, ` + trs: []*v1.TaskRun{parse.MustParseV1TaskRun(t, ` metadata: labels: tekton.dev/pipelineTask: task-1 @@ -349,8 +350,8 @@ metadata: }, { prName: "status-missing-taskruns", prStatus: prStatusMissingTaskRun, - trs: []*v1beta1.TaskRun{ - parse.MustParseV1beta1TaskRun(t, ` + trs: []*v1.TaskRun{ + parse.MustParseV1TaskRun(t, ` metadata: labels: tekton.dev/pipelineTask: task-3 @@ -391,8 +392,8 @@ metadata: }, { prName: "matrixed-taskruns-pr", prStatus: prStatusWithEmptyChildRefs, - trs: []*v1beta1.TaskRun{ - parse.MustParseV1beta1TaskRun(t, ` + trs: []*v1.TaskRun{ + parse.MustParseV1TaskRun(t, ` metadata: labels: tekton.dev/pipelineTask: task @@ -400,7 +401,7 @@ metadata: ownerReferences: - uid: 11111111-1111-1111-1111-111111111111 `), - parse.MustParseV1beta1TaskRun(t, ` + parse.MustParseV1TaskRun(t, ` metadata: labels: tekton.dev/pipelineTask: task @@ -410,18 +411,18 @@ metadata: `), }, customRuns: nil, - expectedPrStatus: v1beta1.PipelineRunStatus{ + expectedPrStatus: v1.PipelineRunStatus{ Status: prRunningStatus, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{ mustParseChildStatusReference(t, ` -apiVersion: tekton.dev/v1beta1 +apiVersion: tekton.dev/v1 kind: TaskRun name: pr-task-0-xxyyy pipelineTaskName: task `), mustParseChildStatusReference(t, ` -apiVersion: tekton.dev/v1beta1 +apiVersion: tekton.dev/v1 kind: TaskRun name: pr-task-1-xxyyy pipelineTaskName: task @@ -436,7 +437,7 @@ pipelineTaskName: task t.Run(tc.prName, func(t *testing.T) { logger := logtesting.TestLogger(t) - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: tc.prName, UID: prUID}, Status: tc.prStatus, } @@ -447,7 +448,7 @@ pipelineTaskName: task actualChildRefs := actualPrStatus.ChildReferences if len(actualChildRefs) != 0 { - var fixedChildRefs []v1beta1.ChildStatusReference + var fixedChildRefs []v1.ChildStatusReference re := regexp.MustCompile(`^[a-z\-]*?-(task|run)-[0-9]`) for _, cr := range actualChildRefs { cr.Name = fmt.Sprintf("%s-xxyyy", re.FindString(cr.Name)) @@ -480,7 +481,7 @@ func TestUpdatePipelineRunStatusFromChildObjects(t *testing.T) { }, } - prStatusWithOrphans := v1beta1.PipelineRunStatus{ + prStatusWithOrphans := v1.PipelineRunStatus{ Status: duckv1.Status{ Conditions: []apis.Condition{ { @@ -491,13 +492,13 @@ func TestUpdatePipelineRunStatusFromChildObjects(t *testing.T) { }, }, }, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{}, + PipelineRunStatusFields: v1.PipelineRunStatusFields{}, } - prStatusWithEmptyEverything := func() v1beta1.PipelineRunStatus { - return v1beta1.PipelineRunStatus{ + prStatusWithEmptyEverything := func() v1.PipelineRunStatus { + return v1.PipelineRunStatus{ Status: prRunningStatus, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{}, + PipelineRunStatusFields: v1.PipelineRunStatusFields{}, } } @@ -514,17 +515,17 @@ metadata: tcs := []struct { prName string - prStatus func() v1beta1.PipelineRunStatus - trs []*v1beta1.TaskRun + prStatus func() v1.PipelineRunStatus + trs []*v1.TaskRun runs []*v1beta1.CustomRun - expectedStatusTRs map[string]*v1beta1.PipelineRunTaskRunStatus - expectedStatusRuns map[string]*v1beta1.PipelineRunRunStatus - expectedStatusCRs []v1beta1.ChildStatusReference + expectedStatusTRs map[string]*v1.PipelineRunTaskRunStatus + expectedStatusRuns map[string]*v1.PipelineRunRunStatus + expectedStatusCRs []v1.ChildStatusReference }{ { prName: "status-nil-taskruns", prStatus: prStatusWithEmptyEverything, - trs: []*v1beta1.TaskRun{parse.MustParseV1beta1TaskRun(t, ` + trs: []*v1.TaskRun{parse.MustParseV1TaskRun(t, ` metadata: labels: tekton.dev/pipelineTask: task-1 @@ -539,7 +540,7 @@ metadata: prStatus: prStatusWithEmptyEverything, runs: singleCustomRun, expectedStatusCRs: childRefsPRStatusData.simpleRun, - expectedStatusRuns: map[string]*v1beta1.PipelineRunRunStatus{ + expectedStatusRuns: map[string]*v1.PipelineRunRunStatus{ "pr-run-6-xxyyy": { PipelineTaskName: "task-6", Status: &v1beta1.CustomRunStatus{}, @@ -547,12 +548,12 @@ metadata: }, }, { prName: "orphaned-taskruns-pr", - prStatus: func() v1beta1.PipelineRunStatus { return prStatusWithOrphans }, + prStatus: func() v1.PipelineRunStatus { return prStatusWithOrphans }, trs: allTaskRuns, runs: singleCustomRun, expectedStatusTRs: taskRunsPRStatusData.recovered, expectedStatusCRs: childRefsPRStatusData.recovered, - expectedStatusRuns: map[string]*v1beta1.PipelineRunRunStatus{ + expectedStatusRuns: map[string]*v1.PipelineRunRunStatus{ "pr-run-6-xxyyy": { PipelineTaskName: "task-6", Status: &v1beta1.CustomRunStatus{}, @@ -569,7 +570,7 @@ metadata: ctx = cfg.ToContext(ctx) logger := logtesting.TestLogger(t) - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: tc.prName, UID: prUID}, Status: tc.prStatus(), } @@ -582,7 +583,7 @@ metadata: actualChildRefs := actualPrStatus.ChildReferences if len(actualChildRefs) != 0 { - var fixedChildRefs []v1beta1.ChildStatusReference + var fixedChildRefs []v1.ChildStatusReference re := regexp.MustCompile(`^[a-z\-]*?-(task|run)-[0-9]`) for _, cr := range actualChildRefs { cr.Name = fmt.Sprintf("%s-xxyyy", re.FindString(cr.Name)) @@ -603,20 +604,20 @@ metadata: func TestValidateChildObjectsInPipelineRunStatus(t *testing.T) { testCases := []struct { name string - prStatus v1beta1.PipelineRunStatus + prStatus v1.PipelineRunStatus expectedErrStrs []string }{ { name: "empty everything", - prStatus: v1beta1.PipelineRunStatus{ - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{}, + prStatus: v1.PipelineRunStatus{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{}, }, expectedErrStrs: nil, }, { name: "error ChildObjects", - prStatus: v1beta1.PipelineRunStatus{ - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{ + prStatus: v1.PipelineRunStatus{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{ { TypeMeta: runtime.TypeMeta{Kind: taskRun}, Name: "t1", @@ -638,9 +639,9 @@ func TestValidateChildObjectsInPipelineRunStatus(t *testing.T) { }, }, { name: "valid ChildObjects", - prStatus: v1beta1.PipelineRunStatus{ - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{ + prStatus: v1.PipelineRunStatus{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{ { TypeMeta: runtime.TypeMeta{Kind: taskRun}, Name: "t1", @@ -687,10 +688,10 @@ func TestValidateChildObjectsInPipelineRunStatus(t *testing.T) { } } -func prStatusFromInputs(status duckv1.Status, taskRuns map[string]*v1beta1.PipelineRunTaskRunStatus, runs map[string]*v1beta1.PipelineRunRunStatus, childRefs []v1beta1.ChildStatusReference) v1beta1.PipelineRunStatus { - prs := v1beta1.PipelineRunStatus{ +func prStatusFromInputs(status duckv1.Status, taskRuns map[string]*v1.PipelineRunTaskRunStatus, runs map[string]*v1.PipelineRunRunStatus, childRefs []v1.ChildStatusReference) v1.PipelineRunStatus { + prs := v1.PipelineRunStatus{ Status: status, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{}, + PipelineRunStatusFields: v1.PipelineRunStatusFields{}, } prs.ChildReferences = append(prs.ChildReferences, childRefs...) @@ -698,10 +699,10 @@ func prStatusFromInputs(status duckv1.Status, taskRuns map[string]*v1beta1.Pipel return prs } -func getTestTaskRunsAndCustomRuns(t *testing.T) ([]*v1beta1.TaskRun, []*v1beta1.TaskRun, []*v1beta1.TaskRun, []*v1beta1.CustomRun, []*v1beta1.CustomRun, []*v1beta1.CustomRun) { +func getTestTaskRunsAndCustomRuns(t *testing.T) ([]*v1.TaskRun, []*v1.TaskRun, []*v1.TaskRun, []*v1beta1.CustomRun, []*v1beta1.CustomRun, []*v1beta1.CustomRun) { t.Helper() - allTaskRuns := []*v1beta1.TaskRun{ - parse.MustParseV1beta1TaskRun(t, ` + allTaskRuns := []*v1.TaskRun{ + parse.MustParseV1TaskRun(t, ` metadata: labels: tekton.dev/pipelineTask: task-1 @@ -709,7 +710,7 @@ metadata: ownerReferences: - uid: 11111111-1111-1111-1111-111111111111 `), - parse.MustParseV1beta1TaskRun(t, ` + parse.MustParseV1TaskRun(t, ` metadata: labels: tekton.dev/pipelineTask: task-3 @@ -719,7 +720,7 @@ metadata: `), } - taskRunsFromAnotherPR := []*v1beta1.TaskRun{parse.MustParseV1beta1TaskRun(t, ` + taskRunsFromAnotherPR := []*v1.TaskRun{parse.MustParseV1TaskRun(t, ` metadata: labels: tekton.dev/pipelineTask: task-1 @@ -728,7 +729,7 @@ metadata: - uid: 22222222-2222-2222-2222-222222222222 `)} - taskRunsWithNoOwner := []*v1beta1.TaskRun{parse.MustParseV1beta1TaskRun(t, ` + taskRunsWithNoOwner := []*v1.TaskRun{parse.MustParseV1TaskRun(t, ` metadata: labels: tekton.dev/pipelineTask: task-1 @@ -781,24 +782,24 @@ metadata: return allTaskRuns, taskRunsFromAnotherPR, taskRunsWithNoOwner, allCustomRuns, customRunsFromAnotherPR, customRunsWithNoOwner } -func mustParsePipelineRunTaskRunStatus(t *testing.T, yamlStr string) *v1beta1.PipelineRunTaskRunStatus { +func mustParsePipelineRunTaskRunStatus(t *testing.T, yamlStr string) *v1.PipelineRunTaskRunStatus { t.Helper() - var output v1beta1.PipelineRunTaskRunStatus + var output v1.PipelineRunTaskRunStatus if err := yaml.Unmarshal([]byte(yamlStr), &output); err != nil { t.Fatalf("parsing task run status %s: %v", yamlStr, err) } return &output } -func mustParseChildStatusReference(t *testing.T, yamlStr string) v1beta1.ChildStatusReference { +func mustParseChildStatusReference(t *testing.T, yamlStr string) v1.ChildStatusReference { t.Helper() - var output v1beta1.ChildStatusReference + var output v1.ChildStatusReference if err := yaml.Unmarshal([]byte(yamlStr), &output); err != nil { t.Fatalf("parsing task run status %s: %v", yamlStr, err) } return output } -func lessChildReferences(i, j v1beta1.ChildStatusReference) bool { +func lessChildReferences(i, j v1.ChildStatusReference) bool { return i.Name < j.Name } diff --git a/pkg/reconciler/pipelinerun/pipelinespec/pipelinespec.go b/pkg/reconciler/pipelinerun/pipelinespec/pipelinespec.go index 1061cfa901c..fc916b28ec2 100644 --- a/pkg/reconciler/pipelinerun/pipelinespec/pipelinespec.go +++ b/pkg/reconciler/pipelinerun/pipelinespec/pipelinespec.go @@ -21,7 +21,7 @@ import ( "errors" "fmt" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" resolutionutil "github.com/tektoncd/pipeline/pkg/internal/resolution" "github.com/tektoncd/pipeline/pkg/trustedresources" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -29,16 +29,16 @@ import ( // GetPipeline is a function used to retrieve Pipelines. // VerificationResult is the result from trusted resources if the feature is enabled. -type GetPipeline func(context.Context, string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) +type GetPipeline func(context.Context, string) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) // GetPipelineData will retrieve the Pipeline metadata and Spec associated with the // provided PipelineRun. This can come from a reference Pipeline or from the PipelineRun's // metadata and embedded PipelineSpec. -func GetPipelineData(ctx context.Context, pipelineRun *v1beta1.PipelineRun, getPipeline GetPipeline) (*resolutionutil.ResolvedObjectMeta, *v1beta1.PipelineSpec, error) { +func GetPipelineData(ctx context.Context, pipelineRun *v1.PipelineRun, getPipeline GetPipeline) (*resolutionutil.ResolvedObjectMeta, *v1.PipelineSpec, error) { pipelineMeta := metav1.ObjectMeta{} - var refSource *v1beta1.RefSource + var refSource *v1.RefSource var verificationResult *trustedresources.VerificationResult - pipelineSpec := v1beta1.PipelineSpec{} + pipelineSpec := v1.PipelineSpec{} switch { case pipelineRun.Spec.PipelineRef != nil && pipelineRun.Spec.PipelineRef.Name != "": // Get related pipeline for pipelinerun diff --git a/pkg/reconciler/pipelinerun/pipelinespec/pipelinespec_test.go b/pkg/reconciler/pipelinerun/pipelinespec/pipelinespec_test.go index 9e11a47cf60..7ffd5fb283f 100644 --- a/pkg/reconciler/pipelinerun/pipelinespec/pipelinespec_test.go +++ b/pkg/reconciler/pipelinerun/pipelinespec/pipelinespec_test.go @@ -23,7 +23,7 @@ import ( "github.com/google/go-cmp/cmp" cfgtesting "github.com/tektoncd/pipeline/pkg/apis/config/testing" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" pipelinespec "github.com/tektoncd/pipeline/pkg/reconciler/pipelinerun/pipelinespec" "github.com/tektoncd/pipeline/pkg/trustedresources" "github.com/tektoncd/pipeline/test/diff" @@ -31,30 +31,30 @@ import ( ) func TestGetPipelineSpec_Ref(t *testing.T) { - pipeline := &v1beta1.Pipeline{ + pipeline := &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Name: "orchestrate", }, - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "mytask", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "mytask", }, }}, }, } - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mypipelinerun", }, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ Name: "orchestrate", }, }, } - gt := func(ctx context.Context, n string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + gt := func(ctx context.Context, n string) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) { return pipeline, nil, nil, nil } resolvedObjectMeta, pipelineSpec, err := pipelinespec.GetPipelineData(context.Background(), pr, gt) @@ -77,22 +77,22 @@ func TestGetPipelineSpec_Ref(t *testing.T) { } func TestGetPipelineSpec_Embedded(t *testing.T) { - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mypipelinerun", }, - Spec: v1beta1.PipelineRunSpec{ - PipelineSpec: &v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + Spec: v1.PipelineRunSpec{ + PipelineSpec: &v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "mytask", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "mytask", }, }}, }, }, } - gt := func(ctx context.Context, n string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + gt := func(ctx context.Context, n string) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) { return nil, nil, nil, errors.New("shouldn't be called") } resolvedObjectMeta, pipelineSpec, err := pipelinespec.GetPipelineData(context.Background(), pr, gt) @@ -115,12 +115,12 @@ func TestGetPipelineSpec_Embedded(t *testing.T) { } func TestGetPipelineSpec_Invalid(t *testing.T) { - tr := &v1beta1.PipelineRun{ + tr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mypipelinerun", }, } - gt := func(ctx context.Context, n string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + gt := func(ctx context.Context, n string) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) { return nil, nil, nil, errors.New("shouldn't be called") } _, _, err := pipelinespec.GetPipelineData(context.Background(), tr, gt) @@ -133,7 +133,7 @@ func TestGetPipelineData_ResolutionSuccess(t *testing.T) { sourceMeta := &metav1.ObjectMeta{ Name: "pipeline", } - refSource := &v1beta1.RefSource{ + refSource := &v1.RefSource{ URI: "abc.com", Digest: map[string]string{"sha1": "a123"}, EntryPoint: "foo/bar", @@ -141,39 +141,39 @@ func TestGetPipelineData_ResolutionSuccess(t *testing.T) { tests := []struct { name string - pr *v1beta1.PipelineRun + pr *v1.PipelineRun sourceMeta *metav1.ObjectMeta - sourceSpec *v1beta1.PipelineSpec - refSource *v1beta1.RefSource - expectedSpec *v1beta1.PipelineSpec + sourceSpec *v1.PipelineSpec + refSource *v1.RefSource + expectedSpec *v1.PipelineSpec defaults map[string]string }{ { name: "resolve remote task with taskRef Name", sourceMeta: sourceMeta, refSource: refSource, - pr: &v1beta1.PipelineRun{ - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ - ResolverRef: v1beta1.ResolverRef{ + pr: &v1.PipelineRun{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ + ResolverRef: v1.ResolverRef{ Resolver: "foo", }, }, }, }, - sourceSpec: &v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + sourceSpec: &v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "pt1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Kind: "Task", Name: "tref", }, }}, }, - expectedSpec: &v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + expectedSpec: &v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "pt1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Kind: "Task", Name: "tref", }, @@ -184,27 +184,27 @@ func TestGetPipelineData_ResolutionSuccess(t *testing.T) { name: "resolve remote task with taskRef resolver - default resolver configured", sourceMeta: sourceMeta, refSource: refSource, - pr: &v1beta1.PipelineRun{ - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ - ResolverRef: v1beta1.ResolverRef{ + pr: &v1.PipelineRun{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ + ResolverRef: v1.ResolverRef{ Resolver: "foo", }, }, }, }, - sourceSpec: &v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + sourceSpec: &v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "pt1", - TaskRef: &v1beta1.TaskRef{}, + TaskRef: &v1.TaskRef{}, }}, }, - expectedSpec: &v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + expectedSpec: &v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "pt1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Kind: "Task", - ResolverRef: v1beta1.ResolverRef{ + ResolverRef: v1.ResolverRef{ Resolver: "foo", }, }, @@ -218,8 +218,8 @@ func TestGetPipelineData_ResolutionSuccess(t *testing.T) { for _, tc := range tests { t.Run(tc.name, func(t *testing.T) { ctx := cfgtesting.SetDefaults(context.Background(), t, tc.defaults) - getPipeline := func(ctx context.Context, n string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { - return &v1beta1.Pipeline{ + getPipeline := func(ctx context.Context, n string) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) { + return &v1.Pipeline{ ObjectMeta: *tc.sourceMeta.DeepCopy(), Spec: *tc.sourceSpec.DeepCopy(), }, tc.refSource.DeepCopy(), nil, nil @@ -244,17 +244,17 @@ func TestGetPipelineData_ResolutionSuccess(t *testing.T) { } func TestGetPipelineSpec_Error(t *testing.T) { - tr := &v1beta1.PipelineRun{ + tr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mypipelinerun", }, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ Name: "orchestrate", }, }, } - gt := func(ctx context.Context, n string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + gt := func(ctx context.Context, n string) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) { return nil, nil, nil, errors.New("something went wrong") } _, _, err := pipelinespec.GetPipelineData(context.Background(), tr, gt) @@ -264,19 +264,19 @@ func TestGetPipelineSpec_Error(t *testing.T) { } func TestGetPipelineData_ResolutionError(t *testing.T) { - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mypipelinerun", }, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ - ResolverRef: v1beta1.ResolverRef{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", }, }, }, } - getPipeline := func(ctx context.Context, n string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + getPipeline := func(ctx context.Context, n string) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) { return nil, nil, nil, errors.New("something went wrong") } ctx := context.Background() @@ -287,19 +287,19 @@ func TestGetPipelineData_ResolutionError(t *testing.T) { } func TestGetPipelineData_ResolvedNilPipeline(t *testing.T) { - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mypipelinerun", }, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ - ResolverRef: v1beta1.ResolverRef{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", }, }, }, } - getPipeline := func(ctx context.Context, n string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + getPipeline := func(ctx context.Context, n string) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) { return nil, nil, nil, nil } ctx := context.Background() diff --git a/pkg/reconciler/pipelinerun/resources/apply.go b/pkg/reconciler/pipelinerun/resources/apply.go index 100f161116b..bdeb450685d 100644 --- a/pkg/reconciler/pipelinerun/resources/apply.go +++ b/pkg/reconciler/pipelinerun/resources/apply.go @@ -22,6 +22,7 @@ import ( "strconv" "strings" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" "github.com/tektoncd/pipeline/pkg/substitution" @@ -46,7 +47,7 @@ var ( ) // ApplyParameters applies the params from a PipelineRun.Params to a PipelineSpec. -func ApplyParameters(ctx context.Context, p *v1beta1.PipelineSpec, pr *v1beta1.PipelineRun) *v1beta1.PipelineSpec { +func ApplyParameters(ctx context.Context, p *v1.PipelineSpec, pr *v1.PipelineRun) *v1.PipelineSpec { // This assumes that the PipelineRun inputs have been validated against what the Pipeline requests. // stringReplacements is used for standard single-string stringReplacements, @@ -59,21 +60,21 @@ func ApplyParameters(ctx context.Context, p *v1beta1.PipelineSpec, pr *v1beta1.P for _, p := range p.Params { if p.Default != nil { switch p.Default.Type { - case v1beta1.ParamTypeArray: + case v1.ParamTypeArray: for _, pattern := range paramPatterns { for i := 0; i < len(p.Default.ArrayVal); i++ { stringReplacements[fmt.Sprintf(pattern+"[%d]", p.Name, i)] = p.Default.ArrayVal[i] } arrayReplacements[fmt.Sprintf(pattern, p.Name)] = p.Default.ArrayVal } - case v1beta1.ParamTypeObject: + case v1.ParamTypeObject: for _, pattern := range paramPatterns { objectReplacements[fmt.Sprintf(pattern, p.Name)] = p.Default.ObjectVal } for k, v := range p.Default.ObjectVal { stringReplacements[fmt.Sprintf(objectIndividualVariablePattern, p.Name, k)] = v } - case v1beta1.ParamTypeString: + case v1.ParamTypeString: fallthrough default: for _, pattern := range paramPatterns { @@ -98,7 +99,7 @@ func ApplyParameters(ctx context.Context, p *v1beta1.PipelineSpec, pr *v1beta1.P return ApplyReplacements(p, stringReplacements, arrayReplacements, objectReplacements) } -func paramsFromPipelineRun(ctx context.Context, pr *v1beta1.PipelineRun) (map[string]string, map[string][]string, map[string]map[string]string) { +func paramsFromPipelineRun(ctx context.Context, pr *v1.PipelineRun) (map[string]string, map[string][]string, map[string]map[string]string) { // stringReplacements is used for standard single-string stringReplacements, // while arrayReplacements/objectReplacements contains arrays/objects that need to be further processed. stringReplacements := map[string]string{} @@ -107,21 +108,21 @@ func paramsFromPipelineRun(ctx context.Context, pr *v1beta1.PipelineRun) (map[st for _, p := range pr.Spec.Params { switch p.Value.Type { - case v1beta1.ParamTypeArray: + case v1.ParamTypeArray: for _, pattern := range paramPatterns { for i := 0; i < len(p.Value.ArrayVal); i++ { stringReplacements[fmt.Sprintf(pattern+"[%d]", p.Name, i)] = p.Value.ArrayVal[i] } arrayReplacements[fmt.Sprintf(pattern, p.Name)] = p.Value.ArrayVal } - case v1beta1.ParamTypeObject: + case v1.ParamTypeObject: for _, pattern := range paramPatterns { objectReplacements[fmt.Sprintf(pattern, p.Name)] = p.Value.ObjectVal } for k, v := range p.Value.ObjectVal { stringReplacements[fmt.Sprintf(objectIndividualVariablePattern, p.Name, k)] = v } - case v1beta1.ParamTypeString: + case v1.ParamTypeString: fallthrough default: for _, pattern := range paramPatterns { @@ -134,7 +135,7 @@ func paramsFromPipelineRun(ctx context.Context, pr *v1beta1.PipelineRun) (map[st } // GetContextReplacements returns the pipelineRun context which can be used to replace context variables in the specifications -func GetContextReplacements(pipelineName string, pr *v1beta1.PipelineRun) map[string]string { +func GetContextReplacements(pipelineName string, pr *v1.PipelineRun) map[string]string { return map[string]string{ "context.pipelineRun.name": pr.Name, "context.pipeline.name": pipelineName, @@ -144,14 +145,14 @@ func GetContextReplacements(pipelineName string, pr *v1beta1.PipelineRun) map[st } // ApplyContexts applies the substitution from $(context.(pipelineRun|pipeline).*) with the specified values. -// Currently, supports only name substitution. Uses "" as a default if name is not specified. -func ApplyContexts(spec *v1beta1.PipelineSpec, pipelineName string, pr *v1beta1.PipelineRun) *v1beta1.PipelineSpec { +// Currently supports only name substitution. Uses "" as a default if name is not specified. +func ApplyContexts(spec *v1.PipelineSpec, pipelineName string, pr *v1.PipelineRun) *v1.PipelineSpec { return ApplyReplacements(spec, GetContextReplacements(pipelineName, pr), map[string][]string{}, map[string]map[string]string{}) } // ApplyPipelineTaskContexts applies the substitution from $(context.pipelineTask.*) with the specified values. // Uses "0" as a default if a value is not available. -func ApplyPipelineTaskContexts(pt *v1beta1.PipelineTask) *v1beta1.PipelineTask { +func ApplyPipelineTaskContexts(pt *v1.PipelineTask) *v1.PipelineTask { pt = pt.DeepCopy() replacements := map[string]string{ "context.pipelineTask.retries": strconv.Itoa(pt.Retries), @@ -166,7 +167,7 @@ func ApplyPipelineTaskContexts(pt *v1beta1.PipelineTask) *v1beta1.PipelineTask { return pt } -// ApplyTaskResults applies the ResolvedResultRef to each PipelineTask.Params and Pipeline.WhenExpressions in targets +// ApplyTaskResults applies the ResolvedResultRef to each PipelineTask.Params and Pipeline.When in targets func ApplyTaskResults(targets PipelineRunState, resolvedResultRefs ResolvedResultRefs) { stringReplacements := resolvedResultRefs.getStringReplacements() arrayReplacements := resolvedResultRefs.getArrayReplacements() @@ -184,7 +185,7 @@ func ApplyTaskResults(targets PipelineRunState, resolvedResultRefs ResolvedResul pipelineTask.Matrix.Include[i].Params = pipelineTask.Matrix.Include[i].Params.ReplaceVariables(stringReplacements, nil, nil) } } - pipelineTask.WhenExpressions = pipelineTask.WhenExpressions.ReplaceVariables(stringReplacements, arrayReplacements) + pipelineTask.When = pipelineTask.When.ReplaceVariables(stringReplacements, arrayReplacements) if pipelineTask.TaskRef != nil && pipelineTask.TaskRef.Params != nil { pipelineTask.TaskRef.Params = pipelineTask.TaskRef.Params.ReplaceVariables(stringReplacements, arrayReplacements, objectReplacements) } @@ -199,7 +200,7 @@ func ApplyPipelineTaskStateContext(state PipelineRunState, replacements map[stri if resolvedPipelineRunTask.PipelineTask != nil { pipelineTask := resolvedPipelineRunTask.PipelineTask.DeepCopy() pipelineTask.Params = pipelineTask.Params.ReplaceVariables(replacements, nil, nil) - pipelineTask.WhenExpressions = pipelineTask.WhenExpressions.ReplaceVariables(replacements, nil) + pipelineTask.When = pipelineTask.When.ReplaceVariables(replacements, nil) if pipelineTask.TaskRef != nil && pipelineTask.TaskRef.Params != nil { pipelineTask.TaskRef.Params = pipelineTask.TaskRef.Params.ReplaceVariables(replacements, nil, nil) } @@ -210,7 +211,7 @@ func ApplyPipelineTaskStateContext(state PipelineRunState, replacements map[stri // ApplyWorkspaces replaces workspace variables in the given pipeline spec with their // concrete values. -func ApplyWorkspaces(p *v1beta1.PipelineSpec, pr *v1beta1.PipelineRun) *v1beta1.PipelineSpec { +func ApplyWorkspaces(p *v1.PipelineSpec, pr *v1.PipelineRun) *v1.PipelineSpec { p = p.DeepCopy() replacements := map[string]string{} for _, declaredWorkspace := range p.Workspaces { @@ -225,7 +226,7 @@ func ApplyWorkspaces(p *v1beta1.PipelineSpec, pr *v1beta1.PipelineRun) *v1beta1. } // ApplyReplacements replaces placeholders for declared parameters with the specified replacements. -func ApplyReplacements(p *v1beta1.PipelineSpec, replacements map[string]string, arrayReplacements map[string][]string, objectReplacements map[string]map[string]string) *v1beta1.PipelineSpec { +func ApplyReplacements(p *v1.PipelineSpec, replacements map[string]string, arrayReplacements map[string][]string, objectReplacements map[string]map[string]string) *v1.PipelineSpec { p = p.DeepCopy() for i := range p.Tasks { @@ -239,7 +240,7 @@ func ApplyReplacements(p *v1beta1.PipelineSpec, replacements map[string]string, for j := range p.Tasks[i].Workspaces { p.Tasks[i].Workspaces[j].SubPath = substitution.ApplyReplacements(p.Tasks[i].Workspaces[j].SubPath, replacements) } - p.Tasks[i].WhenExpressions = p.Tasks[i].WhenExpressions.ReplaceVariables(replacements, arrayReplacements) + p.Tasks[i].When = p.Tasks[i].When.ReplaceVariables(replacements, arrayReplacements) if p.Tasks[i].TaskRef != nil && p.Tasks[i].TaskRef.Params != nil { p.Tasks[i].TaskRef.Params = p.Tasks[i].TaskRef.Params.ReplaceVariables(replacements, arrayReplacements, objectReplacements) } @@ -257,7 +258,7 @@ func ApplyReplacements(p *v1beta1.PipelineSpec, replacements map[string]string, for j := range p.Finally[i].Workspaces { p.Finally[i].Workspaces[j].SubPath = substitution.ApplyReplacements(p.Finally[i].Workspaces[j].SubPath, replacements) } - p.Finally[i].WhenExpressions = p.Finally[i].WhenExpressions.ReplaceVariables(replacements, arrayReplacements) + p.Finally[i].When = p.Finally[i].When.ReplaceVariables(replacements, arrayReplacements) if p.Finally[i].TaskRef != nil && p.Finally[i].TaskRef.Params != nil { p.Finally[i].TaskRef.Params = p.Finally[i].TaskRef.Params.ReplaceVariables(replacements, arrayReplacements, objectReplacements) } @@ -270,7 +271,7 @@ func ApplyReplacements(p *v1beta1.PipelineSpec, replacements map[string]string, // propagateParams returns a Pipeline Task spec that is the same as the input Pipeline Task spec, but with // all parameter replacements from `stringReplacements`, `arrayReplacements`, and `objectReplacements` substituted. // It does not modify `stringReplacements`, `arrayReplacements`, or `objectReplacements`. -func propagateParams(t v1beta1.PipelineTask, stringReplacements map[string]string, arrayReplacements map[string][]string, objectReplacements map[string]map[string]string) v1beta1.PipelineTask { +func propagateParams(t v1.PipelineTask, stringReplacements map[string]string, arrayReplacements map[string][]string, objectReplacements map[string]map[string]string) v1.PipelineTask { if t.TaskSpec == nil { return t } @@ -320,18 +321,18 @@ func propagateParams(t v1beta1.PipelineTask, stringReplacements map[string]strin // results are invalid. func ApplyTaskResultsToPipelineResults( _ context.Context, - results []v1beta1.PipelineResult, - taskRunResults map[string][]v1beta1.TaskRunResult, + results []v1.PipelineResult, + taskRunResults map[string][]v1.TaskRunResult, customTaskResults map[string][]v1beta1.CustomRunResult, - taskstatus map[string]string) ([]v1beta1.PipelineRunResult, error) { - var runResults []v1beta1.PipelineRunResult + taskstatus map[string]string) ([]v1.PipelineRunResult, error) { + var runResults []v1.PipelineRunResult var invalidPipelineResults []string stringReplacements := map[string]string{} arrayReplacements := map[string][]string{} objectReplacements := map[string]map[string]string{} for _, pipelineResult := range results { - variablesInPipelineResult, _ := v1beta1.GetVarSubstitutionExpressionsForPipelineResult(pipelineResult) + variablesInPipelineResult, _ := v1.GetVarSubstitutionExpressionsForPipelineResult(pipelineResult) if len(variablesInPipelineResult) == 0 { continue } @@ -359,12 +360,12 @@ func ApplyTaskResultsToPipelineResults( // For object result: tasks..results.[*], case resultsParseNumber: taskName, resultName := variableParts[1], variableParts[3] - resultName, stringIdx := v1beta1.ParseResultName(resultName) + resultName, stringIdx := v1.ParseResultName(resultName) if resultValue := taskResultValue(taskName, resultName, taskRunResults); resultValue != nil { switch resultValue.Type { - case v1beta1.ParamTypeString: + case v1.ParamTypeString: stringReplacements[variable] = resultValue.StringVal - case v1beta1.ParamTypeArray: + case v1.ParamTypeArray: if stringIdx != "*" { intIdx, _ := strconv.Atoi(stringIdx) if intIdx < len(resultValue.ArrayVal) { @@ -377,7 +378,7 @@ func ApplyTaskResultsToPipelineResults( } else { arrayReplacements[substitution.StripStarVarSubExpression(variable)] = resultValue.ArrayVal } - case v1beta1.ParamTypeObject: + case v1.ParamTypeObject: objectReplacements[substitution.StripStarVarSubExpression(variable)] = resultValue.ObjectVal } } else if resultValue := runResultValue(taskName, resultName, customTaskResults); resultValue != nil { @@ -397,7 +398,7 @@ func ApplyTaskResultsToPipelineResults( // For object type result: tasks..results.. case objectElementResultsParseNumber: taskName, resultName, objectKey := variableParts[1], variableParts[3], variableParts[4] - resultName, _ = v1beta1.ParseResultName(resultName) + resultName, _ = v1.ParseResultName(resultName) if resultValue := taskResultValue(taskName, resultName, taskRunResults); resultValue != nil { if _, ok := resultValue.ObjectVal[objectKey]; ok { stringReplacements[variable] = resultValue.ObjectVal[objectKey] @@ -426,7 +427,7 @@ func ApplyTaskResultsToPipelineResults( if validPipelineResult { finalValue := pipelineResult.Value finalValue.ApplyReplacements(stringReplacements, arrayReplacements, objectReplacements) - runResults = append(runResults, v1beta1.PipelineRunResult{ + runResults = append(runResults, v1.PipelineRunResult{ Name: pipelineResult.Name, Value: finalValue, }) @@ -443,7 +444,7 @@ func ApplyTaskResultsToPipelineResults( // taskResultValue returns the result value for a given pipeline task name and result name in a map of TaskRunResults for // pipeline task names. It returns nil if either the pipeline task name isn't present in the map, or if there is no // result with the result name in the pipeline task name's slice of results. -func taskResultValue(taskName string, resultName string, taskResults map[string][]v1beta1.TaskRunResult) *v1beta1.ResultValue { +func taskResultValue(taskName string, resultName string, taskResults map[string][]v1.TaskRunResult) *v1.ResultValue { for _, trResult := range taskResults[taskName] { if trResult.Name == resultName { return &trResult.Value diff --git a/pkg/reconciler/pipelinerun/resources/apply_test.go b/pkg/reconciler/pipelinerun/resources/apply_test.go index 48fe815b227..13072b3ed53 100644 --- a/pkg/reconciler/pipelinerun/resources/apply_test.go +++ b/pkg/reconciler/pipelinerun/resources/apply_test.go @@ -23,6 +23,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/tektoncd/pipeline/pkg/apis/config" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" resources "github.com/tektoncd/pipeline/pkg/reconciler/pipelinerun/resources" "github.com/tektoncd/pipeline/test/diff" @@ -33,46 +34,46 @@ import ( func TestApplyParameters(t *testing.T) { for _, tt := range []struct { name string - original v1beta1.PipelineSpec - params v1beta1.Params - expected v1beta1.PipelineSpec + original v1.PipelineSpec + params []v1.Param + expected v1.PipelineSpec wc func(context.Context) context.Context }{{ name: "single parameter", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param)")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param)")}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param)")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param)")}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("second-value")}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("second-value")}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, }, { name: "parameter propagation string no task or task default winner pipeline", - original: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + original: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "$(params.HELLO)"`, @@ -81,12 +82,12 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("hello param!")}}, - expected: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("hello param!")}}, + expected: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "hello param!"`, @@ -97,11 +98,11 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter propagation string into finally task", - original: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + original: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "$(params.HELLO)"`, @@ -110,12 +111,12 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("hello param!")}}, - expected: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("hello param!")}}, + expected: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "hello param!"`, @@ -126,11 +127,11 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter propagation array no task or task default winner pipeline", - original: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + original: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.HELLO[*])"}, @@ -139,12 +140,12 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("hello", "param", "!!!")}}, - expected: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("hello", "param", "!!!")}}, + expected: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "hello", "param", "!!!"}, @@ -155,11 +156,11 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter propagation array finally task", - original: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + original: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.HELLO[*])"}, @@ -168,12 +169,12 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("hello", "param", "!!!")}}, - expected: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("hello", "param", "!!!")}}, + expected: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "hello", "param", "!!!"}, @@ -184,11 +185,11 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter propagation object no task or task default winner pipeline", - original: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + original: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.myObject.key1) $(params.myObject.key2)"}, @@ -197,12 +198,12 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "myObject", Value: *v1beta1.NewObject(map[string]string{"key1": "hello", "key2": "world!"})}}, - expected: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + params: v1.Params{{Name: "myObject", Value: *v1.NewObject(map[string]string{"key1": "hello", "key2": "world!"})}}, + expected: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "hello world!"}, @@ -214,11 +215,11 @@ func TestApplyParameters(t *testing.T) { wc: config.EnableAlphaAPIFields, }, { name: "parameter propagation object finally task", - original: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + original: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.myObject.key1) $(params.myObject.key2)"}, @@ -227,12 +228,12 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "myObject", Value: *v1beta1.NewObject(map[string]string{"key1": "hello", "key2": "world!"})}}, - expected: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + params: v1.Params{{Name: "myObject", Value: *v1.NewObject(map[string]string{"key1": "hello", "key2": "world!"})}}, + expected: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "hello world!"}, @@ -244,15 +245,15 @@ func TestApplyParameters(t *testing.T) { wc: config.EnableAlphaAPIFields, }, { name: "parameter propagation with task default but no task winner pipeline", - original: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + original: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default param!"), + Default: v1.NewStructuredValues("default param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "$(params.HELLO)"`, @@ -261,16 +262,16 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("pipeline param!")}}, - expected: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("pipeline param!")}}, + expected: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default param!"), + Default: v1.NewStructuredValues("default param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "pipeline param!"`, @@ -281,15 +282,15 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter propagation with task scoping Finally task", - original: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + original: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default param!"), + Default: v1.NewStructuredValues("default param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "$(params.HELLO)"`, @@ -298,16 +299,16 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("pipeline param!")}}, - expected: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("pipeline param!")}}, + expected: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default param!"), + Default: v1.NewStructuredValues("default param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "pipeline param!"`, @@ -318,15 +319,15 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter propagation array with task default but no task winner pipeline", - original: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + original: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default", "param!"), + Default: v1.NewStructuredValues("default", "param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.HELLO)"}, @@ -335,16 +336,16 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("pipeline", "param!")}}, - expected: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("pipeline", "param!")}}, + expected: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default", "param!"), + Default: v1.NewStructuredValues("default", "param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "pipeline", "param!"}, @@ -355,15 +356,15 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter propagation array with task scoping Finally task", - original: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + original: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default", "param!"), + Default: v1.NewStructuredValues("default", "param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.HELLO)"}, @@ -372,16 +373,16 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("pipeline", "param!")}}, - expected: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("pipeline", "param!")}}, + expected: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default", "param!"), + Default: v1.NewStructuredValues("default", "param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "pipeline", "param!"}, @@ -392,18 +393,18 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter propagation array with task default and task winner task", - original: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "HELLO", Value: *v1beta1.NewStructuredValues("task", "param!")}, - }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + original: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "HELLO", Value: *v1.NewStructuredValues("task", "param!")}, + }, + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default", "param!"), + Default: v1.NewStructuredValues("default", "param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.HELLO)"}, @@ -412,19 +413,19 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("pipeline", "param!")}}, - expected: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "HELLO", Value: *v1beta1.NewStructuredValues("task", "param!")}, + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("pipeline", "param!")}}, + expected: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "HELLO", Value: *v1.NewStructuredValues("task", "param!")}, }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default", "param!"), + Default: v1.NewStructuredValues("default", "param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "task", "param!"}, @@ -435,18 +436,18 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "Finally task parameter propagation array with task default and task winner task", - original: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "HELLO", Value: *v1beta1.NewStructuredValues("task", "param!")}, - }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + original: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "HELLO", Value: *v1.NewStructuredValues("task", "param!")}, + }, + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default", "param!"), + Default: v1.NewStructuredValues("default", "param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.HELLO)"}, @@ -455,19 +456,19 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("pipeline", "param!")}}, - expected: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "HELLO", Value: *v1beta1.NewStructuredValues("task", "param!")}, + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("pipeline", "param!")}}, + expected: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "HELLO", Value: *v1.NewStructuredValues("task", "param!")}, }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default", "param!"), + Default: v1.NewStructuredValues("default", "param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "task", "param!"}, @@ -478,18 +479,18 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter propagation with task default and task winner task", - original: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "HELLO", Value: *v1beta1.NewStructuredValues("task param!")}, - }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + original: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "HELLO", Value: *v1.NewStructuredValues("task param!")}, + }, + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default param!"), + Default: v1.NewStructuredValues("default param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "$(params.HELLO)"`, @@ -498,19 +499,19 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("pipeline param!")}}, - expected: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "HELLO", Value: *v1beta1.NewStructuredValues("task param!")}, + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("pipeline param!")}}, + expected: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "HELLO", Value: *v1.NewStructuredValues("task param!")}, }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default param!"), + Default: v1.NewStructuredValues("default param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "task param!"`, @@ -521,18 +522,18 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "Finally task parameter propagation with task default and task winner task", - original: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "HELLO", Value: *v1beta1.NewStructuredValues("task param!")}, - }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + original: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "HELLO", Value: *v1.NewStructuredValues("task param!")}, + }, + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default param!"), + Default: v1.NewStructuredValues("default param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "$(params.HELLO)"`, @@ -541,19 +542,19 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "HELLO", Value: *v1beta1.NewStructuredValues("pipeline param!")}}, - expected: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "HELLO", Value: *v1beta1.NewStructuredValues("task param!")}, + params: v1.Params{{Name: "HELLO", Value: *v1.NewStructuredValues("pipeline param!")}}, + expected: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "HELLO", Value: *v1.NewStructuredValues("task param!")}, }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "HELLO", - Default: v1beta1.NewStructuredValues("default param!"), + Default: v1.NewStructuredValues("default param!"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `#!/usr/bin/env bash\necho "task param!"`, @@ -564,22 +565,22 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter propagation object with task default but no task winner pipeline", - original: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + original: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "myobject", - Properties: map[string]v1beta1.PropertySpec{ + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "default", "key2": "param!", }), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.myobject.key1) $(params.myobject.key2)"}, @@ -588,26 +589,26 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "myobject", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{{Name: "myobject", Value: *v1.NewObject(map[string]string{ "key1": "pipeline", "key2": "param!!", })}}, - expected: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + expected: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "myobject", - Properties: map[string]v1beta1.PropertySpec{ + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "default", "key2": "param!", }), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "pipeline param!!"}, @@ -619,22 +620,22 @@ func TestApplyParameters(t *testing.T) { wc: config.EnableAlphaAPIFields, }, { name: "Finally task parameter propagation object with task default but no task winner pipeline", - original: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + original: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "myobject", - Properties: map[string]v1beta1.PropertySpec{ + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "default", "key2": "param!", }), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.myobject.key1) $(params.myobject.key2)"}, @@ -643,26 +644,26 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "myobject", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{{Name: "myobject", Value: *v1.NewObject(map[string]string{ "key1": "pipeline", "key2": "param!!", })}}, - expected: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + expected: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "myobject", - Properties: map[string]v1beta1.PropertySpec{ + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "default", "key2": "param!", }), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "pipeline param!!"}, @@ -674,28 +675,28 @@ func TestApplyParameters(t *testing.T) { wc: config.EnableAlphaAPIFields, }, { name: "parameter propagation object with task default and task winner task", - original: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "myobject", Value: *v1beta1.NewObject(map[string]string{ + original: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "myobject", Value: *v1.NewObject(map[string]string{ "key1": "task", "key2": "param!", })}, }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "myobject", - Properties: map[string]v1beta1.PropertySpec{ + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "default", "key2": "param!!", }), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.myobject.key1) $(params.myobject.key2)"}, @@ -704,29 +705,29 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "myobject", Value: *v1beta1.NewObject(map[string]string{"key1": "pipeline", "key2": "param!!!"})}}, - expected: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "myobject", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{{Name: "myobject", Value: *v1.NewObject(map[string]string{"key1": "pipeline", "key2": "param!!!"})}}, + expected: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "myobject", Value: *v1.NewObject(map[string]string{ "key1": "task", "key2": "param!", })}, }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "myobject", - Properties: map[string]v1beta1.PropertySpec{ + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "default", "key2": "param!!", }), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "task param!"}, @@ -738,28 +739,28 @@ func TestApplyParameters(t *testing.T) { wc: config.EnableAlphaAPIFields, }, { name: "Finally task parameter propagation object with task default and task winner task", - original: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "myobject", Value: *v1beta1.NewObject(map[string]string{ + original: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "myobject", Value: *v1.NewObject(map[string]string{ "key1": "task", "key2": "param!", })}, }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "myobject", - Properties: map[string]v1beta1.PropertySpec{ + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "default", "key2": "param!!", }), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "$(params.myobject.key1) $(params.myobject.key2)"}, @@ -768,29 +769,29 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "myobject", Value: *v1beta1.NewObject(map[string]string{"key1": "pipeline", "key2": "param!!!"})}}, - expected: v1beta1.PipelineSpec{ - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "myobject", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{{Name: "myobject", Value: *v1.NewObject(map[string]string{"key1": "pipeline", "key2": "param!!!"})}}, + expected: v1.PipelineSpec{ + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "myobject", Value: *v1.NewObject(map[string]string{ "key1": "task", "key2": "param!", })}, }, - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "myobject", - Properties: map[string]v1beta1.PropertySpec{ + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "default", "key2": "param!!", }), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Args: []string{"#!/usr/bin/env bash\n", "echo", "task param!"}, @@ -802,27 +803,27 @@ func TestApplyParameters(t *testing.T) { wc: config.EnableAlphaAPIFields, }, { name: "single parameter with when expression", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - WhenExpressions: []v1beta1.WhenExpression{{ + Tasks: []v1.PipelineTask{{ + When: []v1.WhenExpression{{ Input: "$(params.first-param)", Operator: selection.In, Values: []string{"$(params.second-param)"}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - WhenExpressions: []v1beta1.WhenExpression{{ + Tasks: []v1.PipelineTask{{ + When: []v1.WhenExpression{{ Input: "default-value", Operator: selection.In, Values: []string{"second-value"}, @@ -831,55 +832,55 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "object parameter with when expression", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "myobject", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, "key3": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", "key3": "val3", }), }, }, - Tasks: []v1beta1.PipelineTask{{ - WhenExpressions: []v1beta1.WhenExpression{{ + Tasks: []v1.PipelineTask{{ + When: []v1.WhenExpression{{ Input: "$(params.myobject.key1)", Operator: selection.In, Values: []string{"$(params.myobject.key2)", "$(params.myobject.key3)"}, }}, }}, }, - params: v1beta1.Params{{Name: "myobject", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{{Name: "myobject", Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", "key3": "val1", })}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "myobject", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, "key3": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", "key3": "val3", }), }, }, - Tasks: []v1beta1.PipelineTask{{ - WhenExpressions: []v1beta1.WhenExpression{{ + Tasks: []v1.PipelineTask{{ + When: []v1.WhenExpression{{ Input: "val1", Operator: selection.In, Values: []string{"val2", "val1"}, @@ -888,138 +889,138 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "string pipeline parameter nested inside task parameter", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.$(params.first-param))")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.$(params.second-param))")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(input.workspace.$(params.first-param))")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(input.workspace.$(params.second-param))")}, }, }}, }, params: nil, // no parameter values. - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.default-value)")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.default-value)")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(input.workspace.default-value)")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(input.workspace.default-value)")}, }, }}, }, }, { name: "array pipeline parameter nested inside task parameter", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default", "array", "value")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default", "array", "value")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("firstelement", "$(params.first-param)")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("firstelement", "$(params.second-param)")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("firstelement", "$(params.first-param)")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("firstelement", "$(params.second-param)")}, }, }}, }, - params: v1beta1.Params{ - {Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "array")}, + params: v1.Params{ + {Name: "second-param", Value: *v1.NewStructuredValues("second-value", "array")}, }, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default", "array", "value")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default", "array", "value")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("firstelement", "default", "array", "value")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("firstelement", "second-value", "array")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("firstelement", "default", "array", "value")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("firstelement", "second-value", "array")}, }, }}, }, }, { name: "object pipeline parameter nested inside task parameter", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "myobject", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), }, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.$(params.myobject.key1))")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.$(params.myobject.key2))")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(input.workspace.$(params.myobject.key1))")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(input.workspace.$(params.myobject.key2))")}, }, }}, }, params: nil, // no parameter values. - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "myobject", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), }, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.val1)")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.val2)")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(input.workspace.val1)")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(input.workspace.val2)")}, }, }}, }, }, { name: "parameter evaluation with final tasks", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param)")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param)")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param)")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param)")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "$(params.first-param)", Operator: selection.In, Values: []string{"$(params.second-param)"}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("second-value")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("second-value")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "default-value", Operator: selection.In, Values: []string{"second-value"}, @@ -1028,47 +1029,47 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter evaluation with both tasks and final tasks", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param)")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param)")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param)")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param)")}, }, }}, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param)")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param)")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param)")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param)")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "$(params.first-param)", Operator: selection.In, Values: []string{"$(params.second-param)"}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("second-value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("second-value")}, }, }}, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("second-value")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("second-value")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "default-value", Operator: selection.In, Values: []string{"second-value"}, @@ -1077,70 +1078,70 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "object parameter evaluation with both tasks and final tasks", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "myobject", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), }, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.myobject.key1)")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.myobject.key2)")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.myobject.key1)")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.myobject.key2)")}, }, }}, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.myobject.key1)")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.myobject.key2)")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.myobject.key1)")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.myobject.key2)")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "$(params.myobject.key1)", Operator: selection.In, Values: []string{"$(params.myobject.key2)"}, }}, }}, }, - params: v1beta1.Params{{Name: "myobject", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{{Name: "myobject", Value: *v1.NewObject(map[string]string{ "key1": "foo", "key2": "bar", })}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "myobject", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), }, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("foo")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("bar")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("foo")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("bar")}, }, }}, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("foo")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("bar")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("foo")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("bar")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "foo", Operator: selection.In, Values: []string{"bar"}, @@ -1149,57 +1150,57 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "parameter references with bracket notation and special characters", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first.param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second/param", Type: v1beta1.ParamTypeString}, - {Name: "third.param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "fourth/param", Type: v1beta1.ParamTypeString}, - }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues(`$(params["first.param"])`)}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues(`$(params["second/param"])`)}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues(`$(params['third.param'])`)}, - {Name: "first-task-fourth-param", Value: *v1beta1.NewStructuredValues(`$(params['fourth/param'])`)}, - {Name: "first-task-fifth-param", Value: *v1beta1.NewStructuredValues("static value")}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first.param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second/param", Type: v1.ParamTypeString}, + {Name: "third.param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "fourth/param", Type: v1.ParamTypeString}, + }, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues(`$(params["first.param"])`)}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues(`$(params["second/param"])`)}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues(`$(params['third.param'])`)}, + {Name: "first-task-fourth-param", Value: *v1.NewStructuredValues(`$(params['fourth/param'])`)}, + {Name: "first-task-fifth-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, - params: v1beta1.Params{ - {Name: "second/param", Value: *v1beta1.NewStructuredValues("second-value")}, - {Name: "fourth/param", Value: *v1beta1.NewStructuredValues("fourth-value")}, - }, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first.param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second/param", Type: v1beta1.ParamTypeString}, - {Name: "third.param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "fourth/param", Type: v1beta1.ParamTypeString}, - }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("second-value")}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "first-task-fourth-param", Value: *v1beta1.NewStructuredValues("fourth-value")}, - {Name: "first-task-fifth-param", Value: *v1beta1.NewStructuredValues("static value")}, + params: v1.Params{ + {Name: "second/param", Value: *v1.NewStructuredValues("second-value")}, + {Name: "fourth/param", Value: *v1.NewStructuredValues("fourth-value")}, + }, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first.param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second/param", Type: v1.ParamTypeString}, + {Name: "third.param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "fourth/param", Type: v1.ParamTypeString}, + }, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("second-value")}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "first-task-fourth-param", Value: *v1.NewStructuredValues("fourth-value")}, + {Name: "first-task-fifth-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, }, { name: "single parameter in workspace subpath", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param)")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param)")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("static value")}, }, - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{ + Workspaces: []v1.WorkspacePipelineTaskBinding{ { Name: "first-workspace", Workspace: "first-workspace", @@ -1208,18 +1209,18 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("static value")}, }, - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{ + Workspaces: []v1.WorkspacePipelineTaskBinding{ { Name: "first-workspace", Workspace: "first-workspace", @@ -1230,27 +1231,27 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "object parameter in workspace subpath", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "myobject", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), }, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.myobject.key1)")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(params.myobject.key1)")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("static value")}, }, - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{ + Workspaces: []v1.WorkspacePipelineTaskBinding{ { Name: "first-workspace", Workspace: "first-workspace", @@ -1259,31 +1260,31 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "myobject", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{{Name: "myobject", Value: *v1.NewObject(map[string]string{ "key1": "foo", "key2": "bar", })}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "myobject", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), }, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("foo")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("foo")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("static value")}, }, - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{ + Workspaces: []v1.WorkspacePipelineTaskBinding{ { Name: "first-workspace", Workspace: "first-workspace", @@ -1294,40 +1295,40 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "single parameter with resolver", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewArrayOrString("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, - }, - Tasks: []v1beta1.PipelineTask{{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, + }, + Tasks: []v1.PipelineTask{{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "first-resolver-param", - Value: *v1beta1.NewArrayOrString("$(params.first-param)"), + Value: *v1.NewStructuredValues("$(params.first-param)"), }, { Name: "second-resolver-param", - Value: *v1beta1.NewArrayOrString("$(params.second-param)"), + Value: *v1.NewStructuredValues("$(params.second-param)"), }}, }, }, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewArrayOrString("second-value")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewArrayOrString("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + Tasks: []v1.PipelineTask{{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "first-resolver-param", - Value: *v1beta1.NewArrayOrString("default-value"), + Value: *v1.NewStructuredValues("default-value"), }, { Name: "second-resolver-param", - Value: *v1beta1.NewArrayOrString("second-value"), + Value: *v1.NewStructuredValues("second-value"), }}, }, }, @@ -1335,74 +1336,74 @@ func TestApplyParameters(t *testing.T) { }, }, { name: "object parameter with resolver", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "myobject", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, "key3": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", "key3": "val3", }), }, }, - Tasks: []v1beta1.PipelineTask{{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + Tasks: []v1.PipelineTask{{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "first-resolver-param", - Value: *v1beta1.NewArrayOrString("$(params.myobject.key1)"), + Value: *v1.NewStructuredValues("$(params.myobject.key1)"), }, { Name: "second-resolver-param", - Value: *v1beta1.NewArrayOrString("$(params.myobject.key2)"), + Value: *v1.NewStructuredValues("$(params.myobject.key2)"), }, { Name: "third-resolver-param", - Value: *v1beta1.NewArrayOrString("$(params.myobject.key3)"), + Value: *v1.NewStructuredValues("$(params.myobject.key3)"), }}, }, }, }}, }, - params: v1beta1.Params{{Name: "myobject", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{{Name: "myobject", Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", "key3": "val1", })}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "myobject", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, "key3": {Type: "string"}, }, - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", "key3": "val3", }), }, }, - Tasks: []v1beta1.PipelineTask{{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + Tasks: []v1.PipelineTask{{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "first-resolver-param", - Value: *v1beta1.NewArrayOrString("val1"), + Value: *v1.NewStructuredValues("val1"), }, { Name: "second-resolver-param", - Value: *v1beta1.NewArrayOrString("val2"), + Value: *v1.NewStructuredValues("val2"), }, { Name: "third-resolver-param", - Value: *v1beta1.NewArrayOrString("val1"), + Value: *v1.NewStructuredValues("val1"), }}, }, }, @@ -1411,17 +1412,17 @@ func TestApplyParameters(t *testing.T) { wc: config.EnableAlphaAPIFields, }, { name: "single parameter in finally workspace subpath", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param)")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("static value")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param)")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("static value")}, }, - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{ + Workspaces: []v1.WorkspacePipelineTaskBinding{ { Name: "first-workspace", Workspace: "first-workspace", @@ -1430,18 +1431,18 @@ func TestApplyParameters(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeString, Default: v1beta1.NewStructuredValues("default-value")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeString, Default: v1.NewStructuredValues("default-value")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("static value")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("static value")}, }, - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{ + Workspaces: []v1.WorkspacePipelineTaskBinding{ { Name: "first-workspace", Workspace: "first-workspace", @@ -1453,38 +1454,38 @@ func TestApplyParameters(t *testing.T) { }, { name: "tasks with the same parameter name but referencing different values", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Default: &v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Default: &v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "a", }, - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, - Tasks: []v1beta1.PipelineTask{ + Tasks: []v1.PipelineTask{ { Name: "previous-task-with-result", }, { Name: "print-msg", - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, }, }, - Params: v1beta1.Params{ + Params: v1.Params{ { Name: "param1", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "$(tasks.previous-task-with-result.results.Output)", }, }, @@ -1492,21 +1493,21 @@ func TestApplyParameters(t *testing.T) { }, { Name: "print-msg-2", - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, }, }, - Params: v1beta1.Params{ + Params: v1.Params{ { Name: "param1", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "$(params.param1)", }, }, @@ -1514,38 +1515,38 @@ func TestApplyParameters(t *testing.T) { }, }, }, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Default: &v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Default: &v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "a", }, - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, - Tasks: []v1beta1.PipelineTask{ + Tasks: []v1.PipelineTask{ { Name: "previous-task-with-result", }, { Name: "print-msg", - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, }, }, - Params: v1beta1.Params{ + Params: v1.Params{ { Name: "param1", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "$(tasks.previous-task-with-result.results.Output)", }, }, @@ -1553,21 +1554,21 @@ func TestApplyParameters(t *testing.T) { }, { Name: "print-msg-2", - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, }, }, - Params: v1beta1.Params{ + Params: v1.Params{ { Name: "param1", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "a", }, }, @@ -1578,40 +1579,40 @@ func TestApplyParameters(t *testing.T) { }, { name: "finally tasks with the same parameter name but referencing different values", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Default: &v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Default: &v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "a", }, - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, - Tasks: []v1beta1.PipelineTask{ + Tasks: []v1.PipelineTask{ { Name: "previous-task-with-result", }, }, - Finally: []v1beta1.PipelineTask{ + Finally: []v1.PipelineTask{ { Name: "print-msg", - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, }, }, - Params: v1beta1.Params{ + Params: v1.Params{ { Name: "param1", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "$(tasks.previous-task-with-result.results.Output)", }, }, @@ -1619,21 +1620,21 @@ func TestApplyParameters(t *testing.T) { }, { Name: "print-msg-2", - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, }, }, - Params: v1beta1.Params{ + Params: v1.Params{ { Name: "param1", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "$(params.param1)", }, }, @@ -1641,40 +1642,40 @@ func TestApplyParameters(t *testing.T) { }, }, }, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Default: &v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Default: &v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "a", }, - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, - Tasks: []v1beta1.PipelineTask{ + Tasks: []v1.PipelineTask{ { Name: "previous-task-with-result", }, }, - Finally: []v1beta1.PipelineTask{ + Finally: []v1.PipelineTask{ { Name: "print-msg", - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, }, }, - Params: v1beta1.Params{ + Params: v1.Params{ { Name: "param1", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "$(tasks.previous-task-with-result.results.Output)", }, }, @@ -1682,21 +1683,21 @@ func TestApplyParameters(t *testing.T) { }, { Name: "print-msg-2", - TaskSpec: &v1beta1.EmbeddedTask{ - TaskSpec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{ + TaskSpec: &v1.EmbeddedTask{ + TaskSpec: v1.TaskSpec{ + Params: []v1.ParamSpec{ { Name: "param1", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, }, }, - Params: v1beta1.Params{ + Params: v1.Params{ { Name: "param1", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "a", }, }, @@ -1713,8 +1714,8 @@ func TestApplyParameters(t *testing.T) { } t.Run(tt.name, func(t *testing.T) { t.Parallel() - run := &v1beta1.PipelineRun{ - Spec: v1beta1.PipelineRunSpec{ + run := &v1.PipelineRun{ + Spec: v1.PipelineRunSpec{ Params: tt.params, }, } @@ -1729,61 +1730,61 @@ func TestApplyParameters(t *testing.T) { func TestApplyParameters_ArrayIndexing(t *testing.T) { for _, tt := range []struct { name string - original v1beta1.PipelineSpec - params v1beta1.Params - expected v1beta1.PipelineSpec + original v1.PipelineSpec + params []v1.Param + expected v1.PipelineSpec }{{ name: "single parameter", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[1])")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[0])")}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[1])")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[0])")}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("default-value-again")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("second-value")}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("default-value-again")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("second-value")}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, }, { name: "single parameter with when expression", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - WhenExpressions: []v1beta1.WhenExpression{{ + Tasks: []v1.PipelineTask{{ + When: []v1.WhenExpression{{ Input: "$(params.first-param[1])", Operator: selection.In, Values: []string{"$(params.second-param[0])"}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - WhenExpressions: []v1beta1.WhenExpression{{ + Tasks: []v1.PipelineTask{{ + When: []v1.WhenExpression{{ Input: "default-value-again", Operator: selection.In, Values: []string{"second-value"}, @@ -1792,91 +1793,91 @@ func TestApplyParameters_ArrayIndexing(t *testing.T) { }, }, { name: "pipeline parameter nested inside task parameter", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.$(params.first-param[0]))")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.$(params.second-param[1]))")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(input.workspace.$(params.first-param[0]))")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(input.workspace.$(params.second-param[1]))")}, }, }}, }, params: nil, // no parameter values. - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.default-value)")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.default-value-again)")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(input.workspace.default-value)")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(input.workspace.default-value-again)")}, }, }}, }, }, { name: "array parameter", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default", "array", "value")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default", "array", "value")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("firstelement", "$(params.first-param)")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("firstelement", "$(params.second-param[0])")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("firstelement", "$(params.first-param)")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("firstelement", "$(params.second-param[0])")}, }, }}, }, - params: v1beta1.Params{ - {Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "array")}, + params: v1.Params{ + {Name: "second-param", Value: *v1.NewStructuredValues("second-value", "array")}, }, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default", "array", "value")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default", "array", "value")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("firstelement", "default", "array", "value")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("firstelement", "second-value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("firstelement", "default", "array", "value")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("firstelement", "second-value")}, }, }}, }, }, { name: "parameter evaluation with final tasks", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[0])")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[1])")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[0])")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[1])")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "$(params.first-param[0])", Operator: selection.In, Values: []string{"$(params.second-param[1])"}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("second-value-again")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("second-value-again")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "default-value", Operator: selection.In, Values: []string{"second-value-again"}, @@ -1885,47 +1886,47 @@ func TestApplyParameters_ArrayIndexing(t *testing.T) { }, }, { name: "parameter evaluation with both tasks and final tasks", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[0])")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[1])")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[0])")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[1])")}, }, }}, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[0])")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[1])")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[0])")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[1])")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "$(params.first-param[0])", Operator: selection.In, Values: []string{"$(params.second-param[1])"}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("second-value-again")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("second-value-again")}, }, }}, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("second-value-again")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("second-value-again")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "default-value", Operator: selection.In, Values: []string{"second-value-again"}, @@ -1934,57 +1935,57 @@ func TestApplyParameters_ArrayIndexing(t *testing.T) { }, }, { name: "parameter references with bracket notation and special characters", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first.param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second/param", Type: v1beta1.ParamTypeArray}, - {Name: "third.param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "fourth/param", Type: v1beta1.ParamTypeArray}, - }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues(`$(params["first.param"][0])`)}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues(`$(params["second/param"][0])`)}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues(`$(params['third.param'][1])`)}, - {Name: "first-task-fourth-param", Value: *v1beta1.NewStructuredValues(`$(params['fourth/param'][1])`)}, - {Name: "first-task-fifth-param", Value: *v1beta1.NewStructuredValues("static value")}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first.param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second/param", Type: v1.ParamTypeArray}, + {Name: "third.param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "fourth/param", Type: v1.ParamTypeArray}, + }, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues(`$(params["first.param"][0])`)}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues(`$(params["second/param"][0])`)}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues(`$(params['third.param'][1])`)}, + {Name: "first-task-fourth-param", Value: *v1.NewStructuredValues(`$(params['fourth/param'][1])`)}, + {Name: "first-task-fifth-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, - params: v1beta1.Params{ - {Name: "second/param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}, - {Name: "fourth/param", Value: *v1beta1.NewStructuredValues("fourth-value", "fourth-value-again")}, - }, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first.param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second/param", Type: v1beta1.ParamTypeArray}, - {Name: "third.param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "fourth/param", Type: v1beta1.ParamTypeArray}, - }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("second-value")}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues("default-value-again")}, - {Name: "first-task-fourth-param", Value: *v1beta1.NewStructuredValues("fourth-value-again")}, - {Name: "first-task-fifth-param", Value: *v1beta1.NewStructuredValues("static value")}, + params: v1.Params{ + {Name: "second/param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}, + {Name: "fourth/param", Value: *v1.NewStructuredValues("fourth-value", "fourth-value-again")}, + }, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first.param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second/param", Type: v1.ParamTypeArray}, + {Name: "third.param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "fourth/param", Type: v1.ParamTypeArray}, + }, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("second-value")}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues("default-value-again")}, + {Name: "first-task-fourth-param", Value: *v1.NewStructuredValues("fourth-value-again")}, + {Name: "first-task-fifth-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, }, { name: "single parameter in workspace subpath", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[0])")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[0])")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("static value")}, }, - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{ + Workspaces: []v1.WorkspacePipelineTaskBinding{ { Name: "first-workspace", Workspace: "first-workspace", @@ -1993,18 +1994,18 @@ func TestApplyParameters_ArrayIndexing(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("default-value")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("default-value")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("static value")}, }, - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{ + Workspaces: []v1.WorkspacePipelineTaskBinding{ { Name: "first-workspace", Workspace: "first-workspace", @@ -2018,8 +2019,8 @@ func TestApplyParameters_ArrayIndexing(t *testing.T) { tt := tt // capture range variable t.Run(tt.name, func(t *testing.T) { t.Parallel() - run := &v1beta1.PipelineRun{ - Spec: v1beta1.PipelineRunSpec{ + run := &v1.PipelineRun{ + Spec: v1.PipelineRunSpec{ Params: tt.params, }, } @@ -2034,118 +2035,118 @@ func TestApplyParameters_ArrayIndexing(t *testing.T) { func TestApplyReplacementsMatrix(t *testing.T) { for _, tt := range []struct { name string - original v1beta1.PipelineSpec - params v1beta1.Params - expected v1beta1.PipelineSpec + original v1.PipelineSpec + params []v1.Param + expected v1.PipelineSpec }{{ name: "matrix params replacements", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{{ - Name: "foo", Type: v1beta1.ParamTypeString, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{{ + Name: "foo", Type: v1.ParamTypeString, }, { - Name: "bar", Type: v1beta1.ParamTypeArray, + Name: "bar", Type: v1.ParamTypeArray, }, { - Name: "rad", Type: v1beta1.ParamTypeObject, + Name: "rad", Type: v1.ParamTypeObject, }}, - Tasks: []v1beta1.PipelineTask{{ - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Tasks: []v1.PipelineTask{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ // string replacements from string param, array param and object param - Name: "first-param", Value: *v1beta1.NewStructuredValues("$(params.foo)", "$(params.bar[0])", "$(params.rad.key1)"), + Name: "first-param", Value: *v1.NewStructuredValues("$(params.foo)", "$(params.bar[0])", "$(params.rad.key1)"), }, { // array replacement from array param - Name: "second-param", Value: *v1beta1.NewStructuredValues("$(params.bar)"), + Name: "second-param", Value: *v1.NewStructuredValues("$(params.bar)"), }}, }, }}, }, - params: v1beta1.Params{ - {Name: "foo", Value: *v1beta1.NewStructuredValues("foo")}, - {Name: "bar", Value: *v1beta1.NewStructuredValues("b", "a", "r")}, - {Name: "rad", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{ + {Name: "foo", Value: *v1.NewStructuredValues("foo")}, + {Name: "bar", Value: *v1.NewStructuredValues("b", "a", "r")}, + {Name: "rad", Value: *v1.NewObject(map[string]string{ "key1": "r", "key2": "a", "key3": "d", })}, }, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{{ - Name: "foo", Type: v1beta1.ParamTypeString, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{{ + Name: "foo", Type: v1.ParamTypeString, }, { - Name: "bar", Type: v1beta1.ParamTypeArray, + Name: "bar", Type: v1.ParamTypeArray, }, { - Name: "rad", Type: v1beta1.ParamTypeObject, + Name: "rad", Type: v1.ParamTypeObject, }}, - Tasks: []v1beta1.PipelineTask{{ - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Tasks: []v1.PipelineTask{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ // string replacements from string param, array param and object param - Name: "first-param", Value: *v1beta1.NewStructuredValues("foo", "b", "r"), + Name: "first-param", Value: *v1.NewStructuredValues("foo", "b", "r"), }, { // array replacement from array param - Name: "second-param", Value: *v1beta1.NewStructuredValues("b", "a", "r"), + Name: "second-param", Value: *v1.NewStructuredValues("b", "a", "r"), }}, }, }}, }, }, { name: "matrix include params replacement", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{{ - Name: "foo", Type: v1beta1.ParamTypeString, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{{ + Name: "foo", Type: v1.ParamTypeString, }, { - Name: "bar", Type: v1beta1.ParamTypeArray, + Name: "bar", Type: v1.ParamTypeArray, }, { - Name: "rad", Type: v1beta1.ParamTypeObject, + Name: "rad", Type: v1.ParamTypeObject, }}, - Tasks: []v1beta1.PipelineTask{{ - Matrix: &v1beta1.Matrix{ - Include: []v1beta1.IncludeParams{{ + Tasks: []v1.PipelineTask{{ + Matrix: &v1.Matrix{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ + Params: v1.Params{{ // string replacements from string param - Name: "first-param", Value: *v1beta1.NewStructuredValues("$(params.foo)"), + Name: "first-param", Value: *v1.NewStructuredValues("$(params.foo)"), }, { // string replacements from array param - Name: "second-param", Value: *v1beta1.NewStructuredValues("$(params.bar[0])"), + Name: "second-param", Value: *v1.NewStructuredValues("$(params.bar[0])"), }, { // string replacements from object param - Name: "third-param", Value: *v1beta1.NewStructuredValues("$(params.rad.key1)"), + Name: "third-param", Value: *v1.NewStructuredValues("$(params.rad.key1)"), }}, }}, }, }}, }, - params: v1beta1.Params{ - {Name: "foo", Value: *v1beta1.NewStructuredValues("foo")}, - {Name: "bar", Value: *v1beta1.NewStructuredValues("b", "a", "r")}, - {Name: "rad", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{ + {Name: "foo", Value: *v1.NewStructuredValues("foo")}, + {Name: "bar", Value: *v1.NewStructuredValues("b", "a", "r")}, + {Name: "rad", Value: *v1.NewObject(map[string]string{ "key1": "r", "key2": "a", "key3": "d", })}, }, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{{ - Name: "foo", Type: v1beta1.ParamTypeString, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{{ + Name: "foo", Type: v1.ParamTypeString, }, { - Name: "bar", Type: v1beta1.ParamTypeArray, + Name: "bar", Type: v1.ParamTypeArray, }, { - Name: "rad", Type: v1beta1.ParamTypeObject, + Name: "rad", Type: v1.ParamTypeObject, }}, - Tasks: []v1beta1.PipelineTask{{ - Matrix: &v1beta1.Matrix{ - Include: []v1beta1.IncludeParams{{ + Tasks: []v1.PipelineTask{{ + Matrix: &v1.Matrix{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ + Params: v1.Params{{ // string replacements from string param - Name: "first-param", Value: *v1beta1.NewStructuredValues("foo"), + Name: "first-param", Value: *v1.NewStructuredValues("foo"), }, { // string replacements from array param - Name: "second-param", Value: *v1beta1.NewStructuredValues("b"), + Name: "second-param", Value: *v1.NewStructuredValues("b"), }, { // string replacements from object param - Name: "third-param", Value: *v1beta1.NewStructuredValues("r"), + Name: "third-param", Value: *v1.NewStructuredValues("r"), }}, }}, }, @@ -2153,113 +2154,113 @@ func TestApplyReplacementsMatrix(t *testing.T) { }, }, { name: "matrix params with final tasks", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{{ - Name: "foo", Type: v1beta1.ParamTypeString, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{{ + Name: "foo", Type: v1.ParamTypeString, }, { - Name: "bar", Type: v1beta1.ParamTypeArray, + Name: "bar", Type: v1.ParamTypeArray, }, { - Name: "rad", Type: v1beta1.ParamTypeObject, + Name: "rad", Type: v1.ParamTypeObject, }}, - Finally: []v1beta1.PipelineTask{{ - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Finally: []v1.PipelineTask{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ // string replacements from string param, array param and object param - Name: "first-param", Value: *v1beta1.NewStructuredValues("$(params.foo)", "$(params.bar[0])", "$(params.rad.key1)"), + Name: "first-param", Value: *v1.NewStructuredValues("$(params.foo)", "$(params.bar[0])", "$(params.rad.key1)"), }, { // array replacement from array param - Name: "second-param", Value: *v1beta1.NewStructuredValues("$(params.bar)"), + Name: "second-param", Value: *v1.NewStructuredValues("$(params.bar)"), }}, }, }}, }, - params: v1beta1.Params{ - {Name: "foo", Value: *v1beta1.NewStructuredValues("foo")}, - {Name: "bar", Value: *v1beta1.NewStructuredValues("b", "a", "r")}, - {Name: "rad", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{ + {Name: "foo", Value: *v1.NewStructuredValues("foo")}, + {Name: "bar", Value: *v1.NewStructuredValues("b", "a", "r")}, + {Name: "rad", Value: *v1.NewObject(map[string]string{ "key1": "r", "key2": "a", "key3": "d", })}, }, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{{ - Name: "foo", Type: v1beta1.ParamTypeString, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{{ + Name: "foo", Type: v1.ParamTypeString, }, { - Name: "bar", Type: v1beta1.ParamTypeArray, + Name: "bar", Type: v1.ParamTypeArray, }, { - Name: "rad", Type: v1beta1.ParamTypeObject, + Name: "rad", Type: v1.ParamTypeObject, }}, - Finally: []v1beta1.PipelineTask{{ - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Finally: []v1.PipelineTask{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ // string replacements from string param, array param and object param - Name: "first-param", Value: *v1beta1.NewStructuredValues("foo", "b", "r"), + Name: "first-param", Value: *v1.NewStructuredValues("foo", "b", "r"), }, { // array replacement from array param - Name: "second-param", Value: *v1beta1.NewStructuredValues("b", "a", "r"), + Name: "second-param", Value: *v1.NewStructuredValues("b", "a", "r"), }}, }, }}, }, }, { name: "matrix include params with final tasks", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{{ - Name: "foo", Type: v1beta1.ParamTypeString, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{{ + Name: "foo", Type: v1.ParamTypeString, }, { - Name: "bar", Type: v1beta1.ParamTypeArray, + Name: "bar", Type: v1.ParamTypeArray, }, { - Name: "rad", Type: v1beta1.ParamTypeObject, + Name: "rad", Type: v1.ParamTypeObject, }}, - Finally: []v1beta1.PipelineTask{{ - Matrix: &v1beta1.Matrix{ - Include: []v1beta1.IncludeParams{{ + Finally: []v1.PipelineTask{{ + Matrix: &v1.Matrix{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ + Params: v1.Params{{ // string replacements from string param - Name: "first-param", Value: *v1beta1.NewStructuredValues("$(params.foo)"), + Name: "first-param", Value: *v1.NewStructuredValues("$(params.foo)"), }, { // string replacements from array param - Name: "second-param", Value: *v1beta1.NewStructuredValues("$(params.bar[0])"), + Name: "second-param", Value: *v1.NewStructuredValues("$(params.bar[0])"), }, { // string replacements from object param - Name: "third-param", Value: *v1beta1.NewStructuredValues("$(params.rad.key1)"), + Name: "third-param", Value: *v1.NewStructuredValues("$(params.rad.key1)"), }}, }}, }, }}, }, - params: v1beta1.Params{ - {Name: "foo", Value: *v1beta1.NewStructuredValues("foo")}, - {Name: "bar", Value: *v1beta1.NewStructuredValues("b", "a", "r")}, - {Name: "rad", Value: *v1beta1.NewObject(map[string]string{ + params: v1.Params{ + {Name: "foo", Value: *v1.NewStructuredValues("foo")}, + {Name: "bar", Value: *v1.NewStructuredValues("b", "a", "r")}, + {Name: "rad", Value: *v1.NewObject(map[string]string{ "key1": "r", "key2": "a", "key3": "d", })}, }, - expected: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{{ - Name: "foo", Type: v1beta1.ParamTypeString, + expected: v1.PipelineSpec{ + Params: []v1.ParamSpec{{ + Name: "foo", Type: v1.ParamTypeString, }, { - Name: "bar", Type: v1beta1.ParamTypeArray, + Name: "bar", Type: v1.ParamTypeArray, }, { - Name: "rad", Type: v1beta1.ParamTypeObject, + Name: "rad", Type: v1.ParamTypeObject, }}, - Finally: []v1beta1.PipelineTask{{ - Matrix: &v1beta1.Matrix{ - Include: []v1beta1.IncludeParams{{ + Finally: []v1.PipelineTask{{ + Matrix: &v1.Matrix{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ + Params: v1.Params{{ // string replacements from string param - Name: "first-param", Value: *v1beta1.NewStructuredValues("foo"), + Name: "first-param", Value: *v1.NewStructuredValues("foo"), }, { // string replacements from array param - Name: "second-param", Value: *v1beta1.NewStructuredValues("b"), + Name: "second-param", Value: *v1.NewStructuredValues("b"), }, { // string replacements from object param - Name: "third-param", Value: *v1beta1.NewStructuredValues("r"), + Name: "third-param", Value: *v1.NewStructuredValues("r"), }}, }}, }, @@ -2270,8 +2271,8 @@ func TestApplyReplacementsMatrix(t *testing.T) { tt := tt // capture range variable t.Run(tt.name, func(t *testing.T) { t.Parallel() - run := &v1beta1.PipelineRun{ - Spec: v1beta1.PipelineRunSpec{ + run := &v1.PipelineRun{ + Spec: v1.PipelineRunSpec{ Params: tt.params, }, } @@ -2292,157 +2293,157 @@ func TestApplyTaskResults_MinimalExpression(t *testing.T) { }{{ name: "Test result substitution on minimal variable substitution expression - params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "a.Result", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues(`$(tasks.aTask.results["a.Result"])`), + Value: *v1.NewStructuredValues(`$(tasks.aTask.results["a.Result"])`), }}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("aResultValue"), + Value: *v1.NewStructuredValues("aResultValue"), }}, }, }}, }, { name: "Test array indexing result substitution on minimal variable substitution expression - params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "a.Result", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][1])`), + Value: *v1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][1])`), }}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("arrayResultValueTwo"), + Value: *v1.NewStructuredValues("arrayResultValueTwo"), }}, }, }}, }, { name: "Test array indexing result substitution out of bound - params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "a.Result", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][3])`), + Value: *v1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][3])`), }}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", // index validation is done in ResolveResultRefs() before ApplyTaskResults() - Value: *v1beta1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][3])`), + Value: *v1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][3])`), }}, }, }}, }, { name: "Test array result substitution on minimal variable substitution expression - params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "a.Result", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{`$(tasks.aTask.results["a.Result"][*])`}, }, }}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), }}, }, }}, }, { name: "Test object result as a whole substitution - params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), - ResultReference: v1beta1.ResultRef{ + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "resultName", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues(`$(tasks.aTask.results.resultName[*])`), + Value: *v1.NewStructuredValues(`$(tasks.aTask.results.resultName[*])`), }}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", // index validation is done in ResolveResultRefs() before ApplyTaskResults() - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), @@ -2452,148 +2453,148 @@ func TestApplyTaskResults_MinimalExpression(t *testing.T) { }, { name: "Test object result element substitution - params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), - ResultReference: v1beta1.ResultRef{ + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "resultName", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues(`$(tasks.aTask.results.resultName.key1)`), + Value: *v1.NewStructuredValues(`$(tasks.aTask.results.resultName.key1)`), }}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", // index validation is done in ResolveResultRefs() before ApplyTaskResults() - Value: *v1beta1.NewStructuredValues("val1"), + Value: *v1.NewStructuredValues("val1"), }}, }, }}, }, { name: "Test result substitution on minimal variable substitution expression - matrix", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "a.Result", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues(`$(tasks.aTask.results["a.Result"])`), + Value: *v1.NewStructuredValues(`$(tasks.aTask.results["a.Result"])`), }}}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("aResultValue"), + Value: *v1.NewStructuredValues("aResultValue"), }}}, }, }}, }, { name: "Test array indexing result substitution on minimal variable substitution expression - matrix", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "a.Result", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][1])`), + Value: *v1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][1])`), }}}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("arrayResultValueTwo"), + Value: *v1.NewStructuredValues("arrayResultValueTwo"), }}}, }, }}, }, { name: "Test array indexing result substitution out of bound - matrix", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "a.Result", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][3])`), + Value: *v1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][3])`), }}}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][3])`), + Value: *v1.NewStructuredValues(`$(tasks.aTask.results["a.Result"][3])`), }}}, }, }}, }, { name: "Test array result substitution on minimal variable substitution expression - when expressions", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{{ // Note that Input doesn't support array replacement. Input: "anInput", Operator: selection.In, @@ -2602,10 +2603,10 @@ func TestApplyTaskResults_MinimalExpression(t *testing.T) { }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{{ Input: "anInput", Operator: selection.In, Values: []string{"arrayResultValueOne", "arrayResultValueTwo"}, @@ -2615,18 +2616,18 @@ func TestApplyTaskResults_MinimalExpression(t *testing.T) { }, { name: "Test result substitution on minimal variable substitution expression - when expressions", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{{ Input: "$(tasks.aTask.results.aResult)", Operator: selection.In, Values: []string{"$(tasks.aTask.results.aResult)"}, @@ -2634,10 +2635,10 @@ func TestApplyTaskResults_MinimalExpression(t *testing.T) { }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{{ Input: "aResultValue", Operator: selection.In, Values: []string{"aResultValue"}, @@ -2647,18 +2648,18 @@ func TestApplyTaskResults_MinimalExpression(t *testing.T) { }, { name: "Test array indexing result substitution on minimal variable substitution expression - when expressions", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{{ Input: "$(tasks.aTask.results.aResult[1])", Operator: selection.In, Values: []string{"$(tasks.aTask.results.aResult[0])"}, @@ -2666,10 +2667,10 @@ func TestApplyTaskResults_MinimalExpression(t *testing.T) { }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{{ Input: "arrayResultValueTwo", Operator: selection.In, Values: []string{"arrayResultValueOne"}, @@ -2679,20 +2680,20 @@ func TestApplyTaskResults_MinimalExpression(t *testing.T) { }, { name: "Test array result substitution on minimal variable substitution expression - resolver params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewArrayOrString("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + PipelineTask: &v1.PipelineTask{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "bParam", - Value: v1beta1.ArrayOrString{Type: v1beta1.ParamTypeArray, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{`$(tasks.aTask.results["aResult"][*])`}, }, }}, @@ -2701,12 +2702,12 @@ func TestApplyTaskResults_MinimalExpression(t *testing.T) { }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + PipelineTask: &v1.PipelineTask{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "bParam", - Value: v1beta1.ArrayOrString{Type: v1beta1.ParamTypeArray, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"arrayResultValueOne", "arrayResultValueTwo"}, }, }}, @@ -2717,32 +2718,32 @@ func TestApplyTaskResults_MinimalExpression(t *testing.T) { }, { name: "Test result substitution on minimal variable substitution expression - resolver params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewArrayOrString("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + PipelineTask: &v1.PipelineTask{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewArrayOrString("$(tasks.aTask.results.aResult)"), + Value: *v1.NewStructuredValues("$(tasks.aTask.results.aResult)"), }}, }, }, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + PipelineTask: &v1.PipelineTask{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewArrayOrString("aResultValue"), + Value: *v1.NewStructuredValues("aResultValue"), }}, }, }, @@ -2751,38 +2752,38 @@ func TestApplyTaskResults_MinimalExpression(t *testing.T) { }, { name: "Test array indexing result substitution on minimal variable substitution expression - resolver params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewArrayOrString("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + PipelineTask: &v1.PipelineTask{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewArrayOrString("$(tasks.aTask.results.aResult[0])"), + Value: *v1.NewStructuredValues("$(tasks.aTask.results.aResult[0])"), }, { Name: "cParam", - Value: *v1beta1.NewArrayOrString("$(tasks.aTask.results.aResult[1])"), + Value: *v1.NewStructuredValues("$(tasks.aTask.results.aResult[1])"), }}, }, }, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + PipelineTask: &v1.PipelineTask{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewArrayOrString("arrayResultValueOne"), + Value: *v1.NewStructuredValues("arrayResultValueOne"), }, { Name: "cParam", - Value: *v1beta1.NewArrayOrString("arrayResultValueTwo"), + Value: *v1.NewStructuredValues("arrayResultValueTwo"), }}, }, }, @@ -2807,143 +2808,143 @@ func TestApplyTaskResults_EmbeddedExpression(t *testing.T) { }{{ name: "Test result substitution on embedded variable substitution expression - params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("Result value --> $(tasks.aTask.results.aResult)"), + Value: *v1.NewStructuredValues("Result value --> $(tasks.aTask.results.aResult)"), }}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("Result value --> aResultValue"), + Value: *v1.NewStructuredValues("Result value --> aResultValue"), }}, }, }}, }, { name: "Test array indexing result substitution on embedded variable substitution expression - params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("Result value --> $(tasks.aTask.results.aResult[0])"), + Value: *v1.NewStructuredValues("Result value --> $(tasks.aTask.results.aResult[0])"), }}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("Result value --> arrayResultValueOne"), + Value: *v1.NewStructuredValues("Result value --> arrayResultValueOne"), }}, }, }}, }, { name: "Test result substitution on embedded variable substitution expression - matrix", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("Result value --> $(tasks.aTask.results.aResult)"), + Value: *v1.NewStructuredValues("Result value --> $(tasks.aTask.results.aResult)"), }}}, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("Result value --> aResultValue"), + Value: *v1.NewStructuredValues("Result value --> aResultValue"), }}}, }, }}, }, { name: "test result substitution for strings and arrays in matrix params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("foo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("foo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "foo", }, FromTaskRun: "aTaskRun", }, { - Value: *v1beta1.NewStructuredValues("b", "a", "r"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("b", "a", "r"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "bar", }, FromTaskRun: "aTaskRun", }, { - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "r", "key2": "a", "key3": "d", }), - ResultReference: v1beta1.ResultRef{ + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "rad", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ // string replacements from string param, array param and object results - Name: "first-param", Value: *v1beta1.NewStructuredValues("$(tasks.aTask.results.foo)", "$(tasks.aTask.results.bar[0])", "$(tasks.aTask.results.rad.key1)"), + Name: "first-param", Value: *v1.NewStructuredValues("$(tasks.aTask.results.foo)", "$(tasks.aTask.results.bar[0])", "$(tasks.aTask.results.rad.key1)"), }}, }, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ // string replacements from string param, array param and object results - Name: "first-param", Value: *v1beta1.NewStructuredValues("foo", "b", "r"), + Name: "first-param", Value: *v1.NewStructuredValues("foo", "b", "r"), }}, }, }, @@ -2951,56 +2952,56 @@ func TestApplyTaskResults_EmbeddedExpression(t *testing.T) { }, { name: "test result substitution for strings from string, arr, obj results in matrix include params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("foo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("foo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "foo", }, FromTaskRun: "aTaskRun", }, { - Value: *v1beta1.NewStructuredValues("b", "a", "r"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("b", "a", "r"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "bar", }, FromTaskRun: "aTaskRun", }, { - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "r", "key2": "a", "key3": "d", }), - ResultReference: v1beta1.ResultRef{ + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "rad", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Include: []v1beta1.IncludeParams{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ + Params: v1.Params{{ // string replacements from string results, array results and object results - Name: "first-param", Value: *v1beta1.NewStructuredValues("foo", "b", "r"), + Name: "first-param", Value: *v1.NewStructuredValues("foo", "b", "r"), }}, }}, }, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Matrix: &v1beta1.Matrix{ - Include: []v1beta1.IncludeParams{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Matrix: &v1.Matrix{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ + Params: v1.Params{{ // string replacements from string results, array results and object results - Name: "first-param", Value: *v1beta1.NewStructuredValues("foo", "b", "r"), + Name: "first-param", Value: *v1.NewStructuredValues("foo", "b", "r"), }}, }}, }, @@ -3009,18 +3010,18 @@ func TestApplyTaskResults_EmbeddedExpression(t *testing.T) { }, { name: "Test result substitution on embedded variable substitution expression - when expressions", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{ { Input: "Result value --> $(tasks.aTask.results.aResult)", Operator: selection.In, @@ -3030,10 +3031,10 @@ func TestApplyTaskResults_EmbeddedExpression(t *testing.T) { }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{{ Input: "Result value --> aResultValue", Operator: selection.In, Values: []string{"Result value --> aResultValue"}, @@ -3043,18 +3044,18 @@ func TestApplyTaskResults_EmbeddedExpression(t *testing.T) { }, { name: "Test array indexing result substitution on embedded variable substitution expression - when expressions", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{ { Input: "Result value --> $(tasks.aTask.results.aResult[1])", Operator: selection.In, @@ -3064,10 +3065,10 @@ func TestApplyTaskResults_EmbeddedExpression(t *testing.T) { }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{{ Input: "Result value --> arrayResultValueTwo", Operator: selection.In, Values: []string{"Result value --> arrayResultValueOne"}, @@ -3077,32 +3078,32 @@ func TestApplyTaskResults_EmbeddedExpression(t *testing.T) { }, { name: "Test result substitution on embedded variable substitution expression - resolver params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewArrayOrString("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + PipelineTask: &v1.PipelineTask{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewArrayOrString("Result value --> $(tasks.aTask.results.aResult)"), + Value: *v1.NewStructuredValues("Result value --> $(tasks.aTask.results.aResult)"), }}, }, }, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + PipelineTask: &v1.PipelineTask{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewArrayOrString("Result value --> aResultValue"), + Value: *v1.NewStructuredValues("Result value --> aResultValue"), }}, }, }, @@ -3111,38 +3112,38 @@ func TestApplyTaskResults_EmbeddedExpression(t *testing.T) { }, { name: "Test array indexing result substitution on embedded variable substitution expression - resolver params", resolvedResultRefs: resources.ResolvedResultRefs{{ - Value: *v1beta1.NewArrayOrString("arrayResultValueOne", "arrayResultValueTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultValueOne", "arrayResultValueTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, FromTaskRun: "aTaskRun", }}, targets: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + PipelineTask: &v1.PipelineTask{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewArrayOrString("Result value --> $(tasks.aTask.results.aResult[0])"), + Value: *v1.NewStructuredValues("Result value --> $(tasks.aTask.results.aResult[0])"), }, { Name: "cParam", - Value: *v1beta1.NewArrayOrString("Result value --> $(tasks.aTask.results.aResult[1])"), + Value: *v1.NewStructuredValues("Result value --> $(tasks.aTask.results.aResult[1])"), }}, }, }, }, }}, want: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ - Params: v1beta1.Params{{ + PipelineTask: &v1.PipelineTask{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ + Params: v1.Params{{ Name: "bParam", - Value: *v1beta1.NewArrayOrString("Result value --> arrayResultValueOne"), + Value: *v1.NewStructuredValues("Result value --> arrayResultValueOne"), }, { Name: "cParam", - Value: *v1beta1.NewArrayOrString("Result value --> arrayResultValueTwo"), + Value: *v1.NewStructuredValues("Result value --> arrayResultValueTwo"), }}, }, }, @@ -3161,67 +3162,67 @@ func TestApplyTaskResults_EmbeddedExpression(t *testing.T) { func TestContext(t *testing.T) { for _, tc := range []struct { description string - pr *v1beta1.PipelineRun - original v1beta1.Param - expected v1beta1.Param + pr *v1.PipelineRun + original v1.Param + expected v1.Param }{{ description: "context.pipeline.name defined", - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "name"}, }, - original: v1beta1.Param{Value: *v1beta1.NewStructuredValues("$(context.pipeline.name)-1")}, - expected: v1beta1.Param{Value: *v1beta1.NewStructuredValues("test-pipeline-1")}, + original: v1.Param{Value: *v1.NewStructuredValues("$(context.pipeline.name)-1")}, + expected: v1.Param{Value: *v1.NewStructuredValues("test-pipeline-1")}, }, { description: "context.pipelineRun.name defined", - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "name"}, }, - original: v1beta1.Param{Value: *v1beta1.NewStructuredValues("$(context.pipelineRun.name)-1")}, - expected: v1beta1.Param{Value: *v1beta1.NewStructuredValues("name-1")}, + original: v1.Param{Value: *v1.NewStructuredValues("$(context.pipelineRun.name)-1")}, + expected: v1.Param{Value: *v1.NewStructuredValues("name-1")}, }, { description: "context.pipelineRun.name undefined", - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: ""}, }, - original: v1beta1.Param{Value: *v1beta1.NewStructuredValues("$(context.pipelineRun.name)-1")}, - expected: v1beta1.Param{Value: *v1beta1.NewStructuredValues("-1")}, + original: v1.Param{Value: *v1.NewStructuredValues("$(context.pipelineRun.name)-1")}, + expected: v1.Param{Value: *v1.NewStructuredValues("-1")}, }, { description: "context.pipelineRun.namespace defined", - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "namespace"}, }, - original: v1beta1.Param{Value: *v1beta1.NewStructuredValues("$(context.pipelineRun.namespace)-1")}, - expected: v1beta1.Param{Value: *v1beta1.NewStructuredValues("namespace-1")}, + original: v1.Param{Value: *v1.NewStructuredValues("$(context.pipelineRun.namespace)-1")}, + expected: v1.Param{Value: *v1.NewStructuredValues("namespace-1")}, }, { description: "context.pipelineRun.namespace undefined", - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: ""}, }, - original: v1beta1.Param{Value: *v1beta1.NewStructuredValues("$(context.pipelineRun.namespace)-1")}, - expected: v1beta1.Param{Value: *v1beta1.NewStructuredValues("-1")}, + original: v1.Param{Value: *v1.NewStructuredValues("$(context.pipelineRun.namespace)-1")}, + expected: v1.Param{Value: *v1.NewStructuredValues("-1")}, }, { description: "context.pipelineRun.uid defined", - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{UID: "UID"}, }, - original: v1beta1.Param{Value: *v1beta1.NewStructuredValues("$(context.pipelineRun.uid)-1")}, - expected: v1beta1.Param{Value: *v1beta1.NewStructuredValues("UID-1")}, + original: v1.Param{Value: *v1.NewStructuredValues("$(context.pipelineRun.uid)-1")}, + expected: v1.Param{Value: *v1.NewStructuredValues("UID-1")}, }, { description: "context.pipelineRun.uid undefined", - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{UID: ""}, }, - original: v1beta1.Param{Value: *v1beta1.NewStructuredValues("$(context.pipelineRun.uid)-1")}, - expected: v1beta1.Param{Value: *v1beta1.NewStructuredValues("-1")}, + original: v1.Param{Value: *v1.NewStructuredValues("$(context.pipelineRun.uid)-1")}, + expected: v1.Param{Value: *v1.NewStructuredValues("-1")}, }} { t.Run(tc.description, func(t *testing.T) { - orig := &v1beta1.Pipeline{ + orig := &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline"}, - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{tc.original}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{tc.original}, + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + Params: v1.Params{tc.original}, + Matrix: &v1.Matrix{ + Params: v1.Params{tc.original}, }}}, }, } @@ -3239,86 +3240,86 @@ func TestContext(t *testing.T) { func TestApplyPipelineTaskContexts(t *testing.T) { for _, tc := range []struct { description string - pt v1beta1.PipelineTask - want v1beta1.PipelineTask + pt v1.PipelineTask + want v1.PipelineTask }{{ description: "context retries replacement", - pt: v1beta1.PipelineTask{ + pt: v1.PipelineTask{ Retries: 5, - Params: v1beta1.Params{{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("$(context.pipelineTask.retries)"), + Value: *v1.NewStructuredValues("$(context.pipelineTask.retries)"), }}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("$(context.pipelineTask.retries)"), + Value: *v1.NewStructuredValues("$(context.pipelineTask.retries)"), }}, - Include: []v1beta1.IncludeParams{{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("$(context.pipelineTask.retries)"), + Value: *v1.NewStructuredValues("$(context.pipelineTask.retries)"), }}, }}, }, }, - want: v1beta1.PipelineTask{ + want: v1.PipelineTask{ Retries: 5, - Params: v1beta1.Params{{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("5"), + Value: *v1.NewStructuredValues("5"), }}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("5"), + Value: *v1.NewStructuredValues("5"), }}, - Include: []v1beta1.IncludeParams{{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("5"), + Value: *v1.NewStructuredValues("5"), }}, }}, }, }, }, { description: "context retries replacement with no defined retries", - pt: v1beta1.PipelineTask{ - Params: v1beta1.Params{{ + pt: v1.PipelineTask{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("$(context.pipelineTask.retries)"), + Value: *v1.NewStructuredValues("$(context.pipelineTask.retries)"), }}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("$(context.pipelineTask.retries)"), + Value: *v1.NewStructuredValues("$(context.pipelineTask.retries)"), }}, - Include: []v1beta1.IncludeParams{{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("$(context.pipelineTask.retries)"), + Value: *v1.NewStructuredValues("$(context.pipelineTask.retries)"), }}, }}, }, }, - want: v1beta1.PipelineTask{ - Params: v1beta1.Params{{ + want: v1.PipelineTask{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("0"), + Value: *v1.NewStructuredValues("0"), }}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("0"), + Value: *v1.NewStructuredValues("0"), }}, - Include: []v1beta1.IncludeParams{{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ + Params: v1.Params{{ Name: "retries", - Value: *v1beta1.NewStructuredValues("0"), + Value: *v1.NewStructuredValues("0"), }}, }}, }, @@ -3336,40 +3337,40 @@ func TestApplyPipelineTaskContexts(t *testing.T) { func TestApplyWorkspaces(t *testing.T) { for _, tc := range []struct { description string - declarations []v1beta1.PipelineWorkspaceDeclaration - bindings []v1beta1.WorkspaceBinding + declarations []v1.PipelineWorkspaceDeclaration + bindings []v1.WorkspaceBinding variableUsage string expectedReplacement string }{{ description: "workspace declared and bound", - declarations: []v1beta1.PipelineWorkspaceDeclaration{{ + declarations: []v1.PipelineWorkspaceDeclaration{{ Name: "foo", }}, - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ Name: "foo", }}, variableUsage: "$(workspaces.foo.bound)", expectedReplacement: "true", }, { description: "workspace declared not bound", - declarations: []v1beta1.PipelineWorkspaceDeclaration{{ + declarations: []v1.PipelineWorkspaceDeclaration{{ Name: "foo", Optional: true, }}, - bindings: []v1beta1.WorkspaceBinding{}, + bindings: []v1.WorkspaceBinding{}, variableUsage: "$(workspaces.foo.bound)", expectedReplacement: "false", }} { t.Run(tc.description, func(t *testing.T) { - p1 := v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{{Value: *v1beta1.NewStructuredValues(tc.variableUsage)}}, + p1 := v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ + Params: v1.Params{{Value: *v1.NewStructuredValues(tc.variableUsage)}}, }}, Workspaces: tc.declarations, } - pr := &v1beta1.PipelineRun{ - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ + pr := &v1.PipelineRun{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ Name: "test-pipeline", }, Workspaces: tc.bindings, @@ -3387,52 +3388,53 @@ func TestApplyWorkspaces(t *testing.T) { func TestApplyFinallyResultsToPipelineResults(t *testing.T) { for _, tc := range []struct { description string - results []v1beta1.PipelineResult - taskResults map[string][]v1beta1.TaskRunResult + results []v1.PipelineResult + taskResults map[string][]v1.TaskRunResult runResults map[string][]v1beta1.CustomRunResult - expected []v1beta1.PipelineRunResult + skippedTasks []v1.SkippedTask + expected []v1.PipelineRunResult expectedError error }{{ description: "single-string-result-single-successful-task", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(finally.pt1.results.foo)"), + Value: *v1.NewStructuredValues("$(finally.pt1.results.foo)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewStructuredValues("do"), + Value: *v1.NewStructuredValues("do"), }, }, }, - expected: []v1beta1.PipelineRunResult{{ + expected: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("do"), + Value: *v1.NewStructuredValues("do"), }}, }, { description: "single-array-result-single-successful-task", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(finally.pt1.results.foo[*])"), + Value: *v1.NewStructuredValues("$(finally.pt1.results.foo[*])"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewStructuredValues("do", "rae"), + Value: *v1.NewStructuredValues("do", "rae"), }, }, }, - expected: []v1beta1.PipelineRunResult{{ + expected: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("do", "rae"), + Value: *v1.NewStructuredValues("do", "rae"), }}, }, { description: "multiple-results-custom-and-normal-tasks", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(finally.customtask.results.foo)"), + Value: *v1.NewStructuredValues("$(finally.customtask.results.foo)"), }}, runResults: map[string][]v1beta1.CustomRunResult{ "customtask": { @@ -3442,30 +3444,30 @@ func TestApplyFinallyResultsToPipelineResults(t *testing.T) { }, }, }, - expected: []v1beta1.PipelineRunResult{{ + expected: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("do"), + Value: *v1.NewStructuredValues("do"), }}, }, { description: "apply-object-results", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(finally.pt1.results.foo[*])"), + Value: *v1.NewStructuredValues("$(finally.pt1.results.foo[*])"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), }, }, }, - expected: []v1beta1.PipelineRunResult{{ + expected: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), @@ -3473,15 +3475,15 @@ func TestApplyFinallyResultsToPipelineResults(t *testing.T) { }, { description: "referencing-invalid-finally-task", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(finally.pt2.results.foo)"), + Value: *v1.NewStructuredValues("$(finally.pt2.results.foo)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewStructuredValues("do"), + Value: *v1.NewStructuredValues("do"), }, }, }, @@ -3501,101 +3503,101 @@ func TestApplyFinallyResultsToPipelineResults(t *testing.T) { func TestApplyTaskResultsToPipelineResults_Success(t *testing.T) { for _, tc := range []struct { description string - results []v1beta1.PipelineResult - taskResults map[string][]v1beta1.TaskRunResult + results []v1.PipelineResult + taskResults map[string][]v1.TaskRunResult runResults map[string][]v1beta1.CustomRunResult taskstatus map[string]string - skippedTasks []v1beta1.SkippedTask - expectedResults []v1beta1.PipelineRunResult + skippedTasks []v1.SkippedTask + expectedResults []v1.PipelineRunResult }{{ description: "non-reference-results", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("resultName"), + Value: *v1.NewStructuredValues("resultName"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewStructuredValues("do", "rae", "mi"), + Value: *v1.NewStructuredValues("do", "rae", "mi"), }, }, }, expectedResults: nil, }, { description: "apply-array-results", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo[*])"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo[*])"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewStructuredValues("do", "rae", "mi"), + Value: *v1.NewStructuredValues("do", "rae", "mi"), }, }, }, - expectedResults: []v1beta1.PipelineRunResult{{ + expectedResults: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("do", "rae", "mi"), + Value: *v1.NewStructuredValues("do", "rae", "mi"), }}, }, { description: "apply-array-indexing-results", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo[1])"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo[1])"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewStructuredValues("do", "rae", "mi"), + Value: *v1.NewStructuredValues("do", "rae", "mi"), }, }, }, - expectedResults: []v1beta1.PipelineRunResult{{ + expectedResults: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("rae"), + Value: *v1.NewStructuredValues("rae"), }}, }, { description: "apply-object-results", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo[*])"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo[*])"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), }, }, }, - expectedResults: []v1beta1.PipelineRunResult{{ + expectedResults: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), }}, }, { description: "object-results-from-array-indexing-and-object-element", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "pkey1": "$(tasks.pt1.results.foo.key1)", "pkey2": "$(tasks.pt2.results.bar[1])", }), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), @@ -3604,28 +3606,28 @@ func TestApplyTaskResultsToPipelineResults_Success(t *testing.T) { "pt2": { { Name: "bar", - Value: *v1beta1.NewStructuredValues("do", "rae", "mi"), + Value: *v1.NewStructuredValues("do", "rae", "mi"), }, }, }, - expectedResults: []v1beta1.PipelineRunResult{{ + expectedResults: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "pkey1": "val1", "pkey2": "rae", }), }}, }, { description: "array-results-from-array-indexing-and-object-element", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo.key1)", "$(tasks.pt2.results.bar[1])"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo.key1)", "$(tasks.pt2.results.bar[1])"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), @@ -3634,114 +3636,114 @@ func TestApplyTaskResultsToPipelineResults_Success(t *testing.T) { "pt2": { { Name: "bar", - Value: *v1beta1.NewStructuredValues("do", "rae", "mi"), + Value: *v1.NewStructuredValues("do", "rae", "mi"), }, }, }, - expectedResults: []v1beta1.PipelineRunResult{{ + expectedResults: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("val1", "rae"), + Value: *v1.NewStructuredValues("val1", "rae"), }}, }, { description: "apply-object-element", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo.key1)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo.key1)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), }, }, }, - expectedResults: []v1beta1.PipelineRunResult{{ + expectedResults: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("val1"), + Value: *v1.NewStructuredValues("val1"), }}, }, { description: "multiple-array-results-multiple-successful-tasks ", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo[*])"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo[*])"), }, { Name: "pipeline-result-2", - Value: *v1beta1.NewStructuredValues("$(tasks.pt2.results.bar[*])"), + Value: *v1.NewStructuredValues("$(tasks.pt2.results.bar[*])"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewStructuredValues("do", "rae"), + Value: *v1.NewStructuredValues("do", "rae"), }, }, "pt2": { { Name: "bar", - Value: *v1beta1.NewStructuredValues("do", "rae", "mi"), + Value: *v1.NewStructuredValues("do", "rae", "mi"), }, }, }, - expectedResults: []v1beta1.PipelineRunResult{{ + expectedResults: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("do", "rae"), + Value: *v1.NewStructuredValues("do", "rae"), }, { Name: "pipeline-result-2", - Value: *v1beta1.NewStructuredValues("do", "rae", "mi"), + Value: *v1.NewStructuredValues("do", "rae", "mi"), }}, }, { description: "no-pipeline-results-no-returned-results", - results: []v1beta1.PipelineResult{}, - taskResults: map[string][]v1beta1.TaskRunResult{ + results: []v1.PipelineResult{}, + taskResults: map[string][]v1.TaskRunResult{ "pt1": {{ Name: "foo", - Value: *v1beta1.NewStructuredValues("bar"), + Value: *v1.NewStructuredValues("bar"), }}, }, expectedResults: nil, }, { description: "multiple-results-multiple-successful-tasks ", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo)"), }, { Name: "pipeline-result-2", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo), $(tasks.pt2.results.baz), $(tasks.pt1.results.bar), $(tasks.pt2.results.baz), $(tasks.pt1.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo), $(tasks.pt2.results.baz), $(tasks.pt1.results.bar), $(tasks.pt2.results.baz), $(tasks.pt1.results.foo)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewStructuredValues("do"), + Value: *v1.NewStructuredValues("do"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("mi"), + Value: *v1.NewStructuredValues("mi"), }, }, "pt2": {{ Name: "baz", - Value: *v1beta1.NewStructuredValues("rae"), + Value: *v1.NewStructuredValues("rae"), }}, }, - expectedResults: []v1beta1.PipelineRunResult{{ + expectedResults: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("do"), + Value: *v1.NewStructuredValues("do"), }, { Name: "pipeline-result-2", - Value: *v1beta1.NewStructuredValues("do, rae, mi, rae, do"), + Value: *v1.NewStructuredValues("do, rae, mi, rae, do"), }}, }, { description: "multiple-results-custom-and-normal-tasks", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.customtask.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.customtask.results.foo)"), }, { Name: "pipeline-result-2", - Value: *v1beta1.NewStructuredValues("$(tasks.customtask.results.foo), $(tasks.normaltask.results.baz), $(tasks.customtask.results.bar), $(tasks.normaltask.results.baz), $(tasks.customtask.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.customtask.results.foo), $(tasks.normaltask.results.baz), $(tasks.customtask.results.bar), $(tasks.normaltask.results.baz), $(tasks.customtask.results.foo)"), }}, runResults: map[string][]v1beta1.CustomRunResult{ "customtask": { @@ -3754,71 +3756,71 @@ func TestApplyTaskResultsToPipelineResults_Success(t *testing.T) { }, }, }, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "normaltask": {{ Name: "baz", - Value: *v1beta1.NewStructuredValues("rae"), + Value: *v1.NewStructuredValues("rae"), }}, }, - expectedResults: []v1beta1.PipelineRunResult{{ + expectedResults: []v1.PipelineRunResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("do"), + Value: *v1.NewStructuredValues("do"), }, { Name: "pipeline-result-2", - Value: *v1beta1.NewStructuredValues("do, rae, mi, rae, do"), + Value: *v1.NewStructuredValues("do, rae, mi, rae, do"), }}, }, { description: "multiple-results-skipped-and-normal-tasks", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.skippedTask.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.skippedTask.results.foo)"), }, { Name: "pipeline-result-2", - Value: *v1beta1.NewStructuredValues("$(tasks.skippedTask.results.foo), $(tasks.normaltask.results.baz)"), + Value: *v1.NewStructuredValues("$(tasks.skippedTask.results.foo), $(tasks.normaltask.results.baz)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "normaltask": {{ Name: "baz", - Value: *v1beta1.NewStructuredValues("rae"), + Value: *v1.NewStructuredValues("rae"), }}, }, taskstatus: map[string]string{resources.PipelineTaskStatusPrefix + "skippedTask" + resources.PipelineTaskStatusSuffix: resources.PipelineTaskStateNone}, expectedResults: nil, }, { description: "unsuccessful-taskrun-no-results", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{}, + taskResults: map[string][]v1.TaskRunResult{}, taskstatus: map[string]string{resources.PipelineTaskStatusPrefix + "pt1" + resources.PipelineTaskStatusSuffix: v1beta1.TaskRunReasonFailed.String()}, expectedResults: nil, }, { description: "unsuccessful-taskrun-no-returned-result-object-ref", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo.key1)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo.key1)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{}, + taskResults: map[string][]v1.TaskRunResult{}, taskstatus: map[string]string{resources.PipelineTaskStatusPrefix + "pt1" + resources.PipelineTaskStatusSuffix: v1beta1.TaskRunReasonFailed.String()}, expectedResults: nil, }, { description: "unsuccessful-taskrun-with-results", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo[*])"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo[*])"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewStructuredValues("do", "rae", "mi"), + Value: *v1.NewStructuredValues("do", "rae", "mi"), }, }}, taskstatus: map[string]string{resources.PipelineTaskStatusPrefix + "pt1" + resources.PipelineTaskStatusSuffix: v1beta1.TaskRunReasonFailed.String()}, - expectedResults: []v1beta1.PipelineRunResult{{ + expectedResults: []v1.PipelineRunResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("do", "rae", "mi"), + Value: *v1.NewStructuredValues("do", "rae", "mi"), }}, }} { t.Run(tc.description, func(t *testing.T) { @@ -3836,22 +3838,22 @@ func TestApplyTaskResultsToPipelineResults_Success(t *testing.T) { func TestApplyTaskResultsToPipelineResults_Error(t *testing.T) { for _, tc := range []struct { description string - results []v1beta1.PipelineResult - taskResults map[string][]v1beta1.TaskRunResult + results []v1.PipelineResult + taskResults map[string][]v1.TaskRunResult runResults map[string][]v1beta1.CustomRunResult - expectedResults []v1beta1.PipelineRunResult + expectedResults []v1.PipelineRunResult expectedError error }{{ description: "array-index-out-of-bound", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo[4])"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo[4])"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewStructuredValues("do", "rae", "mi"), + Value: *v1.NewStructuredValues("do", "rae", "mi"), }, }, }, @@ -3859,15 +3861,15 @@ func TestApplyTaskResultsToPipelineResults_Error(t *testing.T) { expectedError: fmt.Errorf("invalid pipelineresults [pipeline-result-1], the referred results don't exist"), }, { description: "object-reference-key-not-exist", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo.key3)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo.key3)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), @@ -3878,15 +3880,15 @@ func TestApplyTaskResultsToPipelineResults_Error(t *testing.T) { expectedError: fmt.Errorf("invalid pipelineresults [pipeline-result-1], the referred results don't exist"), }, { description: "object-results-resultname-not-exist", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "pipeline-result-1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.bar.key1)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.bar.key1)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": { { Name: "foo", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", }), @@ -3897,100 +3899,100 @@ func TestApplyTaskResultsToPipelineResults_Error(t *testing.T) { expectedError: fmt.Errorf("invalid pipelineresults [pipeline-result-1], the referred results don't exist"), }, { description: "invalid-result-variable-no-returned-result", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1_results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.pt1_results.foo)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": {{ Name: "foo", - Value: *v1beta1.NewStructuredValues("bar"), + Value: *v1.NewStructuredValues("bar"), }}, }, expectedResults: nil, expectedError: fmt.Errorf("invalid pipelineresults [foo], the referred results don't exist"), }, { description: "no-taskrun-results-no-returned-results", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": {}, }, expectedResults: nil, expectedError: fmt.Errorf("invalid pipelineresults [foo], the referred results don't exist"), }, { description: "invalid-taskrun-name-no-returned-result", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "definitely-not-pt1": {{ Name: "foo", - Value: *v1beta1.NewStructuredValues("bar"), + Value: *v1.NewStructuredValues("bar"), }}, }, expectedResults: nil, expectedError: fmt.Errorf("invalid pipelineresults [foo], the referred results don't exist"), }, { description: "invalid-result-name-no-returned-result", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt1": {{ Name: "definitely-not-foo", - Value: *v1beta1.NewStructuredValues("bar"), + Value: *v1.NewStructuredValues("bar"), }}, }, expectedResults: nil, expectedError: fmt.Errorf("invalid pipelineresults [foo], the referred results don't exist"), }, { description: "unsuccessful-taskrun-no-returned-result", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{}, + taskResults: map[string][]v1.TaskRunResult{}, expectedResults: nil, expectedError: fmt.Errorf("invalid pipelineresults [foo], the referred results don't exist"), }, { description: "mixed-success-tasks-some-returned-results", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.foo)"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("$(tasks.pt2.results.bar)"), + Value: *v1.NewStructuredValues("$(tasks.pt2.results.bar)"), }}, - taskResults: map[string][]v1beta1.TaskRunResult{ + taskResults: map[string][]v1.TaskRunResult{ "pt2": {{ Name: "bar", - Value: *v1beta1.NewStructuredValues("rae"), + Value: *v1.NewStructuredValues("rae"), }}, }, - expectedResults: []v1beta1.PipelineRunResult{{ + expectedResults: []v1.PipelineRunResult{{ Name: "bar", - Value: *v1beta1.NewStructuredValues("rae"), + Value: *v1.NewStructuredValues("rae"), }}, expectedError: fmt.Errorf("invalid pipelineresults [foo], the referred results don't exist"), }, { description: "no-run-results-no-returned-results", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.customtask.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.customtask.results.foo)"), }}, runResults: map[string][]v1beta1.CustomRunResult{}, expectedResults: nil, expectedError: fmt.Errorf("invalid pipelineresults [foo], the referred results don't exist"), }, { description: "wrong-customtask-name-no-returned-result", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.customtask.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.customtask.results.foo)"), }}, runResults: map[string][]v1beta1.CustomRunResult{ "differentcustomtask": {{ @@ -4002,9 +4004,9 @@ func TestApplyTaskResultsToPipelineResults_Error(t *testing.T) { expectedError: fmt.Errorf("invalid pipelineresults [foo], the referred results don't exist"), }, { description: "right-customtask-name-wrong-result-name-no-returned-result", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.customtask.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.customtask.results.foo)"), }}, runResults: map[string][]v1beta1.CustomRunResult{ "customtask": {{ @@ -4016,9 +4018,9 @@ func TestApplyTaskResultsToPipelineResults_Error(t *testing.T) { expectedError: fmt.Errorf("invalid pipelineresults [foo], the referred results don't exist"), }, { description: "unsuccessful-run-no-returned-result", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.customtask.results.foo)"), + Value: *v1.NewStructuredValues("$(tasks.customtask.results.foo)"), }}, runResults: map[string][]v1beta1.CustomRunResult{ "customtask": {}, @@ -4027,9 +4029,9 @@ func TestApplyTaskResultsToPipelineResults_Error(t *testing.T) { expectedError: fmt.Errorf("invalid pipelineresults [foo], the referred results don't exist"), }, { description: "wrong-result-reference-expression", - results: []v1beta1.PipelineResult{{ + results: []v1.PipelineResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(tasks.task.results.foo.foo.foo)"), + Value: *v1.NewStructuredValues("$(tasks.task.results.foo.foo.foo)"), }}, runResults: map[string][]v1beta1.CustomRunResult{ "customtask": {}, @@ -4061,17 +4063,17 @@ func TestApplyTaskRunContext(t *testing.T) { "tasks.task3.status": "none", } state := resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "task4", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "task"}, + Params: v1.Params{{ Name: "task1", - Value: *v1beta1.NewStructuredValues("$(tasks.task1.status)"), + Value: *v1.NewStructuredValues("$(tasks.task1.status)"), }, { Name: "task3", - Value: *v1beta1.NewStructuredValues("$(tasks.task3.status)"), + Value: *v1.NewStructuredValues("$(tasks.task3.status)"), }}, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "$(tasks.task1.status)", Operator: selection.In, Values: []string{"$(tasks.task3.status)"}, @@ -4079,17 +4081,17 @@ func TestApplyTaskRunContext(t *testing.T) { }, }} expectedState := resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "task4", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "task"}, + Params: v1.Params{{ Name: "task1", - Value: *v1beta1.NewStructuredValues("succeeded"), + Value: *v1.NewStructuredValues("succeeded"), }, { Name: "task3", - Value: *v1beta1.NewStructuredValues("none"), + Value: *v1.NewStructuredValues("none"), }}, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "succeeded", Operator: selection.In, Values: []string{"none"}, diff --git a/pkg/reconciler/pipelinerun/resources/pipelineref.go b/pkg/reconciler/pipelinerun/resources/pipelineref.go index 79bc349dc85..e112d4c1157 100644 --- a/pkg/reconciler/pipelinerun/resources/pipelineref.go +++ b/pkg/reconciler/pipelinerun/resources/pipelineref.go @@ -21,14 +21,12 @@ import ( "errors" "fmt" - "github.com/google/go-containerregistry/pkg/authn/k8schain" v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" clientset "github.com/tektoncd/pipeline/pkg/client/clientset/versioned" rprp "github.com/tektoncd/pipeline/pkg/reconciler/pipelinerun/pipelinespec" "github.com/tektoncd/pipeline/pkg/remote" - "github.com/tektoncd/pipeline/pkg/remote/oci" "github.com/tektoncd/pipeline/pkg/remote/resolution" remoteresource "github.com/tektoncd/pipeline/pkg/resolution/resource" "github.com/tektoncd/pipeline/pkg/trustedresources" @@ -41,18 +39,18 @@ import ( // looks up the pipeline. It uses as context a k8s client, tekton client, namespace, and service account name to return // the pipeline. It knows whether it needs to look in the cluster or in a remote location to fetch the reference. // OCI bundle and remote resolution pipelines will be verified by trusted resources if the feature is enabled -func GetPipelineFunc(ctx context.Context, k8s kubernetes.Interface, tekton clientset.Interface, requester remoteresource.Requester, pipelineRun *v1beta1.PipelineRun, verificationPolicies []*v1alpha1.VerificationPolicy) rprp.GetPipeline { +func GetPipelineFunc(ctx context.Context, k8s kubernetes.Interface, tekton clientset.Interface, requester remoteresource.Requester, pipelineRun *v1.PipelineRun, verificationPolicies []*v1alpha1.VerificationPolicy) rprp.GetPipeline { pr := pipelineRun.Spec.PipelineRef namespace := pipelineRun.Namespace // if the spec is already in the status, do not try to fetch it again, just use it as source of truth. // Same for the RefSource field in the Status.Provenance. if pipelineRun.Status.PipelineSpec != nil { - return func(_ context.Context, name string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { - var refSource *v1beta1.RefSource + return func(_ context.Context, name string) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) { + var refSource *v1.RefSource if pipelineRun.Status.Provenance != nil { refSource = pipelineRun.Status.Provenance.RefSource } - return &v1beta1.Pipeline{ + return &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: namespace, @@ -63,28 +61,14 @@ func GetPipelineFunc(ctx context.Context, k8s kubernetes.Interface, tekton clien } switch { - case pr != nil && pr.Bundle != "": - // Return an inline function that implements GetTask by calling Resolver.Get with the specified task type and - // casting it to a PipelineObject. - return func(ctx context.Context, name string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { - // If there is a bundle url at all, construct an OCI resolver to fetch the pipeline. - kc, err := k8schain.New(ctx, k8s, k8schain.Options{ - Namespace: namespace, - ServiceAccountName: pipelineRun.Spec.ServiceAccountName, - }) - if err != nil { - return nil, nil, nil, fmt.Errorf("failed to get keychain: %w", err) - } - resolver := oci.NewResolver(pr.Bundle, kc) - return resolvePipeline(ctx, resolver, name, k8s, verificationPolicies) - } case pr != nil && pr.Resolver != "" && requester != nil: - return func(ctx context.Context, name string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + return func(ctx context.Context, name string) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) { stringReplacements, arrayReplacements, objectReplacements := paramsFromPipelineRun(ctx, pipelineRun) for k, v := range GetContextReplacements("", pipelineRun) { stringReplacements[k] = v } replacedParams := pr.Params.ReplaceVariables(stringReplacements, arrayReplacements, objectReplacements) + resolver := resolution.NewResolver(requester, pipelineRun, string(pr.Resolver), "", "", replacedParams) return resolvePipeline(ctx, resolver, name, k8s, verificationPolicies) } @@ -109,13 +93,13 @@ type LocalPipelineRefResolver struct { // TODO: if we want to set RefSource for in-cluster pipeline, set it here. // https://github.com/tektoncd/pipeline/issues/5522 // TODO(#6666): Support local resources verification -func (l *LocalPipelineRefResolver) GetPipeline(ctx context.Context, name string) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { +func (l *LocalPipelineRefResolver) GetPipeline(ctx context.Context, name string) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) { // If we are going to resolve this reference locally, we need a namespace scope. if l.Namespace == "" { return nil, nil, nil, fmt.Errorf("Must specify namespace to resolve reference to pipeline %s", name) } - pipeline, err := l.Tektonclient.TektonV1beta1().Pipelines(l.Namespace).Get(ctx, name, metav1.GetOptions{}) + pipeline, err := l.Tektonclient.TektonV1().Pipelines(l.Namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, nil, nil, err } @@ -126,8 +110,8 @@ func (l *LocalPipelineRefResolver) GetPipeline(ctx context.Context, name string) // fetch a pipeline with given name and verify the v1beta1 pipeline if trusted resources is enabled. // An error is returned if the remoteresource doesn't work // A VerificationResult is returned if trusted resources is enabled, VerificationResult contains the result type and err. -// or the returned data isn't a valid *v1beta1.Pipeline. -func resolvePipeline(ctx context.Context, resolver remote.Resolver, name string, k8s kubernetes.Interface, verificationPolicies []*v1alpha1.VerificationPolicy) (*v1beta1.Pipeline, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { +// or the returned data isn't a valid *v1.Pipeline. +func resolvePipeline(ctx context.Context, resolver remote.Resolver, name string, k8s kubernetes.Interface, verificationPolicies []*v1alpha1.VerificationPolicy) (*v1.Pipeline, *v1.RefSource, *trustedresources.VerificationResult, error) { obj, refSource, err := resolver.Get(ctx, "pipeline", name) if err != nil { return nil, nil, nil, err @@ -140,7 +124,7 @@ func resolvePipeline(ctx context.Context, resolver remote.Resolver, name string, } // readRuntimeObjectAsPipeline tries to convert a generic runtime.Object -// into a *v1beta1.Pipeline type so that its meta and spec fields +// into a *v1.Pipeline type so that its meta and spec fields // can be read. v1 object will be converted to v1beta1 and returned. // v1beta1 Pipeline will be verified if trusted resources is enabled // A VerificationResult is returned if trusted resources is enabled, VerificationResult contains the result type and err. @@ -148,12 +132,21 @@ func resolvePipeline(ctx context.Context, resolver remote.Resolver, name string, // PipelineObject or if there is an error validating or upgrading an // older PipelineObject into its v1beta1 equivalent. // TODO(#5541): convert v1beta1 obj to v1 once we use v1 as the stored version -func readRuntimeObjectAsPipeline(ctx context.Context, obj runtime.Object, k8s kubernetes.Interface, refSource *v1beta1.RefSource, verificationPolicies []*v1alpha1.VerificationPolicy) (*v1beta1.Pipeline, *trustedresources.VerificationResult, error) { +func readRuntimeObjectAsPipeline(ctx context.Context, obj runtime.Object, k8s kubernetes.Interface, refSource *v1.RefSource, verificationPolicies []*v1alpha1.VerificationPolicy) (*v1.Pipeline, *trustedresources.VerificationResult, error) { switch obj := obj.(type) { case *v1beta1.Pipeline: // Verify the Pipeline once we fetch from the remote resolution, mutating, validation and conversion of the pipeline should happen after the verification, since signatures are based on the remote pipeline contents vr := trustedresources.VerifyResource(ctx, obj, k8s, refSource, verificationPolicies) - return obj, &vr, nil + p := &v1.Pipeline{ + TypeMeta: metav1.TypeMeta{ + Kind: "Pipeline", + APIVersion: "tekton.dev/v1", + }, + } + if err := obj.ConvertTo(ctx, p); err != nil { + return nil, nil, fmt.Errorf("failed to convert obj %s into Pipeline", obj.GetObjectKind().GroupVersionKind().String()) + } + return p, &vr, nil case *v1.Pipeline: vr := trustedresources.VerifyResource(ctx, obj, k8s, refSource, verificationPolicies) // Validation of beta fields must happen before the V1 Pipeline is converted into the storage version of the API. @@ -161,16 +154,7 @@ func readRuntimeObjectAsPipeline(ctx context.Context, obj runtime.Object, k8s ku if err := obj.Spec.ValidateBetaFields(ctx); err != nil { return nil, nil, fmt.Errorf("invalid Pipeline %s: %w", obj.GetName(), err) } - t := &v1beta1.Pipeline{ - TypeMeta: metav1.TypeMeta{ - Kind: "Pipeline", - APIVersion: "tekton.dev/v1beta1", - }, - } - if err := t.ConvertFrom(ctx, obj); err != nil { - return nil, nil, fmt.Errorf("failed to convert obj %s into Pipeline", obj.GetObjectKind().GroupVersionKind().String()) - } - return t, &vr, nil + return obj, &vr, nil } return nil, nil, errors.New("resource is not a pipeline") diff --git a/pkg/reconciler/pipelinerun/resources/pipelineref_test.go b/pkg/reconciler/pipelinerun/resources/pipelineref_test.go index 24d816d9f6f..fc6a48c585f 100644 --- a/pkg/reconciler/pipelinerun/resources/pipelineref_test.go +++ b/pkg/reconciler/pipelinerun/resources/pipelineref_test.go @@ -24,16 +24,13 @@ import ( "encoding/json" "errors" "fmt" - "net/http/httptest" - "net/url" "strings" "testing" "github.com/google/go-cmp/cmp" - "github.com/google/go-containerregistry/pkg/registry" "github.com/sigstore/sigstore/pkg/signature" "github.com/tektoncd/pipeline/pkg/apis/config" - pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/client/clientset/versioned/fake" @@ -43,7 +40,6 @@ import ( "github.com/tektoncd/pipeline/test/diff" "github.com/tektoncd/pipeline/test/parse" corev1 "k8s.io/api/core/v1" - v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" fakek8s "k8s.io/client-go/kubernetes/fake" @@ -51,18 +47,18 @@ import ( ) var ( - dummyPipeline = &v1beta1.Pipeline{ + dummyPipeline = &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Name: "dummy", Namespace: "default", }, TypeMeta: metav1.TypeMeta{ Kind: "Pipeline", - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", }, } - sampleRefSource = &v1beta1.RefSource{ + sampleRefSource = &v1.RefSource{ URI: "abc.com", Digest: map[string]string{ "sha1": "a123", @@ -70,17 +66,17 @@ var ( EntryPoint: "foo/bar", } - unsignedV1Pipeline = &pipelinev1.Pipeline{ + unsignedV1Pipeline = &v1.Pipeline{ TypeMeta: metav1.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "Pipeline"}, ObjectMeta: metav1.ObjectMeta{ Name: "pipeline", Namespace: "trusted-resources", Annotations: map[string]string{"foo": "bar"}, }, - Spec: pipelinev1.PipelineSpec{ - Tasks: []pipelinev1.PipelineTask{ + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{ { Name: "task", }, @@ -97,14 +93,14 @@ func TestLocalPipelineRef(t *testing.T) { testcases := []struct { name string pipelines []runtime.Object - ref *v1beta1.PipelineRef + ref *v1.PipelineRef expected runtime.Object wantErr bool }{ { name: "local-pipeline", pipelines: []runtime.Object{simplePipeline(), dummyPipeline}, - ref: &v1beta1.PipelineRef{ + ref: &v1.PipelineRef{ Name: "simple", }, expected: simplePipeline(), @@ -113,7 +109,7 @@ func TestLocalPipelineRef(t *testing.T) { { name: "pipeline-not-found", pipelines: []runtime.Object{}, - ref: &v1beta1.PipelineRef{ + ref: &v1.PipelineRef{ Name: "simple", }, expected: nil, @@ -151,83 +147,6 @@ func TestLocalPipelineRef(t *testing.T) { } } -// TestGetPipelineFunc_Bundle tests the deprecated v1beta1 bundle syntax, this -// can be removed when support for the bundle syntax is removed -func TestGetPipelineFunc_Bundle(t *testing.T) { - // Set up a fake registry to push an image to. - s := httptest.NewServer(registry.New()) - defer s.Close() - u, err := url.Parse(s.URL) - if err != nil { - t.Fatal(err) - } - - ctx := context.Background() - - testcases := []struct { - name string - localPipelines []runtime.Object - remotePipelines []runtime.Object - ref *v1beta1.PipelineRef - expected runtime.Object - }{{ - name: "remote-pipeline-bundle", - localPipelines: []runtime.Object{ - simplePipelineWithBaseSpec(), - dummyPipeline, - }, - remotePipelines: []runtime.Object{simplePipeline(), dummyPipeline}, - ref: &v1beta1.PipelineRef{ - Name: "simple", - Bundle: u.Host + "/remote-pipeline-bundle", - }, - expected: simplePipeline(), - }} - - for _, tc := range testcases { - t.Run(tc.name, func(t *testing.T) { - tektonclient := fake.NewSimpleClientset(tc.localPipelines...) - kubeclient := fakek8s.NewSimpleClientset(&v1.ServiceAccount{ - ObjectMeta: metav1.ObjectMeta{ - Namespace: "default", - Name: "default", - }, - }) - - _, err := test.CreateImage(u.Host+"/"+tc.name, tc.remotePipelines...) - if err != nil { - t.Fatalf("failed to upload test image: %s", err.Error()) - } - - pr := &v1beta1.PipelineRun{ - ObjectMeta: metav1.ObjectMeta{Namespace: "default"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: tc.ref, - ServiceAccountName: "default", - }, - } - - fn := resources.GetPipelineFunc(ctx, kubeclient, tektonclient, nil, pr, nil /*VerificationPolicies*/) - if err != nil { - t.Fatalf("failed to get pipeline fn: %s", err.Error()) - } - - pipeline, refSource, _, err := fn(ctx, tc.ref.Name) - if err != nil { - t.Fatalf("failed to call pipelinefn: %s", err.Error()) - } - - if diff := cmp.Diff(pipeline, tc.expected); tc.expected != nil && diff != "" { - t.Error(diff) - } - - if refSource != nil { - t.Errorf("expected refSource is nil, but got %v", refSource) - } - }) - } -} - func TestGetPipelineFunc_Local(t *testing.T) { ctx := context.Background() @@ -235,7 +154,7 @@ func TestGetPipelineFunc_Local(t *testing.T) { name string localPipelines []runtime.Object remotePipelines []runtime.Object - ref *v1beta1.PipelineRef + ref *v1.PipelineRef expected runtime.Object }{{ name: "local-pipeline", @@ -244,7 +163,7 @@ func TestGetPipelineFunc_Local(t *testing.T) { dummyPipeline, }, remotePipelines: []runtime.Object{simplePipeline(), dummyPipeline}, - ref: &v1beta1.PipelineRef{ + ref: &v1.PipelineRef{ Name: "simple", }, expected: simplePipelineWithBaseSpec(), @@ -253,18 +172,20 @@ func TestGetPipelineFunc_Local(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { tektonclient := fake.NewSimpleClientset(tc.localPipelines...) - kubeclient := fakek8s.NewSimpleClientset(&v1.ServiceAccount{ + kubeclient := fakek8s.NewSimpleClientset(&corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ Namespace: "default", Name: "default", }, }) - fn := resources.GetPipelineFunc(ctx, kubeclient, tektonclient, nil, &v1beta1.PipelineRun{ + fn := resources.GetPipelineFunc(ctx, kubeclient, tektonclient, nil, &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "default"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: tc.ref, - ServiceAccountName: "default", + Spec: v1.PipelineRunSpec{ + PipelineRef: tc.ref, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, }, }, nil /*VerificationPolicies*/) @@ -289,7 +210,7 @@ func TestGetPipelineFuncSpecAlreadyFetched(t *testing.T) { ctx, cancel := context.WithCancel(ctx) defer cancel() tektonclient := fake.NewSimpleClientset(simplePipeline(), dummyPipeline) - kubeclient := fakek8s.NewSimpleClientset(&v1.ServiceAccount{ + kubeclient := fakek8s.NewSimpleClientset(&corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ Namespace: "default", Name: "default", @@ -297,30 +218,32 @@ func TestGetPipelineFuncSpecAlreadyFetched(t *testing.T) { }) name := "anyname-really" - pipelineSpec := v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + pipelineSpec := v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "task1", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }}, } - pipelineRun := &v1beta1.PipelineRun{ + pipelineRun := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "default"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ // Using simple here to show that, it won't fetch the simple pipelinespec, // which is different from the pipelineSpec above Name: "simple", }, - ServiceAccountName: "default", + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, }, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ PipelineSpec: &pipelineSpec, - Provenance: &v1beta1.Provenance{ + Provenance: &v1.Provenance{ RefSource: sampleRefSource.DeepCopy(), }, }}, } - expectedPipeline := &v1beta1.Pipeline{ + expectedPipeline := &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: "default", @@ -347,12 +270,12 @@ func TestGetPipelineFunc_RemoteResolution(t *testing.T) { ctx := config.EnableStableAPIFields(context.Background()) cfg := config.FromContextOrDefaults(ctx) ctx = config.ToContext(ctx, cfg) - pipelineRef := &v1beta1.PipelineRef{ResolverRef: v1beta1.ResolverRef{Resolver: "git"}} + pipelineRef := &v1.PipelineRef{ResolverRef: v1.ResolverRef{Resolver: "git"}} testcases := []struct { name string pipelineYAML string - wantPipeline *v1beta1.Pipeline + wantPipeline *v1.Pipeline wantErr bool }{{ name: "v1beta1 pipeline", @@ -361,7 +284,7 @@ func TestGetPipelineFunc_RemoteResolution(t *testing.T) { "apiVersion: tekton.dev/v1beta1", pipelineYAMLString, }, "\n"), - wantPipeline: parse.MustParseV1beta1Pipeline(t, pipelineYAMLString), + wantPipeline: parse.MustParseV1Pipeline(t, pipelineYAMLString), }, { name: "v1beta1 pipeline with beta features", pipelineYAML: strings.Join([]string{ @@ -369,7 +292,7 @@ func TestGetPipelineFunc_RemoteResolution(t *testing.T) { "apiVersion: tekton.dev/v1beta1", pipelineYAMLStringWithBetaFeatures, }, "\n"), - wantPipeline: parse.MustParseV1beta1Pipeline(t, pipelineYAMLStringWithBetaFeatures), + wantPipeline: parse.MustParseV1Pipeline(t, pipelineYAMLStringWithBetaFeatures), }, { name: "v1 pipeline", pipelineYAML: strings.Join([]string{ @@ -377,7 +300,7 @@ func TestGetPipelineFunc_RemoteResolution(t *testing.T) { "apiVersion: tekton.dev/v1", pipelineYAMLString, }, "\n"), - wantPipeline: parse.MustParseV1beta1Pipeline(t, pipelineYAMLString), + wantPipeline: parse.MustParseV1Pipeline(t, pipelineYAMLString), }, { name: "v1 pipeline with beta features", pipelineYAML: strings.Join([]string{ @@ -394,29 +317,19 @@ func TestGetPipelineFunc_RemoteResolution(t *testing.T) { "apiVersion: tekton.dev/v1", pipelineYAMLStringWithoutDefaults, }, "\n"), - wantPipeline: parse.MustParseV1beta1Pipeline(t, ` -metadata: - name: foo - namespace: bar -spec: - tasks: - - name: something - taskRef: - name: something - params: - - name: foo - type: string -`), + wantPipeline: parse.MustParseV1Pipeline(t, pipelineYAMLStringWithoutDefaults), }} for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { resolved := test.NewResolvedResource([]byte(tc.pipelineYAML), nil /* annotations */, sampleRefSource.DeepCopy(), nil /* data error */) requester := test.NewRequester(resolved, nil) - fn := resources.GetPipelineFunc(ctx, nil, nil, requester, &v1beta1.PipelineRun{ + fn := resources.GetPipelineFunc(ctx, nil, nil, requester, &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "default"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: pipelineRef, - ServiceAccountName: "default", + Spec: v1.PipelineRunSpec{ + PipelineRef: pipelineRef, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, }, }, nil /*VerificationPolicies*/) @@ -446,47 +359,49 @@ func TestGetPipelineFunc_RemoteResolution_ReplacedParams(t *testing.T) { ctx := context.Background() cfg := config.FromContextOrDefaults(ctx) ctx = config.ToContext(ctx, cfg) - pipeline := parse.MustParseV1beta1Pipeline(t, pipelineYAMLString) - pipelineRef := &v1beta1.PipelineRef{ - ResolverRef: v1beta1.ResolverRef{ + pipeline := parse.MustParseV1Pipeline(t, pipelineYAMLString) + pipelineRef := &v1.PipelineRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(params.resolver-param)"), + Value: *v1.NewStructuredValues("$(params.resolver-param)"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("$(context.pipelineRun.name)"), + Value: *v1.NewStructuredValues("$(context.pipelineRun.name)"), }}, }, } pipelineYAML := strings.Join([]string{ "kind: Pipeline", - "apiVersion: tekton.dev/v1beta1", + "apiVersion: tekton.dev/v1", pipelineYAMLString, }, "\n") resolved := test.NewResolvedResource([]byte(pipelineYAML), nil, sampleRefSource.DeepCopy(), nil) requester := &test.Requester{ ResolvedResource: resolved, - Params: v1beta1.Params{{ + Params: v1.Params{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("bar"), + Value: *v1.NewStructuredValues("bar"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("test-pipeline"), + Value: *v1.NewStructuredValues("test-pipeline"), }}, } - fn := resources.GetPipelineFunc(ctx, nil, nil, requester, &v1beta1.PipelineRun{ + fn := resources.GetPipelineFunc(ctx, nil, nil, requester, &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "test-pipeline", Namespace: "default", }, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: pipelineRef, - ServiceAccountName: "default", - Params: v1beta1.Params{{ + Spec: v1.PipelineRunSpec{ + PipelineRef: pipelineRef, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, + Params: []v1.Param{{ Name: "resolver-param", - Value: *v1beta1.NewStructuredValues("bar"), + Value: *v1.NewStructuredValues("bar"), }}, }, }, nil /*VerificationPolicies*/) @@ -504,30 +419,32 @@ func TestGetPipelineFunc_RemoteResolution_ReplacedParams(t *testing.T) { t.Errorf("refSources did not match: %s", diff.PrintWantGot(d)) } - pipelineRefNotMatching := &v1beta1.PipelineRef{ - ResolverRef: v1beta1.ResolverRef{ + pipelineRefNotMatching := &v1.PipelineRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(params.resolver-param)"), + Value: *v1.NewStructuredValues("$(params.resolver-param)"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("$(context.pipelineRun.name)"), + Value: *v1.NewStructuredValues("$(context.pipelineRun.name)"), }}, }, } - fnNotMatching := resources.GetPipelineFunc(ctx, nil, nil, requester, &v1beta1.PipelineRun{ + fnNotMatching := resources.GetPipelineFunc(ctx, nil, nil, requester, &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "other-pipeline", Namespace: "default", }, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: pipelineRefNotMatching, - ServiceAccountName: "default", - Params: v1beta1.Params{{ + Spec: v1.PipelineRunSpec{ + PipelineRef: pipelineRefNotMatching, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, + Params: []v1.Param{{ Name: "resolver-param", - Value: *v1beta1.NewStructuredValues("banana"), + Value: *v1.NewStructuredValues("banana"), }}, }, }, nil /*VerificationPolicies*/) @@ -545,15 +462,17 @@ func TestGetPipelineFunc_RemoteResolutionInvalidData(t *testing.T) { ctx := context.Background() cfg := config.FromContextOrDefaults(ctx) ctx = config.ToContext(ctx, cfg) - pipelineRef := &v1beta1.PipelineRef{ResolverRef: v1beta1.ResolverRef{Resolver: "git"}} + pipelineRef := &v1.PipelineRef{ResolverRef: v1.ResolverRef{Resolver: "git"}} resolvesTo := []byte("INVALID YAML") resource := test.NewResolvedResource(resolvesTo, nil, nil, nil) requester := test.NewRequester(resource, nil) - fn := resources.GetPipelineFunc(ctx, nil, nil, requester, &v1beta1.PipelineRun{ + fn := resources.GetPipelineFunc(ctx, nil, nil, requester, &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "default"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: pipelineRef, - ServiceAccountName: "default", + Spec: v1.PipelineRunSpec{ + PipelineRef: pipelineRef, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, }, }, nil /*VerificationPolicies*/) if _, _, _, err := fn(ctx, pipelineRef.Name); err == nil { @@ -567,11 +486,16 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { tektonclient := fake.NewSimpleClientset() unsignedPipeline := test.GetUnsignedPipeline("test-pipeline") + unsignedV1Pipeline := &v1.Pipeline{} + unsignedPipeline.ConvertTo(ctx, unsignedV1Pipeline) + unsignedV1Pipeline.APIVersion = "tekton.dev/v1" + unsignedV1Pipeline.Kind = "Pipeline" + unsignedPipelineBytes, err := json.Marshal(unsignedPipeline) if err != nil { t.Fatal("fail to marshal pipeline", err) } - noMatchPolicyRefSource := &v1beta1.RefSource{ + noMatchPolicyRefSource := &v1.RefSource{ URI: "abc.com", Digest: map[string]string{ "sha1": "a123", @@ -585,11 +509,16 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { if err != nil { t.Fatal("fail to sign pipeline", err) } + signedV1Pipeline := &v1.Pipeline{} + signedPipeline.ConvertTo(ctx, signedV1Pipeline) + signedV1Pipeline.APIVersion = "tekton.dev/v1" + signedV1Pipeline.Kind = "Pipeline" + signedPipelineBytes, err := json.Marshal(signedPipeline) if err != nil { t.Fatal("fail to marshal pipeline", err) } - matchPolicyRefSource := &v1beta1.RefSource{ + matchPolicyRefSource := &v1.RefSource{ URI: " https://github.com/tektoncd/catalog.git", Digest: map[string]string{ "sha1": "a123", @@ -599,32 +528,38 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { resolvedMatched := test.NewResolvedResource(signedPipelineBytes, nil, matchPolicyRefSource, nil) requesterMatched := test.NewRequester(resolvedMatched, nil) - pipelineRef := &v1beta1.PipelineRef{ + pipelineRef := &v1.PipelineRef{ Name: signedPipeline.Name, - ResolverRef: v1beta1.ResolverRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", }, } - pr := v1beta1.PipelineRun{ + pr := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: pipelineRef, - ServiceAccountName: "default", + Spec: v1.PipelineRunSpec{ + PipelineRef: pipelineRef, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, }, } - prWithStatus := v1beta1.PipelineRun{ - ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: pipelineRef, - ServiceAccountName: "default", + prWithStatus := v1.PipelineRun{ + ObjectMeta: metav1.ObjectMeta{ + Namespace: "trusted-resources", }, - Status: v1beta1.PipelineRunStatus{ - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - PipelineSpec: &signedPipeline.Spec, - Provenance: &v1beta1.Provenance{ - RefSource: &v1beta1.RefSource{ + Spec: v1.PipelineRunSpec{ + PipelineRef: pipelineRef, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, + }, + Status: v1.PipelineRunStatus{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ + PipelineSpec: &signedV1Pipeline.Spec, + Provenance: &v1.Provenance{ + RefSource: &v1.RefSource{ URI: "abc.com", Digest: map[string]string{"sha1": "a123"}, EntryPoint: "foo/bar", @@ -634,7 +569,7 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { }, } - warnPolicyRefSource := &v1beta1.RefSource{ + warnPolicyRefSource := &v1.RefSource{ URI: " warnVP", } resolvedUnsignedMatched := test.NewResolvedResource(unsignedPipelineBytes, nil, warnPolicyRefSource, nil) @@ -644,10 +579,10 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { name string requester *test.Requester verificationNoMatchPolicy string - pipelinerun v1beta1.PipelineRun + pipelinerun v1.PipelineRun policies []*v1alpha1.VerificationPolicy expected runtime.Object - expectedRefSource *v1beta1.RefSource + expectedRefSource *v1.RefSource expectedVerificationResult *trustedresources.VerificationResult }{{ name: "signed pipeline with matching policy pass verification with enforce no match policy", @@ -655,7 +590,7 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.FailNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: signedPipeline, + expected: signedV1Pipeline, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -664,7 +599,7 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.WarnNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: signedPipeline, + expected: signedV1Pipeline, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -673,7 +608,7 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.IgnoreNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: signedPipeline, + expected: signedV1Pipeline, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -682,7 +617,7 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.WarnNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: unsignedPipeline, + expected: unsignedV1Pipeline, expectedRefSource: noMatchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationWarn, Err: trustedresources.ErrNoMatchedPolicies}, }, { @@ -691,7 +626,7 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.FailNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: unsignedPipeline, + expected: unsignedV1Pipeline, expectedRefSource: warnPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationWarn, Err: trustedresources.ErrResourceVerificationFailed}, }, { @@ -700,7 +635,7 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.IgnoreNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: unsignedPipeline, + expected: unsignedV1Pipeline, expectedRefSource: noMatchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationSkip}, }, { @@ -709,12 +644,12 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.FailNoMatchPolicy, pipelinerun: prWithStatus, policies: vps, - expected: &v1beta1.Pipeline{ + expected: &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ - Name: signedPipeline.Name, - Namespace: signedPipeline.Namespace, + Name: signedV1Pipeline.Name, + Namespace: signedV1Pipeline.Namespace, }, - Spec: signedPipeline.Spec, + Spec: signedV1Pipeline.Spec, }, expectedRefSource: noMatchPolicyRefSource, expectedVerificationResult: nil, @@ -733,7 +668,7 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyNoError(t *testing.T) { t.Errorf("resolvedPipeline did not match: %s", diff.PrintWantGot(d)) } if d := cmp.Diff(tc.expectedRefSource, gotSource); d != "" { - t.Errorf("configSources did not match: %s", diff.PrintWantGot(d)) + t.Errorf("refSources did not match: %s", diff.PrintWantGot(d)) } if tc.expectedVerificationResult == nil { if gotVerificationResult != nil { @@ -758,7 +693,7 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyError(t *testing.T) { if err != nil { t.Fatal("fail to marshal pipeline", err) } - matchPolicyRefSource := &v1beta1.RefSource{ + matchPolicyRefSource := &v1.RefSource{ URI: "https://github.com/tektoncd/catalog.git", Digest: map[string]string{ "sha1": "a123", @@ -778,7 +713,7 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyError(t *testing.T) { t.Fatal("fail to marshal pipeline", err) } - noMatchPolicyRefSource := &v1beta1.RefSource{ + noMatchPolicyRefSource := &v1.RefSource{ URI: "abc.com", Digest: map[string]string{ "sha1": "a123", @@ -797,7 +732,7 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyError(t *testing.T) { resolvedModified := test.NewResolvedResource(modifiedPipelineBytes, nil, matchPolicyRefSource, nil) requesterModified := test.NewRequester(resolvedModified, nil) - pipelineRef := &v1beta1.PipelineRef{ResolverRef: v1beta1.ResolverRef{Resolver: "git"}} + pipelineRef := &v1.PipelineRef{ResolverRef: v1.ResolverRef{Resolver: "git"}} testcases := []struct { name string @@ -845,11 +780,13 @@ func TestGetPipelineFunc_V1beta1Pipeline_VerifyError(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { ctx = test.SetupTrustedResourceConfig(ctx, tc.verificationNoMatchPolicy) - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: pipelineRef, - ServiceAccountName: "default", + Spec: v1.PipelineRunSpec{ + PipelineRef: pipelineRef, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, }, } fn := resources.GetPipelineFunc(ctx, k8sclient, tektonclient, tc.requester, pr, vps) @@ -884,7 +821,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { if err != nil { t.Fatal("fail to marshal pipeline", err) } - noMatchPolicyRefSource := &v1beta1.RefSource{ + noMatchPolicyRefSource := &v1.RefSource{ URI: "abc.com", Digest: map[string]string{ "sha1": "a123", @@ -913,7 +850,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { if err != nil { t.Fatal("fail to marshal pipeline", err) } - matchPolicyRefSource := &v1beta1.RefSource{ + matchPolicyRefSource := &v1.RefSource{ URI: " https://github.com/tektoncd/catalog.git", Digest: map[string]string{ "sha1": "a123", @@ -923,32 +860,36 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { resolvedMatched := test.NewResolvedResource(signedPipelineBytes, nil, matchPolicyRefSource, nil) requesterMatched := test.NewRequester(resolvedMatched, nil) - pipelineRef := &v1beta1.PipelineRef{ + pipelineRef := &v1.PipelineRef{ Name: signedPipeline.Name, - ResolverRef: v1beta1.ResolverRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", }, } - pr := v1beta1.PipelineRun{ + pr := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: pipelineRef, - ServiceAccountName: "default", + Spec: v1.PipelineRunSpec{ + PipelineRef: pipelineRef, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, }, } - prWithStatus := v1beta1.PipelineRun{ + prWithStatus := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: pipelineRef, - ServiceAccountName: "default", + Spec: v1.PipelineRunSpec{ + PipelineRef: pipelineRef, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, }, - Status: v1beta1.PipelineRunStatus{ - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - PipelineSpec: &v1beta1SignedPipeline.Spec, - Provenance: &v1beta1.Provenance{ - RefSource: &v1beta1.RefSource{ + Status: v1.PipelineRunStatus{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ + PipelineSpec: &signedPipeline.Spec, + Provenance: &v1.Provenance{ + RefSource: &v1.RefSource{ URI: "abc.com", Digest: map[string]string{"sha1": "a123"}, EntryPoint: "foo/bar", @@ -958,7 +899,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { }, } - warnPolicyRefSource := &v1beta1.RefSource{ + warnPolicyRefSource := &v1.RefSource{ URI: " warnVP", } resolvedUnsignedMatched := test.NewResolvedResource(unsignedPipelineBytes, nil, warnPolicyRefSource, nil) @@ -968,10 +909,10 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { name string requester *test.Requester verificationNoMatchPolicy string - pipelinerun v1beta1.PipelineRun + pipelinerun v1.PipelineRun policies []*v1alpha1.VerificationPolicy expected runtime.Object - expectedRefSource *v1beta1.RefSource + expectedRefSource *v1.RefSource expectedVerificationResult *trustedresources.VerificationResult }{{ name: "signed pipeline with matching policy pass verification with enforce no match policy", @@ -979,7 +920,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.FailNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: v1beta1SignedPipeline, + expected: signedPipeline, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -988,7 +929,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.WarnNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: v1beta1SignedPipeline, + expected: signedPipeline, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -997,7 +938,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.IgnoreNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: v1beta1SignedPipeline, + expected: signedPipeline, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -1006,7 +947,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.WarnNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: v1beta1UnsignedPipeline, + expected: unsignedV1Pipeline, expectedRefSource: noMatchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationWarn, Err: trustedresources.ErrNoMatchedPolicies}, }, { @@ -1015,7 +956,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.FailNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: v1beta1UnsignedPipeline, + expected: unsignedV1Pipeline, expectedRefSource: warnPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationWarn, Err: trustedresources.ErrResourceVerificationFailed}, }, { @@ -1024,7 +965,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.IgnoreNoMatchPolicy, pipelinerun: pr, policies: vps, - expected: v1beta1UnsignedPipeline, + expected: unsignedV1Pipeline, expectedRefSource: noMatchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationSkip}, }, { @@ -1033,12 +974,12 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { verificationNoMatchPolicy: config.FailNoMatchPolicy, pipelinerun: prWithStatus, policies: vps, - expected: &v1beta1.Pipeline{ + expected: &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Name: signedPipeline.Name, Namespace: signedPipeline.Namespace, }, - Spec: v1beta1SignedPipeline.Spec, + Spec: signedPipeline.Spec, }, expectedRefSource: noMatchPolicyRefSource, expectedVerificationResult: nil, @@ -1057,7 +998,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyNoError(t *testing.T) { t.Errorf("resolvedPipeline did not match: %s", diff.PrintWantGot(d)) } if d := cmp.Diff(tc.expectedRefSource, gotSource); d != "" { - t.Errorf("configSources did not match: %s", diff.PrintWantGot(d)) + t.Errorf("refSources did not match: %s", diff.PrintWantGot(d)) } if tc.expectedVerificationResult == nil { if gotVerificationResult != nil { @@ -1081,7 +1022,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyError(t *testing.T) { if err != nil { t.Fatal("fail to marshal pipeline", err) } - matchPolicyRefSource := &v1beta1.RefSource{ + matchPolicyRefSource := &v1.RefSource{ URI: "https://github.com/tektoncd/catalog.git", Digest: map[string]string{ "sha1": "a123", @@ -1101,7 +1042,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyError(t *testing.T) { t.Fatal("fail to marshal pipeline", err) } - noMatchPolicyRefSource := &v1beta1.RefSource{ + noMatchPolicyRefSource := &v1.RefSource{ URI: "abc.com", Digest: map[string]string{ "sha1": "a123", @@ -1120,7 +1061,7 @@ func TestGetPipelineFunc_V1Pipeline_VerifyError(t *testing.T) { resolvedModified := test.NewResolvedResource(modifiedPipelineBytes, nil, matchPolicyRefSource, nil) requesterModified := test.NewRequester(resolvedModified, nil) - pipelineRef := &v1beta1.PipelineRef{ResolverRef: v1beta1.ResolverRef{Resolver: "git"}} + pipelineRef := &v1.PipelineRef{ResolverRef: v1.ResolverRef{Resolver: "git"}} testcases := []struct { name string @@ -1168,11 +1109,11 @@ func TestGetPipelineFunc_V1Pipeline_VerifyError(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { ctx = test.SetupTrustedResourceConfig(ctx, tc.verificationNoMatchPolicy) - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: pipelineRef, - ServiceAccountName: "default", + Spec: v1.PipelineRunSpec{ + PipelineRef: pipelineRef, + TaskRunTemplate: v1.PipelineTaskRunTemplate{ServiceAccountName: "default"}, }, } fn := resources.GetPipelineFunc(ctx, k8sclient, tektonclient, tc.requester, pr, vps) @@ -1203,42 +1144,27 @@ func TestGetPipelineFunc_GetFuncError(t *testing.T) { requesterUnsigned := test.NewRequester(resolvedUnsigned, nil) resolvedUnsigned.DataErr = fmt.Errorf("resolution error") - prBundleError := &v1beta1.PipelineRun{ + prResolutionError := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ - Name: "pipelineName", - Bundle: "bundle", - }, - ServiceAccountName: "default", - }, - } - - prResolutionError := &v1beta1.PipelineRun{ - ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ Name: "pipelineName", - ResolverRef: v1beta1.ResolverRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", }, }, - ServiceAccountName: "default", + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, }, } testcases := []struct { name string requester *test.Requester - pipelinerun v1beta1.PipelineRun + pipelinerun v1.PipelineRun expectedErr error }{ - { - name: "get error when oci bundle return error", - requester: requesterUnsigned, - pipelinerun: *prBundleError, - expectedErr: fmt.Errorf(`failed to get keychain: serviceaccounts "default" not found`), - }, { name: "get error when remote resolution return error", requester: requesterUnsigned, @@ -1271,29 +1197,29 @@ func TestGetPipelineFunc_GetFuncError(t *testing.T) { } } -func basePipeline(name string) *v1beta1.Pipeline { - return &v1beta1.Pipeline{ +func basePipeline(name string) *v1.Pipeline { + return &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: "default", }, TypeMeta: metav1.TypeMeta{ Kind: "Pipeline", - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", }, } } -func simplePipeline() *v1beta1.Pipeline { +func simplePipeline() *v1.Pipeline { return basePipeline("simple") } -func simplePipelineWithBaseSpec() *v1beta1.Pipeline { +func simplePipelineWithBaseSpec() *v1.Pipeline { p := simplePipeline() - p.Spec = v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + p.Spec = v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "something", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "something", }, }}, @@ -1345,7 +1271,7 @@ spec: type: "" ` -func getSignedV1Pipeline(unsigned *pipelinev1.Pipeline, signer signature.Signer, name string) (*pipelinev1.Pipeline, error) { +func getSignedV1Pipeline(unsigned *v1.Pipeline, signer signature.Signer, name string) (*v1.Pipeline, error) { signed := unsigned.DeepCopy() signed.Name = name if signed.Annotations == nil { diff --git a/pkg/reconciler/pipelinerun/resources/pipelinerunresolution.go b/pkg/reconciler/pipelinerun/resources/pipelinerunresolution.go index 7c5827daa27..bda723026f7 100644 --- a/pkg/reconciler/pipelinerun/resources/pipelinerunresolution.go +++ b/pkg/reconciler/pipelinerun/resources/pipelinerunresolution.go @@ -23,6 +23,7 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" "github.com/tektoncd/pipeline/pkg/remote" @@ -40,7 +41,7 @@ const ( // TaskSkipStatus stores whether a task was skipped and why type TaskSkipStatus struct { IsSkipped bool - SkippingReason v1beta1.SkippingReason + SkippingReason v1.SkippingReason } // TaskNotFoundError indicates that the resolution failed because a referenced Task couldn't be retrieved @@ -56,12 +57,12 @@ func (e *TaskNotFoundError) Error() string { // ResolvedPipelineTask contains a PipelineTask and its associated TaskRun(s) or CustomRuns, if they exist. type ResolvedPipelineTask struct { TaskRunNames []string - TaskRuns []*v1beta1.TaskRun + TaskRuns []*v1.TaskRun // If the PipelineTask is a Custom Task, CustomRunName and CustomRun will be set. CustomTask bool CustomRunNames []string CustomRuns []*v1beta1.CustomRun - PipelineTask *v1beta1.PipelineTask + PipelineTask *v1.PipelineTask ResolvedTask *resources.ResolvedTask } @@ -180,7 +181,7 @@ func (t ResolvedPipelineTask) isCancelledForTimeOut() bool { c := taskRun.Status.GetCondition(apis.ConditionSucceeded) taskRunCancelled := c.IsFalse() && c.Reason == v1beta1.TaskRunReasonCancelled.String() && - taskRun.Spec.StatusMessage == v1beta1.TaskRunCancelledByPipelineTimeoutMsg + taskRun.Spec.StatusMessage == v1.TaskRunCancelledByPipelineTimeoutMsg atLeastOneCancelled = atLeastOneCancelled || taskRunCancelled } return atLeastOneCancelled && isDone @@ -296,35 +297,35 @@ func (t *ResolvedPipelineTask) checkParentsDone(facts *PipelineRunFacts) bool { } func (t *ResolvedPipelineTask) skip(facts *PipelineRunFacts) TaskSkipStatus { - var skippingReason v1beta1.SkippingReason + var skippingReason v1.SkippingReason switch { case facts.isFinalTask(t.PipelineTask.Name) || t.isScheduled(): - skippingReason = v1beta1.None + skippingReason = v1.None case facts.IsStopping(): - skippingReason = v1beta1.StoppingSkip + skippingReason = v1.StoppingSkip case facts.IsGracefullyCancelled(): - skippingReason = v1beta1.GracefullyCancelledSkip + skippingReason = v1.GracefullyCancelledSkip case facts.IsGracefullyStopped(): - skippingReason = v1beta1.GracefullyStoppedSkip + skippingReason = v1.GracefullyStoppedSkip case t.skipBecauseParentTaskWasSkipped(facts): - skippingReason = v1beta1.ParentTasksSkip + skippingReason = v1.ParentTasksSkip case t.skipBecauseResultReferencesAreMissing(facts): - skippingReason = v1beta1.MissingResultsSkip + skippingReason = v1.MissingResultsSkip case t.skipBecauseWhenExpressionsEvaluatedToFalse(facts): - skippingReason = v1beta1.WhenExpressionsSkip + skippingReason = v1.WhenExpressionsSkip case t.skipBecausePipelineRunPipelineTimeoutReached(facts): - skippingReason = v1beta1.PipelineTimedOutSkip + skippingReason = v1.PipelineTimedOutSkip case t.skipBecausePipelineRunTasksTimeoutReached(facts): - skippingReason = v1beta1.TasksTimedOutSkip + skippingReason = v1.TasksTimedOutSkip case t.skipBecauseEmptyArrayInMatrixParams(): - skippingReason = v1beta1.EmptyArrayInMatrixParams + skippingReason = v1.EmptyArrayInMatrixParams default: - skippingReason = v1beta1.None + skippingReason = v1.None } return TaskSkipStatus{ - IsSkipped: skippingReason != v1beta1.None, + IsSkipped: skippingReason != v1.None, SkippingReason: skippingReason, } } @@ -349,7 +350,7 @@ func (t *ResolvedPipelineTask) Skip(facts *PipelineRunFacts) TaskSkipStatus { // it returns true if any of the when expressions evaluate to false func (t *ResolvedPipelineTask) skipBecauseWhenExpressionsEvaluatedToFalse(facts *PipelineRunFacts) bool { if t.checkParentsDone(facts) { - if !t.PipelineTask.WhenExpressions.AllowsExecution() { + if !t.PipelineTask.When.AllowsExecution() { return true } } @@ -370,7 +371,7 @@ func (t *ResolvedPipelineTask) skipBecauseParentTaskWasSkipped(facts *PipelineRu if parentSkipStatus := parentTask.Skip(facts); parentSkipStatus.IsSkipped { // if the parent task was skipped due to its `when` expressions, // then we should ignore that and continue evaluating if we should skip because of other parent tasks - if parentSkipStatus.SkippingReason == v1beta1.WhenExpressionsSkip { + if parentSkipStatus.SkippingReason == v1.WhenExpressionsSkip { continue } return true @@ -386,7 +387,7 @@ func (t *ResolvedPipelineTask) skipBecauseResultReferencesAreMissing(facts *Pipe resolvedResultRefs, pt, err := ResolveResultRefs(facts.State, PipelineRunState{t}) rpt := facts.State.ToMap()[pt] if rpt != nil { - if err != nil && (t.IsFinalTask(facts) || rpt.Skip(facts).SkippingReason == v1beta1.WhenExpressionsSkip) { + if err != nil && (t.IsFinalTask(facts) || rpt.Skip(facts).SkippingReason == v1.WhenExpressionsSkip) { return true } } @@ -439,7 +440,7 @@ func (t *ResolvedPipelineTask) skipBecausePipelineRunFinallyTimeoutReached(facts func (t *ResolvedPipelineTask) skipBecauseEmptyArrayInMatrixParams() bool { if t.PipelineTask.IsMatrixed() { for _, ps := range t.PipelineTask.Matrix.Params { - if ps.Value.Type == v1beta1.ParamTypeArray && len(ps.Value.ArrayVal) == 0 { + if ps.Value.Type == v1.ParamTypeArray && len(ps.Value.ArrayVal) == 0 { return true } } @@ -455,32 +456,32 @@ func (t *ResolvedPipelineTask) IsFinalTask(facts *PipelineRunFacts) bool { // IsFinallySkipped returns true if a finally task is not executed and skipped due to task result validation failure func (t *ResolvedPipelineTask) IsFinallySkipped(facts *PipelineRunFacts) TaskSkipStatus { - var skippingReason v1beta1.SkippingReason + var skippingReason v1.SkippingReason switch { case t.isScheduled(): - skippingReason = v1beta1.None + skippingReason = v1.None case facts.checkDAGTasksDone() && facts.isFinalTask(t.PipelineTask.Name): switch { case t.skipBecauseResultReferencesAreMissing(facts): - skippingReason = v1beta1.MissingResultsSkip + skippingReason = v1.MissingResultsSkip case t.skipBecauseWhenExpressionsEvaluatedToFalse(facts): - skippingReason = v1beta1.WhenExpressionsSkip + skippingReason = v1.WhenExpressionsSkip case t.skipBecausePipelineRunPipelineTimeoutReached(facts): - skippingReason = v1beta1.PipelineTimedOutSkip + skippingReason = v1.PipelineTimedOutSkip case t.skipBecausePipelineRunFinallyTimeoutReached(facts): - skippingReason = v1beta1.FinallyTimedOutSkip + skippingReason = v1.FinallyTimedOutSkip case t.skipBecauseEmptyArrayInMatrixParams(): - skippingReason = v1beta1.EmptyArrayInMatrixParams + skippingReason = v1.EmptyArrayInMatrixParams default: - skippingReason = v1beta1.None + skippingReason = v1.None } default: - skippingReason = v1beta1.None + skippingReason = v1.None } return TaskSkipStatus{ - IsSkipped: skippingReason != v1beta1.None, + IsSkipped: skippingReason != v1.None, SkippingReason: skippingReason, } } @@ -489,8 +490,8 @@ func (t *ResolvedPipelineTask) IsFinallySkipped(facts *PipelineRunFacts) TaskSki type GetRun func(name string) (*v1beta1.CustomRun, error) // ValidateWorkspaceBindings validates that the Workspaces expected by a Pipeline are provided by a PipelineRun. -func ValidateWorkspaceBindings(p *v1beta1.PipelineSpec, pr *v1beta1.PipelineRun) error { - pipelineRunWorkspaces := make(map[string]v1beta1.WorkspaceBinding) +func ValidateWorkspaceBindings(p *v1.PipelineSpec, pr *v1.PipelineRun) error { + pipelineRunWorkspaces := make(map[string]v1.WorkspaceBinding) for _, binding := range pr.Spec.Workspaces { pipelineRunWorkspaces[binding.Name] = binding } @@ -507,7 +508,7 @@ func ValidateWorkspaceBindings(p *v1beta1.PipelineSpec, pr *v1beta1.PipelineRun) } // ValidateTaskRunSpecs that the TaskRunSpecs defined by a PipelineRun are correct. -func ValidateTaskRunSpecs(p *v1beta1.PipelineSpec, pr *v1beta1.PipelineRun) error { +func ValidateTaskRunSpecs(p *v1.PipelineSpec, pr *v1.PipelineRun) error { pipelineTasks := make(map[string]string) for _, task := range p.Tasks { pipelineTasks[task.Name] = task.Name @@ -536,11 +537,11 @@ func ValidateTaskRunSpecs(p *v1beta1.PipelineSpec, pr *v1beta1.PipelineRun) erro // It also sets the ResolvedPipelineTask's RunName(s) with the names of CustomRuns that should be or already have been created. func ResolvePipelineTask( ctx context.Context, - pipelineRun v1beta1.PipelineRun, + pipelineRun v1.PipelineRun, getTask resources.GetTask, getTaskRun resources.GetTaskRun, getRun GetRun, - pipelineTask v1beta1.PipelineTask, + pipelineTask v1.PipelineTask, ) (*ResolvedPipelineTask, error) { rpt := ResolvedPipelineTask{ PipelineTask: &pipelineTask, @@ -580,7 +581,7 @@ func (t *ResolvedPipelineTask) setTaskRunsAndResolvedTask( taskRunName string, getTask resources.GetTask, getTaskRun resources.GetTaskRun, - pipelineTask v1beta1.PipelineTask, + pipelineTask v1.PipelineTask, ) error { taskRun, err := getTaskRun(taskRunName) if err != nil { @@ -605,9 +606,9 @@ func (t *ResolvedPipelineTask) setTaskRunsAndResolvedTask( // Returns an error if the Task could not be found because resolution was in progress or any other reason. func resolveTask( ctx context.Context, - taskRun *v1beta1.TaskRun, + taskRun *v1.TaskRun, getTask resources.GetTask, - pipelineTask v1beta1.PipelineTask, + pipelineTask v1.PipelineTask, ) (*resources.ResolvedTask, error) { rt := &resources.ResolvedTask{} if pipelineTask.TaskRef != nil { @@ -628,9 +629,9 @@ func resolveTask( Msg: err.Error(), } default: - spec := t.TaskSpec() + spec := t.Spec rt.TaskSpec = &spec - rt.TaskName = t.TaskMetadata().Name + rt.TaskName = t.Name rt.VerificationResult = vr } } @@ -643,7 +644,7 @@ func resolveTask( } // GetTaskRunName should return a unique name for a `TaskRun` if one has not already been defined, and the existing one otherwise. -func GetTaskRunName(childRefs []v1beta1.ChildStatusReference, ptName, prName string) string { +func GetTaskRunName(childRefs []v1.ChildStatusReference, ptName, prName string) string { for _, cr := range childRefs { if cr.Kind == pipeline.TaskRunControllerName && cr.PipelineTaskName == ptName { return cr.Name @@ -653,7 +654,7 @@ func GetTaskRunName(childRefs []v1beta1.ChildStatusReference, ptName, prName str } // GetNamesOfTaskRuns should return unique names for `TaskRuns` if one has not already been defined, and the existing one otherwise. -func GetNamesOfTaskRuns(childRefs []v1beta1.ChildStatusReference, ptName, prName string, numberOfTaskRuns int) []string { +func GetNamesOfTaskRuns(childRefs []v1.ChildStatusReference, ptName, prName string, numberOfTaskRuns int) []string { if taskRunNames := getTaskRunNamesFromChildRefs(childRefs, ptName); taskRunNames != nil { return taskRunNames } @@ -661,7 +662,7 @@ func GetNamesOfTaskRuns(childRefs []v1beta1.ChildStatusReference, ptName, prName } // getTaskRunNamesFromChildRefs returns the names of TaskRuns defined in childRefs that are associated with the named Pipeline Task. -func getTaskRunNamesFromChildRefs(childRefs []v1beta1.ChildStatusReference, ptName string) []string { +func getTaskRunNamesFromChildRefs(childRefs []v1.ChildStatusReference, ptName string) []string { var taskRunNames []string for _, cr := range childRefs { if cr.Kind == pipeline.TaskRunControllerName && cr.PipelineTaskName == ptName { @@ -688,7 +689,7 @@ func getNewRunNames(ptName, prName string, numberOfRuns int) []string { // getCustomRunName should return a unique name for a `Run` if one has not already // been defined, and the existing one otherwise. -func getCustomRunName(childRefs []v1beta1.ChildStatusReference, ptName, prName string) string { +func getCustomRunName(childRefs []v1.ChildStatusReference, ptName, prName string) string { for _, cr := range childRefs { if cr.PipelineTaskName == ptName { if cr.Kind == pipeline.CustomRunControllerName { @@ -702,7 +703,7 @@ func getCustomRunName(childRefs []v1beta1.ChildStatusReference, ptName, prName s // getNamesOfCustomRuns should return a unique names for `CustomRuns` if they have not already been defined, // and the existing ones otherwise. -func getNamesOfCustomRuns(childRefs []v1beta1.ChildStatusReference, ptName, prName string, numberOfRuns int) []string { +func getNamesOfCustomRuns(childRefs []v1.ChildStatusReference, ptName, prName string, numberOfRuns int) []string { if customRunNames := getRunNamesFromChildRefs(childRefs, ptName); customRunNames != nil { return customRunNames } @@ -710,7 +711,7 @@ func getNamesOfCustomRuns(childRefs []v1beta1.ChildStatusReference, ptName, prNa } // getRunNamesFromChildRefs returns the names of CustomRuns defined in childRefs that are associated with the named Pipeline Task. -func getRunNamesFromChildRefs(childRefs []v1beta1.ChildStatusReference, ptName string) []string { +func getRunNamesFromChildRefs(childRefs []v1.ChildStatusReference, ptName string) []string { var runNames []string for _, cr := range childRefs { if cr.PipelineTaskName == ptName { @@ -723,20 +724,20 @@ func getRunNamesFromChildRefs(childRefs []v1beta1.ChildStatusReference, ptName s } func (t *ResolvedPipelineTask) hasResultReferences() bool { - var matrixParams v1beta1.Params + var matrixParams v1.Params if t.PipelineTask.IsMatrixed() { matrixParams = t.PipelineTask.Params } for _, param := range append(t.PipelineTask.Params, matrixParams...) { - if ps, ok := v1beta1.GetVarSubstitutionExpressionsForParam(param); ok { - if v1beta1.LooksLikeContainsResultRefs(ps) { + if ps, ok := v1.GetVarSubstitutionExpressionsForParam(param); ok { + if v1.LooksLikeContainsResultRefs(ps) { return true } } } - for _, we := range t.PipelineTask.WhenExpressions { + for _, we := range t.PipelineTask.When { if ps, ok := we.GetVarSubstitutionExpressions(); ok { - if v1beta1.LooksLikeContainsResultRefs(ps) { + if v1.LooksLikeContainsResultRefs(ps) { return true } } diff --git a/pkg/reconciler/pipelinerun/resources/pipelinerunresolution_test.go b/pkg/reconciler/pipelinerun/resources/pipelinerunresolution_test.go index a48939121a5..6df2cd8e3c9 100644 --- a/pkg/reconciler/pipelinerun/resources/pipelinerunresolution_test.go +++ b/pkg/reconciler/pipelinerun/resources/pipelinerunresolution_test.go @@ -27,6 +27,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/tektoncd/pipeline/pkg/apis/config" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/reconciler/pipeline/dag" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" @@ -46,65 +47,65 @@ import ( func nopGetCustomRun(string) (*v1beta1.CustomRun, error) { return nil, errors.New("GetRun should not be called") } -func nopGetTask(context.Context, string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { +func nopGetTask(context.Context, string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return nil, nil, nil, errors.New("GetTask should not be called") } -func nopGetTaskRun(string) (*v1beta1.TaskRun, error) { +func nopGetTaskRun(string) (*v1.TaskRun, error) { return nil, errors.New("GetTaskRun should not be called") } -var pts = []v1beta1.PipelineTask{{ +var pts = []v1.PipelineTask{{ Name: "mytask1", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, { Name: "mytask2", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, { Name: "mytask3", - TaskRef: &v1beta1.TaskRef{Name: "clustertask"}, + TaskRef: &v1.TaskRef{Name: "clustertask"}, }, { Name: "mytask4", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, Retries: 1, }, { Name: "mytask5", - TaskRef: &v1beta1.TaskRef{Name: "cancelledTask"}, + TaskRef: &v1.TaskRef{Name: "cancelledTask"}, Retries: 2, }, { Name: "mytask6", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, { Name: "mytask7", - TaskRef: &v1beta1.TaskRef{Name: "taskWithOneParent"}, + TaskRef: &v1.TaskRef{Name: "taskWithOneParent"}, RunAfter: []string{"mytask6"}, }, { Name: "mytask8", - TaskRef: &v1beta1.TaskRef{Name: "taskWithTwoParents"}, + TaskRef: &v1.TaskRef{Name: "taskWithTwoParents"}, RunAfter: []string{"mytask1", "mytask6"}, }, { Name: "mytask9", - TaskRef: &v1beta1.TaskRef{Name: "taskHasParentWithRunAfter"}, + TaskRef: &v1.TaskRef{Name: "taskHasParentWithRunAfter"}, RunAfter: []string{"mytask8"}, }, { Name: "mytask10", - TaskRef: &v1beta1.TaskRef{Name: "taskWithWhenExpressions"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "taskWithWhenExpressions"}, + When: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, }}, }, { Name: "mytask11", - TaskRef: &v1beta1.TaskRef{Name: "taskWithWhenExpressions"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "taskWithWhenExpressions"}, + When: []v1.WhenExpression{{ Input: "foo", Operator: selection.NotIn, Values: []string{"foo", "bar"}, }}, }, { Name: "mytask12", - TaskRef: &v1beta1.TaskRef{Name: "taskWithWhenExpressions"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "taskWithWhenExpressions"}, + When: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, @@ -112,103 +113,103 @@ var pts = []v1beta1.PipelineTask{{ RunAfter: []string{"mytask1"}, }, { Name: "mytask13", - TaskRef: &v1beta1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example", Name: "customtask"}, + TaskRef: &v1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example", Name: "customtask"}, }, { Name: "mytask14", - TaskRef: &v1beta1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example", Name: "customtask"}, + TaskRef: &v1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example", Name: "customtask"}, }, { Name: "mytask15", - TaskRef: &v1beta1.TaskRef{Name: "taskWithReferenceToTaskResult"}, - Params: v1beta1.Params{{Name: "param1", Value: *v1beta1.NewStructuredValues("$(tasks.mytask1.results.result1)")}}, + TaskRef: &v1.TaskRef{Name: "taskWithReferenceToTaskResult"}, + Params: v1.Params{{Name: "param1", Value: *v1.NewStructuredValues("$(tasks.mytask1.results.result1)")}}, }, { Name: "mytask16", - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "browser", - Value: v1beta1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, + Value: v1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, }}}, }, { Name: "mytask17", - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "browser", - Value: v1beta1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, + Value: v1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, }}}, }, { Name: "mytask18", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, Retries: 1, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "browser", - Value: v1beta1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, + Value: v1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, }}}, }, { Name: "mytask19", - TaskRef: &v1beta1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example", Name: "customtask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example", Name: "customtask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "browser", - Value: v1beta1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, + Value: v1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, }}}, }, { Name: "mytask20", - TaskRef: &v1beta1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example", Name: "customtask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example", Name: "customtask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "browser", - Value: v1beta1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, + Value: v1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, }}}, }, { Name: "mytask21", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, Retries: 2, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "browser", - Value: v1beta1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, + Value: v1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, }}}, }} -var p = &v1beta1.Pipeline{ +var p = &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Namespace: "namespace", Name: "pipeline", }, - Spec: v1beta1.PipelineSpec{ + Spec: v1.PipelineSpec{ Tasks: pts, }, } -var task = &v1beta1.Task{ +var task = &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "task", }, - Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + Spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", }}, }, } -var trs = []v1beta1.TaskRun{{ +var trs = []v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Namespace: "namespace", Name: "pipelinerun-mytask1", }, - Spec: v1beta1.TaskRunSpec{}, + Spec: v1.TaskRunSpec{}, }, { ObjectMeta: metav1.ObjectMeta{ Namespace: "namespace", Name: "pipelinerun-mytask2", }, - Spec: v1beta1.TaskRunSpec{}, + Spec: v1.TaskRunSpec{}, }, { ObjectMeta: metav1.ObjectMeta{ Namespace: "namespace", Name: "pipelinerun-mytask4", }, - Spec: v1beta1.TaskRunSpec{}, + Spec: v1.TaskRunSpec{}, }} var customRuns = []v1beta1.CustomRun{{ @@ -225,22 +226,22 @@ var customRuns = []v1beta1.CustomRun{{ Spec: v1beta1.CustomRunSpec{}, }} -var matrixedPipelineTask = &v1beta1.PipelineTask{ +var matrixedPipelineTask = &v1.PipelineTask{ Name: "task", - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "browser", - Value: v1beta1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, + Value: v1.ParamValue{ArrayVal: []string{"safari", "chrome"}}, }}}, } -func makeScheduled(tr v1beta1.TaskRun) *v1beta1.TaskRun { +func makeScheduled(tr v1.TaskRun) *v1.TaskRun { newTr := newTaskRun(tr) - newTr.Status = v1beta1.TaskRunStatus{ /* explicitly empty */ } + newTr.Status = v1.TaskRunStatus{ /* explicitly empty */ } return newTr } -func makeStarted(tr v1beta1.TaskRun) *v1beta1.TaskRun { +func makeStarted(tr v1.TaskRun) *v1.TaskRun { newTr := newTaskRun(tr) newTr.Status.Conditions[0].Status = corev1.ConditionUnknown return newTr @@ -252,7 +253,7 @@ func makeCustomRunStarted(run v1beta1.CustomRun) *v1beta1.CustomRun { return newRun } -func makeSucceeded(tr v1beta1.TaskRun) *v1beta1.TaskRun { +func makeSucceeded(tr v1.TaskRun) *v1.TaskRun { newTr := newTaskRun(tr) newTr.Status.Conditions[0].Status = corev1.ConditionTrue return newTr @@ -264,16 +265,16 @@ func makeCustomRunSucceeded(run v1beta1.CustomRun) *v1beta1.CustomRun { return newRun } -func makeFailed(tr v1beta1.TaskRun) *v1beta1.TaskRun { +func makeFailed(tr v1.TaskRun) *v1.TaskRun { newTr := newTaskRun(tr) newTr.Status.Conditions[0].Status = corev1.ConditionFalse return newTr } -func makeToBeRetried(tr v1beta1.TaskRun) *v1beta1.TaskRun { +func makeToBeRetried(tr v1.TaskRun) *v1.TaskRun { newTr := newTaskRun(tr) newTr.Status.Conditions[0].Status = corev1.ConditionUnknown - newTr.Status.Conditions[0].Reason = v1beta1.TaskRunReasonToBeRetried.String() + newTr.Status.Conditions[0].Reason = v1.TaskRunReasonToBeRetried.String() return newTr } @@ -283,14 +284,14 @@ func makeCustomRunFailed(run v1beta1.CustomRun) *v1beta1.CustomRun { return newRun } -func withCancelled(tr *v1beta1.TaskRun) *v1beta1.TaskRun { - tr.Status.Conditions[0].Reason = v1beta1.TaskRunSpecStatusCancelled +func withCancelled(tr *v1.TaskRun) *v1.TaskRun { + tr.Status.Conditions[0].Reason = v1.TaskRunSpecStatusCancelled return tr } -func withCancelledForTimeout(tr *v1beta1.TaskRun) *v1beta1.TaskRun { - tr.Spec.StatusMessage = v1beta1.TaskRunCancelledByPipelineTimeoutMsg - tr.Status.Conditions[0].Reason = v1beta1.TaskRunSpecStatusCancelled +func withCancelledForTimeout(tr *v1.TaskRun) *v1.TaskRun { + tr.Spec.StatusMessage = v1.TaskRunCancelledByPipelineTimeoutMsg + tr.Status.Conditions[0].Reason = v1.TaskRunSpecStatusCancelled return tr } @@ -305,8 +306,8 @@ func withCustomRunCancelledForTimeout(run *v1beta1.CustomRun) *v1beta1.CustomRun return run } -func withCancelledBySpec(tr *v1beta1.TaskRun) *v1beta1.TaskRun { - tr.Spec.Status = v1beta1.TaskRunSpecStatusCancelled +func withCancelledBySpec(tr *v1.TaskRun) *v1.TaskRun { + tr.Spec.Status = v1.TaskRunSpecStatusCancelled return tr } @@ -315,14 +316,14 @@ func withCustomRunCancelledBySpec(run *v1beta1.CustomRun) *v1beta1.CustomRun { return run } -func makeRetried(tr v1beta1.TaskRun) (newTr *v1beta1.TaskRun) { +func makeRetried(tr v1.TaskRun) (newTr *v1.TaskRun) { newTr = newTaskRun(tr) newTr = withRetries(newTr) return } -func withRetries(tr *v1beta1.TaskRun) *v1beta1.TaskRun { - tr.Status.RetriesStatus = []v1beta1.TaskRunStatus{{ +func withRetries(tr *v1.TaskRun) *v1.TaskRun { + tr.Status.RetriesStatus = []v1.TaskRunStatus{{ Status: duckv1.Status{ Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, @@ -345,14 +346,14 @@ func withCustomRunRetries(r *v1beta1.CustomRun) *v1beta1.CustomRun { return r } -func newTaskRun(tr v1beta1.TaskRun) *v1beta1.TaskRun { - return &v1beta1.TaskRun{ +func newTaskRun(tr v1.TaskRun) *v1.TaskRun { + return &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Namespace: tr.Namespace, Name: tr.Name, }, Spec: tr.Spec, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: []apis.Condition{{Type: apis.ConditionSucceeded}}, }, @@ -360,7 +361,7 @@ func newTaskRun(tr v1beta1.TaskRun) *v1beta1.TaskRun { } } -func withPipelineTaskRetries(pt v1beta1.PipelineTask, retries int) *v1beta1.PipelineTask { +func withPipelineTaskRetries(pt v1.PipelineTask, retries int) *v1.PipelineTask { pt.Retries = retries return &pt } @@ -399,7 +400,7 @@ var noneStartedState = PipelineRunState{{ var oneStartedState = PipelineRunState{{ PipelineTask: &pts[0], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -415,7 +416,7 @@ var oneStartedState = PipelineRunState{{ var oneFinishedState = PipelineRunState{{ PipelineTask: &pts[0], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -431,7 +432,7 @@ var oneFinishedState = PipelineRunState{{ var oneFailedState = PipelineRunState{{ PipelineTask: &pts[0], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -447,14 +448,14 @@ var oneFailedState = PipelineRunState{{ var finalScheduledState = PipelineRunState{{ PipelineTask: &pts[0], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, }, { PipelineTask: &pts[1], TaskRunNames: []string{"pipelinerun-mytask2"}, - TaskRuns: []*v1beta1.TaskRun{makeScheduled(trs[1])}, + TaskRuns: []*v1.TaskRun{makeScheduled(trs[1])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -463,14 +464,14 @@ var finalScheduledState = PipelineRunState{{ var allFinishedState = PipelineRunState{{ PipelineTask: &pts[0], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, }, { PipelineTask: &pts[1], TaskRunNames: []string{"pipelinerun-mytask2"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -527,7 +528,7 @@ var oneCustomRunFailedState = PipelineRunState{{ var taskCancelled = PipelineRunState{{ PipelineTask: &pts[4], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -558,7 +559,7 @@ var noneStartedStateMatrix = PipelineRunState{{ var oneStartedStateMatrix = PipelineRunState{{ PipelineTask: &pts[15], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -574,7 +575,7 @@ var oneStartedStateMatrix = PipelineRunState{{ var oneFinishedStateMatrix = PipelineRunState{{ PipelineTask: &pts[15], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -590,7 +591,7 @@ var oneFinishedStateMatrix = PipelineRunState{{ var oneFailedStateMatrix = PipelineRunState{{ PipelineTask: &pts[15], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -606,14 +607,14 @@ var oneFailedStateMatrix = PipelineRunState{{ var finalScheduledStateMatrix = PipelineRunState{{ PipelineTask: &pts[15], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, }, { PipelineTask: &pts[16], TaskRunNames: []string{"pipelinerun-mytask2"}, - TaskRuns: []*v1beta1.TaskRun{makeScheduled(trs[1])}, + TaskRuns: []*v1.TaskRun{makeScheduled(trs[1])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -622,14 +623,14 @@ var finalScheduledStateMatrix = PipelineRunState{{ var allFinishedStateMatrix = PipelineRunState{{ PipelineTask: &pts[15], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, }, { PipelineTask: &pts[16], TaskRunNames: []string{"pipelinerun-mytask2"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -674,18 +675,18 @@ var oneCustomRunFailedStateMatrix = PipelineRunState{{ var taskCancelledMatrix = PipelineRunState{{ PipelineTask: &pts[20], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, }} func dagFromState(state PipelineRunState) (*dag.Graph, error) { - pts := []v1beta1.PipelineTask{} + pts := []v1.PipelineTask{} for _, rpt := range state { pts = append(pts, *rpt.PipelineTask) } - return dag.Build(v1beta1.PipelineTaskList(pts), v1beta1.PipelineTaskList(pts).Deps()) + return dag.Build(v1.PipelineTaskList(pts), v1.PipelineTaskList(pts).Deps()) } func TestIsSkipped(t *testing.T) { @@ -726,7 +727,7 @@ func TestIsSkipped(t *testing.T) { state: PipelineRunState{{ PipelineTask: &pts[5], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -746,7 +747,7 @@ func TestIsSkipped(t *testing.T) { state: PipelineRunState{{ PipelineTask: &pts[5], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -766,7 +767,7 @@ func TestIsSkipped(t *testing.T) { state: PipelineRunState{{ PipelineTask: &pts[5], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -778,9 +779,9 @@ func TestIsSkipped(t *testing.T) { TaskSpec: &task.Spec, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask10", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"mytask7"}, }, // mytask10 runAfter mytask7 runAfter mytask6 TaskRunNames: []string{"pipelinerun-mytask3"}, @@ -797,14 +798,14 @@ func TestIsSkipped(t *testing.T) { state: PipelineRunState{{ PipelineTask: &pts[5], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, }, { PipelineTask: &pts[0], TaskRunNames: []string{"pipelinerun-mytask2"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -824,14 +825,14 @@ func TestIsSkipped(t *testing.T) { state: PipelineRunState{{ PipelineTask: &pts[0], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, }, { PipelineTask: &pts[5], TaskRunNames: []string{"pipelinerun-mytask2"}, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[1])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -914,9 +915,9 @@ func TestIsSkipped(t *testing.T) { }, }, { // not skipped regardless of its parent task being skipped because when expressions are scoped to task - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask18", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"mytask11"}, }, TaskRunNames: []string{"pipelinerun-ordering-dependent-task-1"}, @@ -941,9 +942,9 @@ func TestIsSkipped(t *testing.T) { }, }, { // not skipped regardless of its parent task being skipped because when expressions are scoped to task - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask18", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"mytask11"}, }, TaskRunNames: []string{"pipelinerun-ordering-dependent-task-1"}, @@ -953,9 +954,9 @@ func TestIsSkipped(t *testing.T) { }, }, { // not skipped regardless of its grandparent task being skipped because when expressions are scoped to task - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask19", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"mytask18"}, }, TaskRunNames: []string{"pipelinerun-ordering-dependent-task-2"}, @@ -981,9 +982,9 @@ func TestIsSkipped(t *testing.T) { }, }, { // not skipped regardless of its parent task mytask11 being skipped because when expressions are scoped to task - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask18", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"mytask11"}, }, TaskRunNames: []string{"pipelinerun-ordering-dependent-task-1"}, @@ -993,9 +994,9 @@ func TestIsSkipped(t *testing.T) { }, }, { // not skipped regardless of its grandparent task mytask11 being skipped because when expressions are scoped to task - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask19", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"mytask18"}, }, TaskRunNames: []string{"pipelinerun-ordering-dependent-task-2"}, @@ -1005,12 +1006,12 @@ func TestIsSkipped(t *testing.T) { }, }, { // attempted but skipped because of missing result in params from parent task mytask11 which was skipped - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask20", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "task"}, + Params: v1.Params{{ Name: "commit", - Value: *v1beta1.NewStructuredValues("$(tasks.mytask11.results.missingResult)"), + Value: *v1.NewStructuredValues("$(tasks.mytask11.results.missingResult)"), }}, }, TaskRunNames: []string{"pipelinerun-resource-dependent-task-1"}, @@ -1021,9 +1022,9 @@ func TestIsSkipped(t *testing.T) { }, { // skipped because of parent task mytask20 was skipped because of missing result from grandparent task // mytask11 which was skipped - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask21", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"mytask20"}, }, TaskRunNames: []string{"pipelinerun-ordering-dependent-task-3"}, @@ -1033,10 +1034,10 @@ func TestIsSkipped(t *testing.T) { }, }, { // attempted but skipped because of missing result from parent task mytask11 which was skipped in when expressions - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask22", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - WhenExpressions: v1beta1.WhenExpressions{{ + TaskRef: &v1.TaskRef{Name: "task"}, + When: v1.WhenExpressions{{ Input: "$(tasks.mytask11.results.missingResult)", Operator: selection.In, Values: []string{"expectedResult"}, @@ -1050,9 +1051,9 @@ func TestIsSkipped(t *testing.T) { }, { // skipped because of parent task mytask22 was skipping because of missing result from grandparent task // mytask11 which was skipped - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask23", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"mytask22"}, }, TaskRunNames: []string{"pipelinerun-ordering-dependent-task-4"}, @@ -1110,14 +1111,14 @@ func TestIsSkipped(t *testing.T) { name: "matrix-params-contain-empty-arr", state: PipelineRunState{{ // not skipped no empty arrs - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask1", - TaskRef: &v1beta1.TaskRef{Name: "matrix-1"}, - Matrix: &v1beta1.Matrix{ - Params: []v1beta1.Param{{ + TaskRef: &v1.TaskRef{Name: "matrix-1"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "a-param", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeArray, + Value: v1.ParamValue{ + Type: v1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}, }, }}}, @@ -1129,14 +1130,14 @@ func TestIsSkipped(t *testing.T) { }, }, { // skipped empty ArrayVal exist in matrix param - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask2", - TaskRef: &v1beta1.TaskRef{Name: "matrix-2"}, - Matrix: &v1beta1.Matrix{ - Params: []v1beta1.Param{{ + TaskRef: &v1.TaskRef{Name: "matrix-2"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "a-param", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeArray, + Value: v1.ParamValue{ + Type: v1.ParamTypeArray, ArrayVal: []string{}, }, }}}, @@ -1148,20 +1149,20 @@ func TestIsSkipped(t *testing.T) { }, }, { // skipped empty ArrayVal exist in matrix param - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask3", - TaskRef: &v1beta1.TaskRef{Name: "matrix-2"}, - Matrix: &v1beta1.Matrix{ - Params: []v1beta1.Param{{ + TaskRef: &v1.TaskRef{Name: "matrix-2"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "a-param", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeArray, + Value: v1.ParamValue{ + Type: v1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}, }, }, { Name: "b-param", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeArray, + Value: v1.ParamValue{ + Type: v1.ParamTypeArray, ArrayVal: []string{}, }, }}}, @@ -1224,27 +1225,27 @@ func TestIsFailure(t *testing.T) { }{{ name: "taskrun not started", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, }, want: false, }, { name: "run not started", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, }, want: false, }, { name: "taskrun running", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, }, want: false, }, { name: "run running", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunStarted(customRuns[0])}, }, @@ -1252,14 +1253,14 @@ func TestIsFailure(t *testing.T) { }, { name: "taskrun succeeded", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, }, want: false, }, { name: "run succeeded", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunSucceeded(customRuns[0])}, }, @@ -1267,14 +1268,14 @@ func TestIsFailure(t *testing.T) { }, { name: "taskrun failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }, want: true, }, { name: "run failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunFailed(customRuns[0])}, }, @@ -1282,7 +1283,7 @@ func TestIsFailure(t *testing.T) { }, { name: "run failed: retries remaining", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunFailed(customRuns[0])}, }, @@ -1290,14 +1291,14 @@ func TestIsFailure(t *testing.T) { }, { name: "taskrun failed - Retried", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, - TaskRuns: []*v1beta1.TaskRun{withRetries(makeFailed(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, + TaskRuns: []*v1.TaskRun{withRetries(makeFailed(trs[0]))}, }, want: true, }, { name: "customrun failed - Retried", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{withCustomRunRetries(makeCustomRunFailed(customRuns[0]))}, }, @@ -1305,28 +1306,28 @@ func TestIsFailure(t *testing.T) { }, { name: "taskrun cancelled", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0]))}, }, want: true, }, { name: "taskrun cancelled but not failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0]))}, }, want: false, }, { name: "taskrun cancelled for timeout", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{withCancelledForTimeout(makeFailed(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{withCancelledForTimeout(makeFailed(trs[0]))}, }, want: true, }, { name: "customrun cancelled", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(makeCustomRunFailed(customRuns[0]))}, CustomTask: true, }, @@ -1334,7 +1335,7 @@ func TestIsFailure(t *testing.T) { }, { name: "customrun cancelled for timeout", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelledForTimeout(makeCustomRunFailed(customRuns[0]))}, CustomTask: true, }, @@ -1342,7 +1343,7 @@ func TestIsFailure(t *testing.T) { }, { name: "customrun cancelled but not failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(newCustomRun(customRuns[0]))}, CustomTask: true, }, @@ -1350,14 +1351,14 @@ func TestIsFailure(t *testing.T) { }, { name: "taskrun cancelled: retries remaining", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0]))}, }, want: true, }, { name: "customrun cancelled: retries remaining", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(makeCustomRunFailed(customRuns[0]))}, CustomTask: true, }, @@ -1365,14 +1366,14 @@ func TestIsFailure(t *testing.T) { }, { name: "taskrun cancelled: retried", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(withRetries(makeFailed(trs[0])))}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, + TaskRuns: []*v1.TaskRun{withCancelled(withRetries(makeFailed(trs[0])))}, }, want: true, }, { name: "custom run cancelled: retried", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(withCustomRunRetries(makeCustomRunFailed(customRuns[0])))}, CustomTask: true, }, @@ -1394,7 +1395,7 @@ func TestIsFailure(t *testing.T) { name: "matrixed taskruns running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0]), makeStarted(trs[1])}, }, want: false, }, { @@ -1409,7 +1410,7 @@ func TestIsFailure(t *testing.T) { name: "one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0]), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0]), makeSucceeded(trs[1])}, }, want: false, }, { @@ -1424,14 +1425,14 @@ func TestIsFailure(t *testing.T) { name: "matrixed taskruns succeeded", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0]), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0]), makeSucceeded(trs[1])}, }, want: false, }, { name: "one matrixed taskrun succeeded", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0]), makeStarted(trs[1])}, }, want: false, }, { @@ -1446,7 +1447,7 @@ func TestIsFailure(t *testing.T) { name: "matrixed taskruns failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0]), makeFailed(trs[1])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0]), makeFailed(trs[1])}, }, want: true, }, { @@ -1461,7 +1462,7 @@ func TestIsFailure(t *testing.T) { name: "one matrixed taskrun failed, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0]), makeStarted(trs[1])}, }, want: false, }, { @@ -1476,7 +1477,7 @@ func TestIsFailure(t *testing.T) { name: "matrixed taskruns failed: retried", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withRetries(makeFailed(trs[0])), withRetries(makeFailed(trs[1]))}, + TaskRuns: []*v1.TaskRun{withRetries(makeFailed(trs[0])), withRetries(makeFailed(trs[1]))}, }, want: true, }, { @@ -1491,7 +1492,7 @@ func TestIsFailure(t *testing.T) { name: "matrixed taskruns failed: one taskrun with retries remaining", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withRetries(makeToBeRetried(trs[0])), withRetries(makeFailed(trs[1]))}, + TaskRuns: []*v1.TaskRun{withRetries(makeToBeRetried(trs[0])), withRetries(makeFailed(trs[1]))}, }, want: false, }, { @@ -1514,7 +1515,7 @@ func TestIsFailure(t *testing.T) { name: "matrixed taskruns cancelled", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, }, want: true, }, { @@ -1529,7 +1530,7 @@ func TestIsFailure(t *testing.T) { name: "one matrixed taskrun cancelled, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, }, want: false, }, { @@ -1544,7 +1545,7 @@ func TestIsFailure(t *testing.T) { name: "matrixed taskruns cancelled but not failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0])), withCancelled(newTaskRun(trs[1]))}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0])), withCancelled(newTaskRun(trs[1]))}, }, want: false, }, { @@ -1559,7 +1560,7 @@ func TestIsFailure(t *testing.T) { name: "one matrixed taskrun cancelled but not failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0])), makeStarted(trs[1])}, }, want: false, }, { @@ -1574,7 +1575,7 @@ func TestIsFailure(t *testing.T) { name: "matrixed taskruns cancelled: retries remaining", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, }, want: true, }, { @@ -1589,7 +1590,7 @@ func TestIsFailure(t *testing.T) { name: "one matrixed taskrun cancelled: retries remaining, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, }, want: false, }, { @@ -1604,7 +1605,7 @@ func TestIsFailure(t *testing.T) { name: "matrixed taskruns cancelled: retried", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), withCancelled(withRetries(makeFailed(trs[1])))}, + TaskRuns: []*v1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), withCancelled(withRetries(makeFailed(trs[1])))}, }, want: true, }, { @@ -1619,7 +1620,7 @@ func TestIsFailure(t *testing.T) { name: "one matrixed taskrun cancelled: retried, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), makeStarted(trs[1])}, }, want: false, }, { @@ -1647,49 +1648,49 @@ func TestIsCancelled(t *testing.T) { }{{ name: "taskruns not started", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{}, + TaskRuns: []*v1.TaskRun{}, }, want: false, }, { name: "taskrun not done", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, }, want: false, }, { name: "taskrun succeeded but not cancelled", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{(makeSucceeded(trs[0]))}, + TaskRuns: []*v1.TaskRun{(makeSucceeded(trs[0]))}, }, want: false, }, { name: "taskrun failed but not cancelled", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{(makeFailed(trs[0]))}, + TaskRuns: []*v1.TaskRun{(makeFailed(trs[0]))}, }, want: false, }, { name: "taskrun cancelled and failed", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0]))}, }, want: true, }, { name: "taskrun cancelled but still running", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeStarted(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeStarted(trs[0]))}, }, want: false, }, { name: "one taskrun cancelled, one not done", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, }, want: false, }, { name: "one taskrun cancelled, one done but not cancelled", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), makeSucceeded(trs[1])}, }, want: true, }, { @@ -1766,55 +1767,55 @@ func TestIsCancelledForTimeout(t *testing.T) { }{{ name: "taskruns not started", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{}, + TaskRuns: []*v1.TaskRun{}, }, want: false, }, { name: "taskrun not done", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, }, want: false, }, { name: "taskrun succeeded but not cancelled", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{(makeSucceeded(trs[0]))}, + TaskRuns: []*v1.TaskRun{(makeSucceeded(trs[0]))}, }, want: false, }, { name: "taskrun failed but not cancelled", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{(makeFailed(trs[0]))}, + TaskRuns: []*v1.TaskRun{(makeFailed(trs[0]))}, }, want: false, }, { name: "taskrun cancelled by spec and failed", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{withCancelledBySpec(makeFailed(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelledBySpec(makeFailed(trs[0]))}, }, want: false, }, { name: "taskrun cancelled for timeout and failed", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{withCancelledForTimeout(makeFailed(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelledForTimeout(makeFailed(trs[0]))}, }, want: true, }, { name: "taskrun cancelled for timeout but still running", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{withCancelledForTimeout(makeStarted(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelledForTimeout(makeStarted(trs[0]))}, }, want: false, }, { name: "one taskrun cancelled for timeout, one not done", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{withCancelledForTimeout(makeFailed(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelledForTimeout(makeFailed(trs[0])), makeStarted(trs[1])}, }, want: false, }, { name: "one taskrun cancelled for timeout, one done but not cancelled", rpt: ResolvedPipelineTask{ - TaskRuns: []*v1beta1.TaskRun{withCancelledForTimeout(makeFailed(trs[0])), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelledForTimeout(makeFailed(trs[0])), makeSucceeded(trs[1])}, }, want: true, }, { @@ -1898,28 +1899,28 @@ func TestHasTaskRunsStarted(t *testing.T) { }{{ name: "taskrun not started", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, }, want: false, }, { name: "taskrun running", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, }, want: true, }, { name: "taskrun succeeded", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, }, want: true, }, { name: "taskrun failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }, want: true, }, { @@ -1932,35 +1933,35 @@ func TestHasTaskRunsStarted(t *testing.T) { name: "matrixed taskruns running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0]), makeStarted(trs[1])}, }, want: true, }, { name: "one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0]), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0]), makeSucceeded(trs[1])}, }, want: true, }, { name: "matrixed taskruns succeeded", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0]), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0]), makeSucceeded(trs[1])}, }, want: true, }, { name: "one matrixed taskrun succeeded", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0]), makeStarted(trs[1])}, }, want: true, }, { name: "matrixed taskruns failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0]), makeFailed(trs[1])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0]), makeFailed(trs[1])}, }, want: true, }} { @@ -1980,14 +1981,14 @@ func TestHasCustomRunsStarted(t *testing.T) { }{{ name: "run not started", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, }, want: false, }, { name: "run running", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunStarted(customRuns[0])}, }, @@ -1995,7 +1996,7 @@ func TestHasCustomRunsStarted(t *testing.T) { }, { name: "run succeeded", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunSucceeded(customRuns[0])}, }, @@ -2003,7 +2004,7 @@ func TestHasCustomRunsStarted(t *testing.T) { }, { name: "run failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunFailed(customRuns[0])}, }, @@ -2064,14 +2065,14 @@ func TestAreCustomRunsConditionStatusFalse(t *testing.T) { }{{ name: "run not started", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, }, want: false, }, { name: "run running", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunStarted(customRuns[0])}, }, @@ -2079,7 +2080,7 @@ func TestAreCustomRunsConditionStatusFalse(t *testing.T) { }, { name: "run succeeded", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunSucceeded(customRuns[0])}, }, @@ -2087,7 +2088,7 @@ func TestAreCustomRunsConditionStatusFalse(t *testing.T) { }, { name: "run failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunFailed(customRuns[0])}, }, @@ -2095,7 +2096,7 @@ func TestAreCustomRunsConditionStatusFalse(t *testing.T) { }, { name: "customrun cancelled", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(makeCustomRunFailed(customRuns[0]))}, CustomTask: true, }, @@ -2103,7 +2104,7 @@ func TestAreCustomRunsConditionStatusFalse(t *testing.T) { }, { name: "customrun cancelled for timeout", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelledForTimeout(makeCustomRunFailed(customRuns[0]))}, CustomTask: true, }, @@ -2111,7 +2112,7 @@ func TestAreCustomRunsConditionStatusFalse(t *testing.T) { }, { name: "customrun cancelled but not failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(newCustomRun(customRuns[0]))}, CustomTask: true, }, @@ -2212,49 +2213,49 @@ func TestAreTaskRunsConditionStatusFalse(t *testing.T) { }{{ name: "taskrun not started", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, }, want: false, }, { name: "taskrun running", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, }, want: false, }, { name: "taskrun succeeded", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, }, want: false, }, { name: "taskrun failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }, want: true, }, { name: "taskrun cancelled", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0]))}, }, want: true, }, { name: "taskrun cancelled but not failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0]))}, }, want: false, }, { name: "taskrun cancelled for timeout", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{withCancelledForTimeout(makeFailed(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{withCancelledForTimeout(makeFailed(trs[0]))}, }, want: true, }, { @@ -2267,70 +2268,70 @@ func TestAreTaskRunsConditionStatusFalse(t *testing.T) { name: "matrixed taskruns running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0]), makeStarted(trs[1])}, }, want: false, }, { name: "one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0]), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0]), makeSucceeded(trs[1])}, }, want: false, }, { name: "matrixed taskruns succeeded", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0]), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0]), makeSucceeded(trs[1])}, }, want: false, }, { name: "one matrixed taskrun succeeded", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0]), makeStarted(trs[1])}, }, want: false, }, { name: "matrixed taskruns failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0]), makeFailed(trs[1])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0]), makeFailed(trs[1])}, }, want: true, }, { name: "one matrixed taskrun failed, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0]), makeStarted(trs[1])}, }, want: true, }, { name: "matrixed taskruns cancelled", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, }, want: true, }, { name: "one matrixed taskrun cancelled, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, }, want: true, }, { name: "matrixed taskruns cancelled but not failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0])), withCancelled(newTaskRun(trs[1]))}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0])), withCancelled(newTaskRun(trs[1]))}, }, want: false, }, { name: "one matrixed taskrun cancelled but not failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0])), makeStarted(trs[1])}, }, want: false, }} { @@ -2380,9 +2381,9 @@ func TestSkipBecauseParentTaskWasSkipped(t *testing.T) { }, { // child task is not skipped regardless of its parent task being skipped due to when expressions evaluating // to false, because when expressions are scoped to task only - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask18", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"mytask11"}, }, TaskRunNames: []string{"pipelinerun-ordering-dependent-task-1"}, @@ -2408,9 +2409,9 @@ func TestSkipBecauseParentTaskWasSkipped(t *testing.T) { }, { // child task is not skipped regardless of its parent task being skipped due to when expressions evaluating // to false, because when expressions are scoped to task only - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask18", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"mytask11"}, }, TaskRunNames: []string{"pipelinerun-ordering-dependent-task-1"}, @@ -2421,9 +2422,9 @@ func TestSkipBecauseParentTaskWasSkipped(t *testing.T) { }, { // child task is not skipped regardless of its parent task being skipped due to when expressions evaluating // to false, because when expressions are scoped to task only - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "mytask19", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"mytask18"}, }, TaskRunNames: []string{"pipelinerun-ordering-dependent-task-2"}, @@ -2465,11 +2466,11 @@ func TestSkipBecauseParentTaskWasSkipped(t *testing.T) { } } -func getExpectedMessage(runName string, specStatus v1beta1.PipelineRunSpecStatus, status corev1.ConditionStatus, +func getExpectedMessage(runName string, specStatus v1.PipelineRunSpecStatus, status corev1.ConditionStatus, successful, incomplete, skipped, failed, cancelled int) string { if status == corev1.ConditionFalse && - (specStatus == v1beta1.PipelineRunSpecStatusCancelledRunFinally || - specStatus == v1beta1.PipelineRunSpecStatusStoppedRunFinally) { + (specStatus == v1.PipelineRunSpecStatusCancelledRunFinally || + specStatus == v1.PipelineRunSpecStatusStoppedRunFinally) { return fmt.Sprintf("PipelineRun %q was cancelled", runName) } if status == corev1.ConditionFalse || status == corev1.ConditionTrue { @@ -2482,12 +2483,12 @@ func getExpectedMessage(runName string, specStatus v1beta1.PipelineRunSpecStatus func TestResolvePipelineRun_CustomTask(t *testing.T) { names.TestingSeed() - pts := []v1beta1.PipelineTask{{ + pts := []v1.PipelineTask{{ Name: "customtask", - TaskRef: &v1beta1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example"}, + TaskRef: &v1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example"}, }, { Name: "customtask-spec", - TaskSpec: &v1beta1.EmbeddedTask{ + TaskSpec: &v1.EmbeddedTask{ TypeMeta: runtime.TypeMeta{ APIVersion: "example.dev/v0", Kind: "Example", @@ -2495,9 +2496,9 @@ func TestResolvePipelineRun_CustomTask(t *testing.T) { }, }, { Name: "run-exists", - TaskRef: &v1beta1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example"}, + TaskRef: &v1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example"}, }} - pr := v1beta1.PipelineRun{ + pr := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun"}, } run := &v1beta1.CustomRun{ObjectMeta: metav1.ObjectMeta{Name: "run-exists-abcde"}} @@ -2505,7 +2506,7 @@ func TestResolvePipelineRun_CustomTask(t *testing.T) { if name == "pipelinerun-run-exists" { return run, nil } - return nil, kerrors.NewNotFound(v1beta1.Resource("run"), name) + return nil, kerrors.NewNotFound(v1.Resource("run"), name) } pipelineState := PipelineRunState{} ctx := context.Background() @@ -2541,22 +2542,22 @@ func TestResolvePipelineRun_CustomTask(t *testing.T) { } func TestResolvePipelineRun_PipelineTaskHasNoResources(t *testing.T) { - pts := []v1beta1.PipelineTask{{ + pts := []v1.PipelineTask{{ Name: "mytask1", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, { Name: "mytask2", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, { Name: "mytask3", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }} - getTask := func(ctx context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + getTask := func(ctx context.Context, name string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return task, nil, nil, nil } - getTaskRun := func(name string) (*v1beta1.TaskRun, error) { return &trs[0], nil } - pr := v1beta1.PipelineRun{ + getTaskRun := func(name string) (*v1.TaskRun, error) { return &trs[0], nil } + pr := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun", }, @@ -2576,39 +2577,39 @@ func TestResolvePipelineRun_PipelineTaskHasNoResources(t *testing.T) { TaskName: task.Name, TaskSpec: &task.Spec, } - if d := cmp.Diff(pipelineState[0].ResolvedTask, expectedTask, cmpopts.IgnoreUnexported(v1beta1.TaskRunSpec{})); d != "" { + if d := cmp.Diff(pipelineState[0].ResolvedTask, expectedTask, cmpopts.IgnoreUnexported(v1.TaskRunSpec{})); d != "" { t.Fatalf("Expected resources where only Tasks were resolved but actual differed %s", diff.PrintWantGot(d)) } - if d := cmp.Diff(pipelineState[1].ResolvedTask, expectedTask, cmpopts.IgnoreUnexported(v1beta1.TaskRunSpec{})); d != "" { + if d := cmp.Diff(pipelineState[1].ResolvedTask, expectedTask, cmpopts.IgnoreUnexported(v1.TaskRunSpec{})); d != "" { t.Fatalf("Expected resources where only Tasks were resolved but actual differed %s", diff.PrintWantGot(d)) } } func TestResolvePipelineRun_TaskDoesntExist(t *testing.T) { - pts := []v1beta1.PipelineTask{{ + pts := []v1.PipelineTask{{ Name: "mytask1", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, { Name: "mytask2", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "task"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("f", "o", "o"), + Value: *v1.NewStructuredValues("f", "o", "o"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("b", "a", "r"), + Value: *v1.NewStructuredValues("b", "a", "r"), }}, }}} // Return an error when the Task is retrieved, as if it didn't exist - getTask := func(ctx context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { - return nil, nil, nil, kerrors.NewNotFound(v1beta1.Resource("task"), name) + getTask := func(ctx context.Context, name string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { + return nil, nil, nil, kerrors.NewNotFound(v1.Resource("task"), name) } - getTaskRun := func(name string) (*v1beta1.TaskRun, error) { - return nil, kerrors.NewNotFound(v1beta1.Resource("taskrun"), name) + getTaskRun := func(name string) (*v1.TaskRun, error) { + return nil, kerrors.NewNotFound(v1.Resource("taskrun"), name) } - pr := v1beta1.PipelineRun{ + pr := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun", }, @@ -2628,27 +2629,27 @@ func TestResolvePipelineRun_TaskDoesntExist(t *testing.T) { } func TestResolvePipelineRun_VerificationFailed(t *testing.T) { - pts := []v1beta1.PipelineTask{{ + pts := []v1.PipelineTask{{ Name: "mytask1", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, { Name: "mytask2", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "task"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("f", "o", "o"), + Value: *v1.NewStructuredValues("f", "o", "o"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("b", "a", "r"), + Value: *v1.NewStructuredValues("b", "a", "r"), }}, }}} verificationResult := &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationError, Err: trustedresources.ErrResourceVerificationFailed} - getTask := func(ctx context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + getTask := func(ctx context.Context, name string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return task, nil, verificationResult, nil } - getTaskRun := func(name string) (*v1beta1.TaskRun, error) { return nil, nil } //nolint:nilnil - pr := v1beta1.PipelineRun{ + getTaskRun := func(name string) (*v1.TaskRun, error) { return nil, nil } //nolint:nilnil + pr := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun", }, @@ -2664,19 +2665,19 @@ func TestResolvePipelineRun_VerificationFailed(t *testing.T) { func TestValidateWorkspaceBindingsWithValidWorkspaces(t *testing.T) { for _, tc := range []struct { name string - spec *v1beta1.PipelineSpec - pr *v1beta1.PipelineRun + spec *v1.PipelineSpec + pr *v1.PipelineRun err string }{{ name: "include required workspace", - spec: &v1beta1.PipelineSpec{ - Workspaces: []v1beta1.PipelineWorkspaceDeclaration{{ + spec: &v1.PipelineSpec{ + Workspaces: []v1.PipelineWorkspaceDeclaration{{ Name: "foo", }}, }, - pr: &v1beta1.PipelineRun{ - Spec: v1beta1.PipelineRunSpec{ - Workspaces: []v1beta1.WorkspaceBinding{{ + pr: &v1.PipelineRun{ + Spec: v1.PipelineRunSpec{ + Workspaces: []v1.WorkspaceBinding{{ Name: "foo", EmptyDir: &corev1.EmptyDirVolumeSource{}, }}, @@ -2684,15 +2685,15 @@ func TestValidateWorkspaceBindingsWithValidWorkspaces(t *testing.T) { }, }, { name: "omit optional workspace", - spec: &v1beta1.PipelineSpec{ - Workspaces: []v1beta1.PipelineWorkspaceDeclaration{{ + spec: &v1.PipelineSpec{ + Workspaces: []v1.PipelineWorkspaceDeclaration{{ Name: "foo", Optional: true, }}, }, - pr: &v1beta1.PipelineRun{ - Spec: v1beta1.PipelineRunSpec{ - Workspaces: []v1beta1.WorkspaceBinding{}, + pr: &v1.PipelineRun{ + Spec: v1.PipelineRunSpec{ + Workspaces: []v1.WorkspaceBinding{}, }, }, }} { @@ -2707,19 +2708,19 @@ func TestValidateWorkspaceBindingsWithValidWorkspaces(t *testing.T) { func TestValidateWorkspaceBindingsWithInvalidWorkspaces(t *testing.T) { for _, tc := range []struct { name string - spec *v1beta1.PipelineSpec - pr *v1beta1.PipelineRun + spec *v1.PipelineSpec + pr *v1.PipelineRun err string }{{ name: "missing required workspace", - spec: &v1beta1.PipelineSpec{ - Workspaces: []v1beta1.PipelineWorkspaceDeclaration{{ + spec: &v1.PipelineSpec{ + Workspaces: []v1.PipelineWorkspaceDeclaration{{ Name: "foo", }}, }, - pr: &v1beta1.PipelineRun{ - Spec: v1beta1.PipelineRunSpec{ - Workspaces: []v1beta1.WorkspaceBinding{}, + pr: &v1.PipelineRun{ + Spec: v1.PipelineRunSpec{ + Workspaces: []v1.WorkspaceBinding{}, }, }, }} { @@ -2734,107 +2735,107 @@ func TestValidateWorkspaceBindingsWithInvalidWorkspaces(t *testing.T) { func TestValidateTaskRunSpecs(t *testing.T) { for _, tc := range []struct { name string - p *v1beta1.Pipeline - pr *v1beta1.PipelineRun + p *v1.Pipeline + pr *v1.PipelineRun wantErr bool }{{ name: "valid task mapping", - p: &v1beta1.Pipeline{ + p: &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelines", }, - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "mytask1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "task", }, }}, }, }, - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun", }, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ Name: "pipeline", }, - TaskRunSpecs: []v1beta1.PipelineTaskRunSpec{{ - PipelineTaskName: "mytask1", - TaskServiceAccountName: "default", + TaskRunSpecs: []v1.PipelineTaskRunSpec{{ + PipelineTaskName: "mytask1", + ServiceAccountName: "default", }}, }, }, wantErr: false, }, { name: "valid finally task mapping", - p: &v1beta1.Pipeline{ + p: &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelines", }, - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "mytask1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "task", }, }}, - Finally: []v1beta1.PipelineTask{{ + Finally: []v1.PipelineTask{{ Name: "myfinaltask1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "finaltask", }, }}, }, }, - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun", }, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ Name: "pipeline", }, - TaskRunSpecs: []v1beta1.PipelineTaskRunSpec{{ - PipelineTaskName: "myfinaltask1", - TaskServiceAccountName: "default", + TaskRunSpecs: []v1.PipelineTaskRunSpec{{ + PipelineTaskName: "myfinaltask1", + ServiceAccountName: "default", }}, }, }, wantErr: false, }, { name: "invalid task mapping", - p: &v1beta1.Pipeline{ + p: &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelines", }, - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "mytask1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "task", }, }}, - Finally: []v1beta1.PipelineTask{{ + Finally: []v1.PipelineTask{{ Name: "myfinaltask1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "finaltask", }, }}, }, }, - pr: &v1beta1.PipelineRun{ + pr: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun", }, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ Name: "pipeline", }, - TaskRunSpecs: []v1beta1.PipelineTaskRunSpec{{ - PipelineTaskName: "wrongtask", - TaskServiceAccountName: "default", + TaskRunSpecs: []v1.PipelineTaskRunSpec{{ + PipelineTaskName: "wrongtask", + ServiceAccountName: "default", }}, }, }, @@ -2860,34 +2861,34 @@ func TestResolvePipeline_WhenExpressions(t *testing.T) { names.TestingSeed() tName1 := "pipelinerun-mytask1-always-true" - t1 := &v1beta1.TaskRun{ + t1 := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: tName1, }, } - ptwe1 := v1beta1.WhenExpression{ + ptwe1 := v1.WhenExpression{ Input: "foo", Operator: selection.In, Values: []string{"foo"}, } - pt := v1beta1.PipelineTask{ - Name: "mytask1", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - WhenExpressions: []v1beta1.WhenExpression{ptwe1}, + pt := v1.PipelineTask{ + Name: "mytask1", + TaskRef: &v1.TaskRef{Name: "task"}, + When: []v1.WhenExpression{ptwe1}, } - getTask := func(_ context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + getTask := func(_ context.Context, name string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return task, nil, nil, nil } - pr := v1beta1.PipelineRun{ + pr := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun", }, } - getTaskRun := func(name string) (*v1beta1.TaskRun, error) { + getTaskRun := func(name string) (*v1.TaskRun, error) { switch name { case "pipelinerun-mytask1-always-true-0": return t1, nil @@ -2906,25 +2907,25 @@ func TestResolvePipeline_WhenExpressions(t *testing.T) { } func TestIsCustomTask(t *testing.T) { - pr := v1beta1.PipelineRun{ + pr := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun", }, } - getTask := func(ctx context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + getTask := func(ctx context.Context, name string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return task, nil, nil, nil } - getTaskRun := func(name string) (*v1beta1.TaskRun, error) { return nil, nil } //nolint:nilnil - getRun := func(name string) (*v1beta1.CustomRun, error) { return nil, nil } //nolint:nilnil + getTaskRun := func(name string) (*v1.TaskRun, error) { return nil, nil } //nolint:nilnil + getRun := func(name string) (*v1beta1.CustomRun, error) { return nil, nil } //nolint:nilnil for _, tc := range []struct { name string - pt v1beta1.PipelineTask + pt v1.PipelineTask want bool }{{ name: "custom taskSpec", - pt: v1beta1.PipelineTask{ - TaskSpec: &v1beta1.EmbeddedTask{ + pt: v1.PipelineTask{ + TaskSpec: &v1.EmbeddedTask{ TypeMeta: runtime.TypeMeta{ APIVersion: "example.dev/v0", Kind: "Sample", @@ -2934,8 +2935,8 @@ func TestIsCustomTask(t *testing.T) { want: true, }, { name: "custom taskSpec missing kind", - pt: v1beta1.PipelineTask{ - TaskSpec: &v1beta1.EmbeddedTask{ + pt: v1.PipelineTask{ + TaskSpec: &v1.EmbeddedTask{ TypeMeta: runtime.TypeMeta{ APIVersion: "example.dev/v0", Kind: "", @@ -2945,8 +2946,8 @@ func TestIsCustomTask(t *testing.T) { want: false, }, { name: "custom taskSpec missing apiVersion", - pt: v1beta1.PipelineTask{ - TaskSpec: &v1beta1.EmbeddedTask{ + pt: v1.PipelineTask{ + TaskSpec: &v1.EmbeddedTask{ TypeMeta: runtime.TypeMeta{ APIVersion: "", Kind: "Sample", @@ -2956,8 +2957,8 @@ func TestIsCustomTask(t *testing.T) { want: false, }, { name: "custom taskRef", - pt: v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ + pt: v1.PipelineTask{ + TaskRef: &v1.TaskRef{ APIVersion: "example.dev/v0", Kind: "Sample", }, @@ -2965,8 +2966,8 @@ func TestIsCustomTask(t *testing.T) { want: true, }, { name: "custom taskRef missing kind", - pt: v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ + pt: v1.PipelineTask{ + TaskRef: &v1.TaskRef{ APIVersion: "example.dev/v0", Kind: "", }, @@ -2974,8 +2975,8 @@ func TestIsCustomTask(t *testing.T) { want: false, }, { name: "custom taskRef missing apiVersion", - pt: v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ + pt: v1.PipelineTask{ + TaskRef: &v1.TaskRef{ APIVersion: "", Kind: "Sample", }, @@ -2983,16 +2984,16 @@ func TestIsCustomTask(t *testing.T) { want: false, }, { name: "non-custom taskref", - pt: v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ + pt: v1.PipelineTask{ + TaskRef: &v1.TaskRef{ Name: "task", }, }, want: false, }, { name: "non-custom taskspec", - pt: v1beta1.PipelineTask{ - TaskSpec: &v1beta1.EmbeddedTask{}, + pt: v1.PipelineTask{ + TaskSpec: &v1.EmbeddedTask{}, }, want: false, }} { @@ -3013,11 +3014,11 @@ func TestIsCustomTask(t *testing.T) { } func TestResolvedPipelineRunTask_IsFinallySkipped(t *testing.T) { - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "dag-task", }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{ apis.Condition{ @@ -3026,10 +3027,10 @@ func TestResolvedPipelineRunTask_IsFinallySkipped(t *testing.T) { }, }, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{{ Name: "commit", - Value: *v1beta1.NewStructuredValues("SHA2"), + Value: *v1.NewStructuredValues("SHA2"), }}, }, }, @@ -3037,77 +3038,77 @@ func TestResolvedPipelineRunTask_IsFinallySkipped(t *testing.T) { state := PipelineRunState{{ TaskRunNames: []string{"dag-task"}, - TaskRuns: []*v1beta1.TaskRun{tr}, - PipelineTask: &v1beta1.PipelineTask{ + TaskRuns: []*v1.TaskRun{tr}, + PipelineTask: &v1.PipelineTask{ Name: "dag-task", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "final-task-1", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "task"}, + Params: v1.Params{{ Name: "commit", - Value: *v1beta1.NewStructuredValues("$(tasks.dag-task.results.commit)"), + Value: *v1.NewStructuredValues("$(tasks.dag-task.results.commit)"), }}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "final-task-2", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "task"}, + Params: v1.Params{{ Name: "commit", - Value: *v1beta1.NewStructuredValues("$(tasks.dag-task.results.missingResult)"), + Value: *v1.NewStructuredValues("$(tasks.dag-task.results.missingResult)"), }}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "final-task-3", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - WhenExpressions: v1beta1.WhenExpressions{{ + TaskRef: &v1.TaskRef{Name: "task"}, + When: v1.WhenExpressions{{ Input: "foo", Operator: selection.NotIn, Values: []string{"bar"}, }}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "final-task-4", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - WhenExpressions: v1beta1.WhenExpressions{{ + TaskRef: &v1.TaskRef{Name: "task"}, + When: v1.WhenExpressions{{ Input: "foo", Operator: selection.In, Values: []string{"bar"}, }}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "final-task-5", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - WhenExpressions: v1beta1.WhenExpressions{{ + TaskRef: &v1.TaskRef{Name: "task"}, + When: v1.WhenExpressions{{ Input: "$(tasks.dag-task.results.commit)", Operator: selection.In, Values: []string{"SHA2"}, }}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "final-task-6", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - WhenExpressions: v1beta1.WhenExpressions{{ + TaskRef: &v1.TaskRef{Name: "task"}, + When: v1.WhenExpressions{{ Input: "$(tasks.dag-task.results.missing)", Operator: selection.In, Values: []string{"none"}, }}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "final-task-7", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - Matrix: &v1beta1.Matrix{ - Params: []v1beta1.Param{{ + TaskRef: &v1.TaskRef{Name: "task"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "platform", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{}}, }}}, }, }} @@ -3188,20 +3189,20 @@ func TestResolvedPipelineRunTask_IsFinallySkipped(t *testing.T) { for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { - tasks := v1beta1.PipelineTaskList([]v1beta1.PipelineTask{*state[0].PipelineTask}) + tasks := v1.PipelineTaskList([]v1.PipelineTask{*state[0].PipelineTask}) d, err := dag.Build(tasks, tasks.Deps()) if err != nil { t.Fatalf("Could not get a dag from the dag tasks %#v: %v", state[0], err) } // build graph with finally tasks - var pts []v1beta1.PipelineTask + var pts []v1.PipelineTask for i := range state { if i > 0 { // first one is a dag task that produces a result pts = append(pts, *state[i].PipelineTask) } } - dfinally, err := dag.Build(v1beta1.PipelineTaskList(pts), map[string][]string{}) + dfinally, err := dag.Build(v1.PipelineTaskList(pts), map[string][]string{}) if err != nil { t.Fatalf("Could not get a dag from the finally tasks %#v: %v", pts, err) } @@ -3246,11 +3247,11 @@ func TestResolvedPipelineRunTask_IsFinallySkipped(t *testing.T) { func TestResolvedPipelineRunTask_IsFinallySkippedByCondition(t *testing.T) { task := &ResolvedPipelineTask{ TaskRunNames: []string{"dag-task"}, - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "dag-task", }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, @@ -3259,9 +3260,9 @@ func TestResolvedPipelineRunTask_IsFinallySkippedByCondition(t *testing.T) { }, }, }}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "dag-task", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, } for _, tc := range []struct { @@ -3273,11 +3274,11 @@ func TestResolvedPipelineRunTask_IsFinallySkippedByCondition(t *testing.T) { state: PipelineRunState{ task, { - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "final-task", }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, @@ -3286,10 +3287,10 @@ func TestResolvedPipelineRunTask_IsFinallySkippedByCondition(t *testing.T) { }, }, }}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "final-task", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - WhenExpressions: []v1beta1.WhenExpression{ + TaskRef: &v1.TaskRef{Name: "task"}, + When: []v1.WhenExpression{ { Input: "$(tasks.dag-task.status)", Operator: selection.In, @@ -3301,7 +3302,7 @@ func TestResolvedPipelineRunTask_IsFinallySkippedByCondition(t *testing.T) { }, want: TaskSkipStatus{ IsSkipped: false, - SkippingReason: v1beta1.None, + SkippingReason: v1.None, }, }, { name: "task scheduled", @@ -3309,20 +3310,20 @@ func TestResolvedPipelineRunTask_IsFinallySkippedByCondition(t *testing.T) { task, { TaskRunNames: []string{"final-task"}, - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "final-task", }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: []apis.Condition{ /* explicitly empty */ }, }, }, }}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "final-task", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - WhenExpressions: []v1beta1.WhenExpression{ + TaskRef: &v1.TaskRef{Name: "task"}, + When: []v1.WhenExpression{ { Input: "$(tasks.dag-task.status)", Operator: selection.In, @@ -3333,18 +3334,18 @@ func TestResolvedPipelineRunTask_IsFinallySkippedByCondition(t *testing.T) { }}, want: TaskSkipStatus{ IsSkipped: false, - SkippingReason: v1beta1.None, + SkippingReason: v1.None, }, }} { t.Run(tc.name, func(t *testing.T) { - tasks := v1beta1.PipelineTaskList([]v1beta1.PipelineTask{*tc.state[0].PipelineTask}) + tasks := v1.PipelineTaskList([]v1.PipelineTask{*tc.state[0].PipelineTask}) d, err := dag.Build(tasks, tasks.Deps()) if err != nil { t.Fatalf("Could not get a dag from the dag tasks %#v: %v", tc.state[0], err) } // build graph with finally tasks - var pts v1beta1.PipelineTaskList + var pts v1.PipelineTaskList for _, state := range tc.state[1:] { pts = append(pts, *state.PipelineTask) } @@ -3373,11 +3374,11 @@ func TestResolvedPipelineRunTask_IsFinallySkippedByCondition(t *testing.T) { } func TestResolvedPipelineRunTask_IsFinalTask(t *testing.T) { - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "dag-task", }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{ apis.Condition{ @@ -3386,10 +3387,10 @@ func TestResolvedPipelineRunTask_IsFinalTask(t *testing.T) { }, }, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{{ Name: "commit", - Value: *v1beta1.NewStructuredValues("SHA2"), + Value: *v1.NewStructuredValues("SHA2"), }}, }, }, @@ -3397,33 +3398,33 @@ func TestResolvedPipelineRunTask_IsFinalTask(t *testing.T) { state := PipelineRunState{{ TaskRunNames: []string{"dag-task"}, - TaskRuns: []*v1beta1.TaskRun{tr}, - PipelineTask: &v1beta1.PipelineTask{ + TaskRuns: []*v1.TaskRun{tr}, + PipelineTask: &v1.PipelineTask{ Name: "dag-task", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "final-task", - TaskRef: &v1beta1.TaskRef{Name: "task"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "task"}, + Params: v1.Params{{ Name: "commit", - Value: *v1beta1.NewStructuredValues("$(tasks.dag-task.results.commit)"), + Value: *v1.NewStructuredValues("$(tasks.dag-task.results.commit)"), }}, }, }, } - tasks := v1beta1.PipelineTaskList([]v1beta1.PipelineTask{*state[0].PipelineTask}) + tasks := v1.PipelineTaskList([]v1.PipelineTask{*state[0].PipelineTask}) d, err := dag.Build(tasks, tasks.Deps()) if err != nil { t.Fatalf("Could not get a dag from the dag tasks %#v: %v", state[0], err) } // build graph with finally tasks - pts := []v1beta1.PipelineTask{*state[1].PipelineTask} + pts := []v1.PipelineTask{*state[1].PipelineTask} - dfinally, err := dag.Build(v1beta1.PipelineTaskList(pts), map[string][]string{}) + dfinally, err := dag.Build(v1.PipelineTaskList(pts), map[string][]string{}) if err != nil { t.Fatalf("Could not get a dag from the finally tasks %#v: %v", pts, err) } @@ -3446,7 +3447,7 @@ func TestResolvedPipelineRunTask_IsFinalTask(t *testing.T) { func TestGetTaskRunName(t *testing.T) { prName := "pipeline-run" - childRefs := []v1beta1.ChildStatusReference{{ + childRefs := []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{Kind: "TaskRun"}, Name: "taskrun-for-task1", PipelineTaskName: "task1", @@ -3495,7 +3496,7 @@ func TestGetTaskRunName(t *testing.T) { func TestGetNamesOfTaskRuns(t *testing.T) { prName := "mypipelinerun" - childRefs := []v1beta1.ChildStatusReference{{ + childRefs := []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{Kind: "TaskRun"}, Name: "mypipelinerun-mytask-0", PipelineTaskName: "mytask", @@ -3558,7 +3559,7 @@ func TestGetNamesOfTaskRuns(t *testing.T) { func TestGetNamesOfRuns(t *testing.T) { prName := "mypipelinerun" - childRefs := []v1beta1.ChildStatusReference{{ + childRefs := []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{Kind: "Run"}, Name: "mypipelinerun-mytask-0", PipelineTaskName: "mytask", @@ -3621,7 +3622,7 @@ func TestGetNamesOfRuns(t *testing.T) { func TestGetRunName(t *testing.T) { prName := "pipeline-run" - childRefs := []v1beta1.ChildStatusReference{{ + childRefs := []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{Kind: "CustomRun"}, Name: "run-for-task1", PipelineTaskName: "task1", @@ -3673,39 +3674,39 @@ func TestGetRunName(t *testing.T) { } func TestIsMatrixed(t *testing.T) { - pr := v1beta1.PipelineRun{ + pr := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun", }, } - getTask := func(ctx context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + getTask := func(ctx context.Context, name string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return task, nil, nil, nil } - getTaskRun := func(name string) (*v1beta1.TaskRun, error) { return &trs[0], nil } + getTaskRun := func(name string) (*v1.TaskRun, error) { return &trs[0], nil } getRun := func(name string) (*v1beta1.CustomRun, error) { return &customRuns[0], nil } for _, tc := range []struct { name string - pt v1beta1.PipelineTask + pt v1.PipelineTask want bool }{{ name: "custom task with matrix", - pt: v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ + pt: v1.PipelineTask{ + TaskRef: &v1.TaskRef{ APIVersion: "example.dev/v0", Kind: "Sample", }, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "platform", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, }}}, }, want: true, }, { name: "custom task without matrix", - pt: v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ + pt: v1.PipelineTask{ + TaskRef: &v1.TaskRef{ APIVersion: "example.dev/v0", Kind: "Sample", }, @@ -3713,21 +3714,21 @@ func TestIsMatrixed(t *testing.T) { want: false, }, { name: "task with matrix", - pt: v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ + pt: v1.PipelineTask{ + TaskRef: &v1.TaskRef{ Name: "my-task", }, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "platform", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, }}}, }, want: true, }, { name: "task without matrix", - pt: v1beta1.PipelineTask{ - TaskRef: &v1beta1.TaskRef{ + pt: v1.PipelineTask{ + TaskRef: &v1.TaskRef{ Name: "my-task", }, }, @@ -3759,18 +3760,18 @@ func TestResolvePipelineRunTask_WithMatrix(t *testing.T) { pipelineRunName := "pipelinerun" pipelineTaskName := "pipelinetask" - pr := v1beta1.PipelineRun{ + pr := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: pipelineRunName, }, } - var taskRuns []*v1beta1.TaskRun + var taskRuns []*v1.TaskRun var taskRunsNames []string - taskRunsMap := map[string]*v1beta1.TaskRun{} + taskRunsMap := map[string]*v1.TaskRun{} for i := 0; i < 9; i++ { trName := fmt.Sprintf("%s-%s-%d", pipelineRunName, pipelineTaskName, i) - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: trName, }, @@ -3780,47 +3781,47 @@ func TestResolvePipelineRunTask_WithMatrix(t *testing.T) { taskRunsMap[trName] = tr } - pts := []v1beta1.PipelineTask{{ + pts := []v1.PipelineTask{{ Name: "pipelinetask", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "my-task", }, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "platform", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, }}}, }, { Name: "pipelinetask", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "my-task", }, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "platform", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, }, { Name: "browsers", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"chrome", "safari", "firefox"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"chrome", "safari", "firefox"}}, }}, }}} rtr := &resources.ResolvedTask{ TaskName: "task", - TaskSpec: &v1beta1.TaskSpec{Steps: []v1beta1.Step{{ + TaskSpec: &v1.TaskSpec{Steps: []v1.Step{{ Name: "step1", }}}, } - getTask := func(ctx context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + getTask := func(ctx context.Context, name string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return task, nil, nil, nil } - getTaskRun := func(name string) (*v1beta1.TaskRun, error) { return taskRunsMap[name], nil } + getTaskRun := func(name string) (*v1.TaskRun, error) { return taskRunsMap[name], nil } getRun := func(name string) (*v1beta1.CustomRun, error) { return &customRuns[0], nil } for _, tc := range []struct { name string - pt v1beta1.PipelineTask + pt v1.PipelineTask want *ResolvedPipelineTask }{{ name: "task with matrix - single parameter", @@ -3866,7 +3867,7 @@ func TestResolvePipelineRunTask_WithMatrixedCustomTask(t *testing.T) { pipelineRunName := "pipelinerun" pipelineTaskName := "pipelinetask" - pr := v1beta1.PipelineRun{ + pr := v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: pipelineRunName, }, @@ -3887,44 +3888,44 @@ func TestResolvePipelineRunTask_WithMatrixedCustomTask(t *testing.T) { runsMap[runName] = run } - pts := []v1beta1.PipelineTask{{ + pts := []v1.PipelineTask{{ Name: "pipelinetask", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ APIVersion: "example.dev/v0", Kind: "Example", Name: "my-task", }, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "platform", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, }}}, }, { Name: "pipelinetask", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ APIVersion: "example.dev/v0", Kind: "Example", Name: "my-task", }, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "platform", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"linux", "mac", "windows"}}, }, { Name: "browsers", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"chrome", "safari", "firefox"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"chrome", "safari", "firefox"}}, }}}, }} - getTask := func(ctx context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + getTask := func(ctx context.Context, name string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return task, nil, nil, nil } - getTaskRun := func(name string) (*v1beta1.TaskRun, error) { return &trs[0], nil } + getTaskRun := func(name string) (*v1.TaskRun, error) { return &trs[0], nil } getRun := func(name string) (*v1beta1.CustomRun, error) { return runsMap[name], nil } for _, tc := range []struct { name string - pt v1beta1.PipelineTask + pt v1.PipelineTask getRun GetRun want *ResolvedPipelineTask }{{ @@ -3949,7 +3950,7 @@ func TestResolvePipelineRunTask_WithMatrixedCustomTask(t *testing.T) { name: "custom task with matrix - nil run", pt: pts[1], getRun: func(name string) (*v1beta1.CustomRun, error) { - return nil, kerrors.NewNotFound(v1beta1.Resource("run"), name) + return nil, kerrors.NewNotFound(v1.Resource("run"), name) }, want: &ResolvedPipelineTask{ CustomTask: true, @@ -3990,27 +3991,27 @@ func TestIsSuccessful(t *testing.T) { }{{ name: "taskrun not started", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, }, want: false, }, { name: "run not started", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, }, want: false, }, { name: "taskrun running", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, }, want: false, }, { name: "run running", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunStarted(customRuns[0])}, }, @@ -4018,14 +4019,14 @@ func TestIsSuccessful(t *testing.T) { }, { name: "taskrun succeeded", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, }, want: true, }, { name: "run succeeded", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunSucceeded(customRuns[0])}, }, @@ -4033,14 +4034,14 @@ func TestIsSuccessful(t *testing.T) { }, { name: "taskrun failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }, want: false, }, { name: "run failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunFailed(customRuns[0])}, }, @@ -4048,14 +4049,14 @@ func TestIsSuccessful(t *testing.T) { }, { name: "taskrun failed: retries remaining", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, - TaskRuns: []*v1beta1.TaskRun{withRetries(makeToBeRetried(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, + TaskRuns: []*v1.TaskRun{withRetries(makeToBeRetried(trs[0]))}, }, want: false, }, { name: "run failed: retries remaining", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunFailed(customRuns[0])}, }, @@ -4063,7 +4064,7 @@ func TestIsSuccessful(t *testing.T) { }, { name: "run failed: retried", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{withCustomRunRetries(makeCustomRunFailed(customRuns[0]))}, }, @@ -4071,21 +4072,21 @@ func TestIsSuccessful(t *testing.T) { }, { name: "taskrun cancelled", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0]))}, }, want: false, }, { name: "taskrun cancelled but not failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0]))}, }, want: false, }, { name: "run cancelled", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(makeCustomRunFailed(customRuns[0]))}, CustomTask: true, }, @@ -4093,7 +4094,7 @@ func TestIsSuccessful(t *testing.T) { }, { name: "run cancelled but not failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(newCustomRun(customRuns[0]))}, CustomTask: true, }, @@ -4101,14 +4102,14 @@ func TestIsSuccessful(t *testing.T) { }, { name: "taskrun cancelled: retries remaining", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0]))}, }, want: false, }, { name: "run cancelled: retries remaining", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(makeCustomRunFailed(customRuns[0]))}, CustomTask: true, }, @@ -4116,14 +4117,14 @@ func TestIsSuccessful(t *testing.T) { }, { name: "taskrun cancelled: retried", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(withRetries(makeFailed(trs[0])))}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, + TaskRuns: []*v1.TaskRun{withCancelled(withRetries(makeFailed(trs[0])))}, }, want: false, }, { name: "run cancelled: retried", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(withCustomRunRetries(makeCustomRunFailed(customRuns[0])))}, CustomTask: true, }, @@ -4145,7 +4146,7 @@ func TestIsSuccessful(t *testing.T) { name: "matrixed taskruns running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0]), makeStarted(trs[1])}, }, want: false, }, { @@ -4160,7 +4161,7 @@ func TestIsSuccessful(t *testing.T) { name: "one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0]), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0]), makeSucceeded(trs[1])}, }, want: false, }, { @@ -4175,7 +4176,7 @@ func TestIsSuccessful(t *testing.T) { name: "matrixed taskruns succeeded", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0]), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0]), makeSucceeded(trs[1])}, }, want: true, }, { @@ -4190,7 +4191,7 @@ func TestIsSuccessful(t *testing.T) { name: "one matrixed taskrun succeeded", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0]), makeStarted(trs[1])}, }, want: false, }, { @@ -4205,7 +4206,7 @@ func TestIsSuccessful(t *testing.T) { name: "matrixed taskruns failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0]), makeFailed(trs[1])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0]), makeFailed(trs[1])}, }, want: false, }, { @@ -4220,7 +4221,7 @@ func TestIsSuccessful(t *testing.T) { name: "one matrixed taskrun failed, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0]), makeStarted(trs[1])}, }, want: false, }, { @@ -4235,7 +4236,7 @@ func TestIsSuccessful(t *testing.T) { name: "matrixed taskruns failed: retries remaining", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withRetries(makeToBeRetried(trs[0])), withRetries(makeToBeRetried(trs[1]))}, + TaskRuns: []*v1.TaskRun{withRetries(makeToBeRetried(trs[0])), withRetries(makeToBeRetried(trs[1]))}, }, want: false, }, { @@ -4250,7 +4251,7 @@ func TestIsSuccessful(t *testing.T) { name: "matrixed taskruns failed: one taskrun with retries remaining", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withRetries(makeToBeRetried(trs[0])), withRetries(makeFailed(trs[1]))}, + TaskRuns: []*v1.TaskRun{withRetries(makeToBeRetried(trs[0])), withRetries(makeFailed(trs[1]))}, }, want: false, }, { @@ -4273,7 +4274,7 @@ func TestIsSuccessful(t *testing.T) { name: "matrixed taskruns cancelled", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, }, want: false, }, { @@ -4288,7 +4289,7 @@ func TestIsSuccessful(t *testing.T) { name: "one matrixed taskrun cancelled, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, }, want: false, }, { @@ -4303,7 +4304,7 @@ func TestIsSuccessful(t *testing.T) { name: "matrixed taskruns cancelled but not failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0])), withCancelled(newTaskRun(trs[1]))}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0])), withCancelled(newTaskRun(trs[1]))}, }, want: false, }, { @@ -4318,7 +4319,7 @@ func TestIsSuccessful(t *testing.T) { name: "one matrixed taskrun cancelled but not failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0])), makeStarted(trs[1])}, }, want: false, }, { @@ -4333,7 +4334,7 @@ func TestIsSuccessful(t *testing.T) { name: "matrixed taskruns cancelled: retries remaining", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, }, want: false, }, { @@ -4348,7 +4349,7 @@ func TestIsSuccessful(t *testing.T) { name: "one matrixed taskrun cancelled: retries remaining, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, }, want: false, }, { @@ -4363,7 +4364,7 @@ func TestIsSuccessful(t *testing.T) { name: "matrixed taskruns cancelled: retried", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), withCancelled(withRetries(makeFailed(trs[1])))}, + TaskRuns: []*v1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), withCancelled(withRetries(makeFailed(trs[1])))}, }, want: false, }, { @@ -4378,7 +4379,7 @@ func TestIsSuccessful(t *testing.T) { name: "one matrixed taskrun cancelled: retried, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), makeStarted(trs[1])}, }, want: false, }, { @@ -4406,27 +4407,27 @@ func TestIsRunning(t *testing.T) { }{{ name: "taskrun not started", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, }, want: false, }, { name: "run not started", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, }, want: false, }, { name: "taskrun running", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, }, want: true, }, { name: "run running", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunStarted(customRuns[0])}, }, @@ -4434,14 +4435,14 @@ func TestIsRunning(t *testing.T) { }, { name: "taskrun succeeded", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, }, want: false, }, { name: "run succeeded", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunSucceeded(customRuns[0])}, }, @@ -4449,14 +4450,14 @@ func TestIsRunning(t *testing.T) { }, { name: "taskrun failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }, want: false, }, { name: "run failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunFailed(customRuns[0])}, }, @@ -4464,14 +4465,14 @@ func TestIsRunning(t *testing.T) { }, { name: "taskrun failed: retried", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, - TaskRuns: []*v1beta1.TaskRun{withRetries(makeFailed(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, + TaskRuns: []*v1.TaskRun{withRetries(makeFailed(trs[0]))}, }, want: false, }, { name: "run failed: retries remaining", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{makeCustomRunFailed(customRuns[0])}, }, @@ -4479,7 +4480,7 @@ func TestIsRunning(t *testing.T) { }, { name: "run failed: retried", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomTask: true, CustomRuns: []*v1beta1.CustomRun{withCustomRunRetries(makeCustomRunFailed(customRuns[0]))}, }, @@ -4487,21 +4488,21 @@ func TestIsRunning(t *testing.T) { }, { name: "taskrun cancelled", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0]))}, }, want: false, }, { name: "taskrun cancelled but not failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task"}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0]))}, }, want: true, }, { name: "run cancelled", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(makeCustomRunFailed(customRuns[0]))}, CustomTask: true, }, @@ -4509,7 +4510,7 @@ func TestIsRunning(t *testing.T) { }, { name: "run cancelled but not failed", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task"}, + PipelineTask: &v1.PipelineTask{Name: "task"}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(newCustomRun(customRuns[0]))}, CustomTask: true, }, @@ -4517,14 +4518,14 @@ func TestIsRunning(t *testing.T) { }, { name: "taskrun cancelled: retries remaining", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0]))}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0]))}, }, want: false, }, { name: "run cancelled: retries remaining", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(makeCustomRunFailed(customRuns[0]))}, CustomTask: true, }, @@ -4532,14 +4533,14 @@ func TestIsRunning(t *testing.T) { }, { name: "taskrun cancelled: retried", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(withRetries(makeFailed(trs[0])))}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, + TaskRuns: []*v1.TaskRun{withCancelled(withRetries(makeFailed(trs[0])))}, }, want: false, }, { name: "run cancelled: retried", rpt: ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{Name: "task", Retries: 1}, + PipelineTask: &v1.PipelineTask{Name: "task", Retries: 1}, CustomRuns: []*v1beta1.CustomRun{withCustomRunCancelled(withCustomRunRetries(makeCustomRunFailed(customRuns[0])))}, CustomTask: true, }, @@ -4561,7 +4562,7 @@ func TestIsRunning(t *testing.T) { name: "matrixed taskruns running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0]), makeStarted(trs[1])}, }, want: true, }, { @@ -4576,7 +4577,7 @@ func TestIsRunning(t *testing.T) { name: "one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0]), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0]), makeSucceeded(trs[1])}, }, want: true, }, { @@ -4591,7 +4592,7 @@ func TestIsRunning(t *testing.T) { name: "matrixed taskruns succeeded", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0]), makeSucceeded(trs[1])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0]), makeSucceeded(trs[1])}, }, want: false, }, { @@ -4606,7 +4607,7 @@ func TestIsRunning(t *testing.T) { name: "matrixed taskruns failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0]), makeFailed(trs[1])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0]), makeFailed(trs[1])}, }, want: false, }, { @@ -4621,7 +4622,7 @@ func TestIsRunning(t *testing.T) { name: "one matrixed taskrun failed, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0]), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0]), makeStarted(trs[1])}, }, want: true, }, { @@ -4636,7 +4637,7 @@ func TestIsRunning(t *testing.T) { name: "matrixed taskruns failed: retries remaining", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withRetries(makeToBeRetried(trs[0])), withRetries(makeToBeRetried(trs[1]))}, + TaskRuns: []*v1.TaskRun{withRetries(makeToBeRetried(trs[0])), withRetries(makeToBeRetried(trs[1]))}, }, want: true, }, { @@ -4651,7 +4652,7 @@ func TestIsRunning(t *testing.T) { name: "matrixed taskruns failed: one taskrun with retries remaining", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withRetries(makeToBeRetried(trs[0])), withRetries(makeFailed(trs[1]))}, + TaskRuns: []*v1.TaskRun{withRetries(makeToBeRetried(trs[0])), withRetries(makeFailed(trs[1]))}, }, want: true, }, { @@ -4674,7 +4675,7 @@ func TestIsRunning(t *testing.T) { name: "matrixed taskruns cancelled", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, }, want: false, }, { @@ -4689,7 +4690,7 @@ func TestIsRunning(t *testing.T) { name: "one matrixed taskrun cancelled, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, }, want: true, }, { @@ -4704,7 +4705,7 @@ func TestIsRunning(t *testing.T) { name: "matrixed taskruns cancelled but not failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0])), withCancelled(newTaskRun(trs[1]))}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0])), withCancelled(newTaskRun(trs[1]))}, }, want: true, }, { @@ -4719,7 +4720,7 @@ func TestIsRunning(t *testing.T) { name: "one matrixed taskrun cancelled but not failed", rpt: ResolvedPipelineTask{ PipelineTask: matrixedPipelineTask, - TaskRuns: []*v1beta1.TaskRun{withCancelled(newTaskRun(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(newTaskRun(trs[0])), makeStarted(trs[1])}, }, want: true, }, { @@ -4734,7 +4735,7 @@ func TestIsRunning(t *testing.T) { name: "matrixed taskruns cancelled: retries remaining", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), withCancelled(makeFailed(trs[1]))}, }, want: false, }, { @@ -4749,7 +4750,7 @@ func TestIsRunning(t *testing.T) { name: "one matrixed taskrun cancelled: retries remaining, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0])), makeStarted(trs[1])}, }, want: true, }, { @@ -4764,7 +4765,7 @@ func TestIsRunning(t *testing.T) { name: "matrixed taskruns cancelled: retried", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), withCancelled(withRetries(makeFailed(trs[1])))}, + TaskRuns: []*v1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), withCancelled(withRetries(makeFailed(trs[1])))}, }, want: false, }, { @@ -4779,7 +4780,7 @@ func TestIsRunning(t *testing.T) { name: "one matrixed taskrun cancelled: retried, one matrixed taskrun running", rpt: ResolvedPipelineTask{ PipelineTask: withPipelineTaskRetries(*matrixedPipelineTask, 1), - TaskRuns: []*v1beta1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{withCancelled(withRetries(makeFailed(trs[0]))), makeStarted(trs[1])}, }, want: true, }, { diff --git a/pkg/reconciler/pipelinerun/resources/pipelinerunstate.go b/pkg/reconciler/pipelinerun/resources/pipelinerunstate.go index a2af7a936bc..489600ddfbd 100644 --- a/pkg/reconciler/pipelinerun/resources/pipelinerunstate.go +++ b/pkg/reconciler/pipelinerun/resources/pipelinerunstate.go @@ -22,6 +22,7 @@ import ( "time" "github.com/tektoncd/pipeline/pkg/apis/pipeline" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/reconciler/pipeline/dag" "go.uber.org/zap" @@ -52,7 +53,7 @@ type PipelineRunState []*ResolvedPipelineTask // finally tasks, cache of skipped tasks. type PipelineRunFacts struct { State PipelineRunState - SpecStatus v1beta1.PipelineRunSpecStatus + SpecStatus v1.PipelineRunSpecStatus TasksGraph *dag.Graph FinalTasksGraph *dag.Graph TimeoutsState PipelineRunTimeoutsState @@ -147,8 +148,8 @@ func (state PipelineRunState) AdjustStartTime(unadjustedStartTime *metav1.Time) // GetTaskRunsResults returns a map of all successfully completed TaskRuns in the state, with the pipeline task name as // the key and the results from the corresponding TaskRun as the value. It only includes tasks which have completed successfully. -func (state PipelineRunState) GetTaskRunsResults() map[string][]v1beta1.TaskRunResult { - results := make(map[string][]v1beta1.TaskRunResult) +func (state PipelineRunState) GetTaskRunsResults() map[string][]v1.TaskRunResult { + results := make(map[string][]v1.TaskRunResult) for _, rpt := range state { if rpt.IsCustomTask() { continue @@ -158,7 +159,7 @@ func (state PipelineRunState) GetTaskRunsResults() map[string][]v1beta1.TaskRunR } // Currently a Matrix cannot produce results so this is for a singular TaskRun if len(rpt.TaskRuns) == 1 { - results[rpt.PipelineTask.Name] = rpt.TaskRuns[0].Status.TaskRunResults + results[rpt.PipelineTask.Name] = rpt.TaskRuns[0].Status.Results } } return results @@ -187,8 +188,8 @@ func (state PipelineRunState) GetRunsResults() map[string][]v1beta1.CustomRunRes // GetChildReferences returns a slice of references, including version, kind, name, and pipeline task name, for all // TaskRuns and Runs in the state. -func (state PipelineRunState) GetChildReferences() []v1beta1.ChildStatusReference { - var childRefs []v1beta1.ChildStatusReference +func (state PipelineRunState) GetChildReferences() []v1.ChildStatusReference { + var childRefs []v1.ChildStatusReference for _, rpt := range state { switch { @@ -207,27 +208,27 @@ func (state PipelineRunState) GetChildReferences() []v1beta1.ChildStatusReferenc return childRefs } -func (t *ResolvedPipelineTask) getChildRefForRun(customRun *v1beta1.CustomRun) v1beta1.ChildStatusReference { - return v1beta1.ChildStatusReference{ +func (t *ResolvedPipelineTask) getChildRefForRun(customRun *v1beta1.CustomRun) v1.ChildStatusReference { + return v1.ChildStatusReference{ TypeMeta: runtime.TypeMeta{ APIVersion: v1beta1.SchemeGroupVersion.String(), Kind: pipeline.CustomRunControllerName, }, Name: customRun.GetObjectMeta().GetName(), PipelineTaskName: t.PipelineTask.Name, - WhenExpressions: t.PipelineTask.WhenExpressions, + WhenExpressions: t.PipelineTask.When, } } -func (t *ResolvedPipelineTask) getChildRefForTaskRun(taskRun *v1beta1.TaskRun) v1beta1.ChildStatusReference { - return v1beta1.ChildStatusReference{ +func (t *ResolvedPipelineTask) getChildRefForTaskRun(taskRun *v1.TaskRun) v1.ChildStatusReference { + return v1.ChildStatusReference{ TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), + APIVersion: v1.SchemeGroupVersion.String(), Kind: pipeline.TaskRunControllerName, }, Name: taskRun.Name, PipelineTaskName: t.PipelineTask.Name, - WhenExpressions: t.PipelineTask.WhenExpressions, + WhenExpressions: t.PipelineTask.When, } } @@ -273,17 +274,17 @@ func (facts *PipelineRunFacts) IsRunning() bool { // IsCancelled returns true if the PipelineRun was cancelled func (facts *PipelineRunFacts) IsCancelled() bool { - return facts.SpecStatus == v1beta1.PipelineRunSpecStatusCancelled + return facts.SpecStatus == v1.PipelineRunSpecStatusCancelled } // IsGracefullyCancelled returns true if the PipelineRun was gracefully cancelled func (facts *PipelineRunFacts) IsGracefullyCancelled() bool { - return facts.SpecStatus == v1beta1.PipelineRunSpecStatusCancelledRunFinally + return facts.SpecStatus == v1.PipelineRunSpecStatusCancelledRunFinally } // IsGracefullyStopped returns true if the PipelineRun was gracefully stopped func (facts *PipelineRunFacts) IsGracefullyStopped() bool { - return facts.SpecStatus == v1beta1.PipelineRunSpecStatusStoppedRunFinally + return facts.SpecStatus == v1.PipelineRunSpecStatusStoppedRunFinally } // DAGExecutionQueue returns a list of DAG tasks which needs to be scheduled next @@ -351,7 +352,7 @@ func (facts *PipelineRunFacts) GetFinalTasks() PipelineRunState { // GetPipelineConditionStatus will return the Condition that the PipelineRun prName should be // updated with, based on the status of the TaskRuns in state. -func (facts *PipelineRunFacts) GetPipelineConditionStatus(ctx context.Context, pr *v1beta1.PipelineRun, logger *zap.SugaredLogger, c clock.PassiveClock) *apis.Condition { +func (facts *PipelineRunFacts) GetPipelineConditionStatus(ctx context.Context, pr *v1.PipelineRun, logger *zap.SugaredLogger, c clock.PassiveClock) *apis.Condition { // We have 4 different states here: // 1. Timed out -> Failed // 2. All tasks are done and at least one has failed or has been cancelled -> Failed @@ -361,7 +362,7 @@ func (facts *PipelineRunFacts) GetPipelineConditionStatus(ctx context.Context, p return &apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, - Reason: v1beta1.PipelineRunReasonTimedOut.String(), + Reason: v1.PipelineRunReasonTimedOut.String(), Message: fmt.Sprintf("PipelineRun %q failed to finish within %q", pr.Name, pr.PipelineTimeout(ctx).String()), } } @@ -374,32 +375,32 @@ func (facts *PipelineRunFacts) GetPipelineConditionStatus(ctx context.Context, p // The completion reason is set from the TaskRun completion reason // by default, set it to ReasonRunning - reason := v1beta1.PipelineRunReasonRunning.String() + reason := v1.PipelineRunReasonRunning.String() // check if the pipeline is finished executing all tasks i.e. no incomplete tasks if s.Incomplete == 0 { status := corev1.ConditionTrue - reason := v1beta1.PipelineRunReasonSuccessful.String() + reason := v1.PipelineRunReasonSuccessful.String() message := fmt.Sprintf("Tasks Completed: %d (Failed: %d, Cancelled %d), Skipped: %d", cmTasks, s.Failed, s.Cancelled, s.Skipped) // Set reason to ReasonCompleted - At least one is skipped if s.Skipped > 0 { - reason = v1beta1.PipelineRunReasonCompleted.String() + reason = v1.PipelineRunReasonCompleted.String() } switch { case s.Failed > 0 || s.SkippedDueToTimeout > 0: // Set reason to ReasonFailed - At least one failed - reason = v1beta1.PipelineRunReasonFailed.String() + reason = v1.PipelineRunReasonFailed.String() status = corev1.ConditionFalse case pr.IsGracefullyCancelled() || pr.IsGracefullyStopped(): // Set reason to ReasonCancelled - Cancellation requested - reason = v1beta1.PipelineRunReasonCancelled.String() + reason = v1.PipelineRunReasonCancelled.String() status = corev1.ConditionFalse message = fmt.Sprintf("PipelineRun %q was cancelled", pr.Name) case s.Cancelled > 0: // Set reason to ReasonCancelled - At least one is cancelled and no failure yet - reason = v1beta1.PipelineRunReasonCancelled.String() + reason = v1.PipelineRunReasonCancelled.String() status = corev1.ConditionFalse } logger.Infof("All TaskRuns have finished for PipelineRun %s so it has finished", pr.Name) @@ -415,15 +416,15 @@ func (facts *PipelineRunFacts) GetPipelineConditionStatus(ctx context.Context, p switch { case pr.IsGracefullyCancelled(): // Transition pipeline into running finally state, when graceful cancel is in progress - reason = v1beta1.PipelineRunReasonCancelledRunningFinally.String() + reason = v1.PipelineRunReasonCancelledRunningFinally.String() case pr.IsGracefullyStopped(): // Transition pipeline into running finally state, when graceful stop is in progress - reason = v1beta1.PipelineRunReasonStoppedRunningFinally.String() + reason = v1.PipelineRunReasonStoppedRunningFinally.String() case s.Cancelled > 0 || (s.Failed > 0 && facts.checkFinalTasksDone()): // Transition pipeline into stopping state when one of the tasks(dag/final) cancelled or one of the dag tasks failed // for a pipeline with final tasks, single dag task failure does not transition to interim stopping state // pipeline stays in running state until all final tasks are done before transitioning to failed state - reason = v1beta1.PipelineRunReasonStopping.String() + reason = v1.PipelineRunReasonStopping.String() } // return the status @@ -437,26 +438,26 @@ func (facts *PipelineRunFacts) GetPipelineConditionStatus(ctx context.Context, p } // GetSkippedTasks constructs a list of SkippedTask struct to be included in the PipelineRun Status -func (facts *PipelineRunFacts) GetSkippedTasks() []v1beta1.SkippedTask { - var skipped []v1beta1.SkippedTask +func (facts *PipelineRunFacts) GetSkippedTasks() []v1.SkippedTask { + var skipped []v1.SkippedTask for _, rpt := range facts.State { if rpt.Skip(facts).IsSkipped { - skippedTask := v1beta1.SkippedTask{ + skippedTask := v1.SkippedTask{ Name: rpt.PipelineTask.Name, Reason: rpt.Skip(facts).SkippingReason, - WhenExpressions: rpt.PipelineTask.WhenExpressions, + WhenExpressions: rpt.PipelineTask.When, } skipped = append(skipped, skippedTask) } if rpt.IsFinallySkipped(facts).IsSkipped { - skippedTask := v1beta1.SkippedTask{ + skippedTask := v1.SkippedTask{ Name: rpt.PipelineTask.Name, Reason: rpt.IsFinallySkipped(facts).SkippingReason, } // include the when expressions only when the finally task was skipped because // its when expressions evaluated to false (not because results variables were missing) - if rpt.IsFinallySkipped(facts).SkippingReason == v1beta1.WhenExpressionsSkip { - skippedTask.WhenExpressions = rpt.PipelineTask.WhenExpressions + if rpt.IsFinallySkipped(facts).SkippingReason == v1.WhenExpressionsSkip { + skippedTask.WhenExpressions = rpt.PipelineTask.When } skipped = append(skipped, skippedTask) } @@ -475,10 +476,10 @@ func (facts *PipelineRunFacts) GetPipelineTaskStatus() map[string]string { switch { // execution status is Succeeded when a task has succeeded condition with status set to true case t.isSuccessful(): - s = v1beta1.TaskRunReasonSuccessful.String() + s = v1.TaskRunReasonSuccessful.String() // execution status is Failed when a task has succeeded condition with status set to false case t.isConditionStatusFalse(): - s = v1beta1.TaskRunReasonFailed.String() + s = v1.TaskRunReasonFailed.String() default: // None includes skipped as well s = PipelineTaskStateNone @@ -491,7 +492,7 @@ func (facts *PipelineRunFacts) GetPipelineTaskStatus() map[string]string { if facts.checkDAGTasksDone() { // all dag tasks are done, change the aggregate status to succeeded // will reset it to failed/skipped if needed - aggregateStatus = v1beta1.PipelineRunReasonSuccessful.String() + aggregateStatus = v1.PipelineRunReasonSuccessful.String() for _, t := range facts.State { if facts.isDAGTask(t.PipelineTask.Name) { // if any of the dag task failed, change the aggregate status to failed and return @@ -502,12 +503,12 @@ func (facts *PipelineRunFacts) GetPipelineTaskStatus() map[string]string { // if any of the dag task skipped, change the aggregate status to completed // but continue checking for any other failure if t.Skip(facts).IsSkipped { - aggregateStatus = v1beta1.PipelineRunReasonCompleted.String() + aggregateStatus = v1.PipelineRunReasonCompleted.String() } } } } - tStatus[v1beta1.PipelineTasksAggregateStatus] = aggregateStatus + tStatus[v1.PipelineTasksAggregateStatus] = aggregateStatus return tStatus } @@ -573,9 +574,9 @@ func (facts *PipelineRunFacts) getPipelineTasksCount() pipelineRunStatusCount { case t.isFailure(): s.Failed++ // increment skipped and skipped due to timeout counters since the task was skipped due to the pipeline, tasks, or finally timeout being reached before the task was launched - case t.Skip(facts).SkippingReason == v1beta1.PipelineTimedOutSkip || - t.Skip(facts).SkippingReason == v1beta1.TasksTimedOutSkip || - t.IsFinallySkipped(facts).SkippingReason == v1beta1.FinallyTimedOutSkip: + case t.Skip(facts).SkippingReason == v1.PipelineTimedOutSkip || + t.Skip(facts).SkippingReason == v1.TasksTimedOutSkip || + t.IsFinallySkipped(facts).SkippingReason == v1.FinallyTimedOutSkip: s.Skipped++ s.SkippedDueToTimeout++ // increment skip counter since the task is skipped diff --git a/pkg/reconciler/pipelinerun/resources/pipelinerunstate_test.go b/pkg/reconciler/pipelinerun/resources/pipelinerunstate_test.go index bd361cc2a1b..d5e4b918e96 100644 --- a/pkg/reconciler/pipelinerun/resources/pipelinerunstate_test.go +++ b/pkg/reconciler/pipelinerun/resources/pipelinerunstate_test.go @@ -24,6 +24,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/reconciler/pipeline/dag" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" @@ -47,7 +48,7 @@ func TestPipelineRunFacts_CheckDAGTasksDoneDone(t *testing.T) { var taskCancelledByStatusState = PipelineRunState{{ PipelineTask: &pts[4], // 2 retries needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -56,7 +57,7 @@ func TestPipelineRunFacts_CheckDAGTasksDoneDone(t *testing.T) { var taskCancelledBySpecState = PipelineRunState{{ PipelineTask: &pts[4], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelledBySpec(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelledBySpec(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -65,7 +66,7 @@ func TestPipelineRunFacts_CheckDAGTasksDoneDone(t *testing.T) { var taskRunningState = PipelineRunState{{ PipelineTask: &pts[4], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -74,7 +75,7 @@ func TestPipelineRunFacts_CheckDAGTasksDoneDone(t *testing.T) { var taskSucceededState = PipelineRunState{{ PipelineTask: &pts[4], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -83,7 +84,7 @@ func TestPipelineRunFacts_CheckDAGTasksDoneDone(t *testing.T) { var taskRetriedState = PipelineRunState{{ PipelineTask: &pts[3], // 1 retry needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -92,7 +93,7 @@ func TestPipelineRunFacts_CheckDAGTasksDoneDone(t *testing.T) { var taskExpectedState = PipelineRunState{{ PipelineTask: &pts[4], // 2 retries needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withRetries(makeToBeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withRetries(makeToBeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -131,7 +132,7 @@ func TestPipelineRunFacts_CheckDAGTasksDoneDone(t *testing.T) { var taskCancelledFailedWithRetries = PipelineRunState{{ PipelineTask: &pts[4], // 2 retries needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -582,7 +583,7 @@ func TestGetNextTaskWithRetries(t *testing.T) { var taskCancelledByStatusState = PipelineRunState{{ PipelineTask: &pts[4], // 2 retries needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -591,7 +592,7 @@ func TestGetNextTaskWithRetries(t *testing.T) { var taskCancelledBySpecState = PipelineRunState{{ PipelineTask: &pts[4], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelledBySpec(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelledBySpec(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -600,7 +601,7 @@ func TestGetNextTaskWithRetries(t *testing.T) { var taskRunningState = PipelineRunState{{ PipelineTask: &pts[4], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -609,7 +610,7 @@ func TestGetNextTaskWithRetries(t *testing.T) { var taskSucceededState = PipelineRunState{{ PipelineTask: &pts[4], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -618,7 +619,7 @@ func TestGetNextTaskWithRetries(t *testing.T) { var taskRetriedState = PipelineRunState{{ PipelineTask: &pts[3], // 1 retry needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -667,7 +668,7 @@ func TestGetNextTaskWithRetries(t *testing.T) { var taskCancelledByStatusStateMatrix = PipelineRunState{{ PipelineTask: &pts[20], // 2 retries needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -676,7 +677,7 @@ func TestGetNextTaskWithRetries(t *testing.T) { var taskCancelledBySpecStateMatrix = PipelineRunState{{ PipelineTask: &pts[20], // 2 retries needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelledBySpec(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelledBySpec(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -685,7 +686,7 @@ func TestGetNextTaskWithRetries(t *testing.T) { var taskRunningStateMatrix = PipelineRunState{{ PipelineTask: &pts[20], // 2 retries needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -694,7 +695,7 @@ func TestGetNextTaskWithRetries(t *testing.T) { var taskSucceededStateMatrix = PipelineRunState{{ PipelineTask: &pts[20], // 2 retries needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -703,7 +704,7 @@ func TestGetNextTaskWithRetries(t *testing.T) { var taskRetriedStateMatrix = PipelineRunState{{ PipelineTask: &pts[17], // 1 retry needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -878,9 +879,9 @@ func TestGetNextTaskWithRetries(t *testing.T) { // in different states (without dependencies on each other) and the PipelineRun in different states. func TestDAGExecutionQueue(t *testing.T) { createdTask := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "createdtask", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, TaskRunNames: []string{"createdtask"}, ResolvedTask: &resources.ResolvedTask{ @@ -888,68 +889,68 @@ func TestDAGExecutionQueue(t *testing.T) { }, } createdRun := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "createdrun", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, CustomRunNames: []string{"createdrun"}, CustomTask: true, } runningTask := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "runningtask", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, TaskRunNames: []string{"runningtask"}, - TaskRuns: []*v1beta1.TaskRun{newTaskRun(trs[0])}, + TaskRuns: []*v1.TaskRun{newTaskRun(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, } runningRun := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "runningrun", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, CustomRunNames: []string{"runningrun"}, CustomRuns: []*v1beta1.CustomRun{newCustomRun(customRuns[0])}, CustomTask: true, } successfulTask := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "successfultask", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, TaskRunNames: []string{"successfultask"}, - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, } successfulRun := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "successfulrun", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, CustomRunNames: []string{"successfulrun"}, CustomRuns: []*v1beta1.CustomRun{makeCustomRunSucceeded(customRuns[0])}, CustomTask: true, } failedTask := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "failedtask", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, TaskRunNames: []string{"failedtask"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, } failedCustomRun := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "failedrun", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, CustomRunNames: []string{"failedrun"}, CustomRuns: []*v1beta1.CustomRun{makeCustomRunFailed(customRuns[0])}, @@ -958,25 +959,25 @@ func TestDAGExecutionQueue(t *testing.T) { tcs := []struct { name string state PipelineRunState - specStatus v1beta1.PipelineRunSpecStatus + specStatus v1.PipelineRunSpecStatus want PipelineRunState }{{ name: "cancelled", - specStatus: v1beta1.PipelineRunSpecStatusCancelled, + specStatus: v1.PipelineRunSpecStatusCancelled, state: PipelineRunState{ &createdTask, &createdRun, &runningTask, &runningRun, &successfulTask, &successfulRun, }, }, { name: "gracefully cancelled", - specStatus: v1beta1.PipelineRunSpecStatusCancelledRunFinally, + specStatus: v1.PipelineRunSpecStatusCancelledRunFinally, state: PipelineRunState{ &createdTask, &createdRun, &runningTask, &runningRun, &successfulTask, &successfulRun, }, }, { name: "gracefully stopped", - specStatus: v1beta1.PipelineRunSpecStatusStoppedRunFinally, + specStatus: v1.PipelineRunSpecStatusStoppedRunFinally, state: PipelineRunState{ &createdTask, &createdRun, &runningTask, &runningRun, &successfulTask, &successfulRun, }, @@ -1028,9 +1029,9 @@ func TestDAGExecutionQueue(t *testing.T) { func TestDAGExecutionQueueSequentialTasks(t *testing.T) { tcs := []struct { name string - firstTaskRun *v1beta1.TaskRun - secondTaskRun *v1beta1.TaskRun - specStatus v1beta1.PipelineRunSpecStatus + firstTaskRun *v1.TaskRun + secondTaskRun *v1.TaskRun + specStatus v1.PipelineRunSpecStatus wantFirst bool wantSecond bool }{{ @@ -1062,9 +1063,9 @@ func TestDAGExecutionQueueSequentialTasks(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { firstTask := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "task-1", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, TaskRunNames: []string{"task-1"}, ResolvedTask: &resources.ResolvedTask{ @@ -1072,9 +1073,9 @@ func TestDAGExecutionQueueSequentialTasks(t *testing.T) { }, } secondTask := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "task-2", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"task-1"}, }, TaskRunNames: []string{"task-2"}, @@ -1127,7 +1128,7 @@ func TestDAGExecutionQueueSequentialRuns(t *testing.T) { name string firstRun *v1beta1.CustomRun secondRun *v1beta1.CustomRun - specStatus v1beta1.PipelineRunSpecStatus + specStatus v1.PipelineRunSpecStatus wantFirst bool wantSecond bool }{{ @@ -1159,17 +1160,17 @@ func TestDAGExecutionQueueSequentialRuns(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { firstRun := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "task-1", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, CustomRunNames: []string{"task-1"}, CustomTask: true, } secondRun := ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "task-2", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, RunAfter: []string{"task-1"}, }, CustomRunNames: []string{"task-2"}, @@ -1218,7 +1219,7 @@ func TestPipelineRunState_CompletedOrSkippedDAGTasks(t *testing.T) { tcs := []struct { name string state PipelineRunState - specStatus v1beta1.PipelineRunSpecStatus + specStatus v1.PipelineRunSpecStatus expectedNames []string }{{ name: "no-tasks-started", @@ -1227,7 +1228,7 @@ func TestPipelineRunState_CompletedOrSkippedDAGTasks(t *testing.T) { }, { name: "no-tasks-started-run-cancelled-gracefully", state: noneStartedState, - specStatus: v1beta1.PipelineRunSpecStatusCancelledRunFinally, + specStatus: v1.PipelineRunSpecStatusCancelledRunFinally, expectedNames: []string{pts[0].Name, pts[1].Name}, }, { name: "one-task-started", @@ -1236,7 +1237,7 @@ func TestPipelineRunState_CompletedOrSkippedDAGTasks(t *testing.T) { }, { name: "one-task-started-run-stopped-gracefully", state: oneStartedState, - specStatus: v1beta1.PipelineRunSpecStatusStoppedRunFinally, + specStatus: v1.PipelineRunSpecStatusStoppedRunFinally, expectedNames: []string{pts[1].Name}, }, { name: "one-task-finished", @@ -1245,7 +1246,7 @@ func TestPipelineRunState_CompletedOrSkippedDAGTasks(t *testing.T) { }, { name: "one-task-finished-run-cancelled-forcefully", state: oneFinishedState, - specStatus: v1beta1.PipelineRunSpecStatusCancelled, + specStatus: v1.PipelineRunSpecStatusCancelled, expectedNames: []string{pts[0].Name}, }, { name: "one-task-failed", @@ -1305,21 +1306,21 @@ func TestPipelineRunState_CompletedOrSkippedDAGTasks(t *testing.T) { func buildPipelineStateWithLargeDependencyGraph(t *testing.T) PipelineRunState { t.Helper() - var task = &v1beta1.Task{ + var task = &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "task", }, - Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + Spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", }}, }, } var pipelineRunState PipelineRunState pipelineRunState = []*ResolvedPipelineTask{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "t1", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, TaskRuns: nil, ResolvedTask: &resources.ResolvedTask{ @@ -1335,22 +1336,22 @@ func buildPipelineStateWithLargeDependencyGraph(t *testing.T) PipelineRunState { dependFrom = i - (i % 10) } } - params := v1beta1.Params{} + params := v1.Params{} var alpha byte for alpha = 'a'; alpha <= 'j'; alpha++ { - params = append(params, v1beta1.Param{ + params = append(params, v1.Param{ Name: fmt.Sprintf("%c", alpha), - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: fmt.Sprintf("$(tasks.t%d.results.%c)", dependFrom, alpha), }, }) } pipelineRunState = append(pipelineRunState, &ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: fmt.Sprintf("t%d", i), Params: params, - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, TaskRuns: nil, ResolvedTask: &resources.ResolvedTask{ @@ -1364,21 +1365,21 @@ func buildPipelineStateWithLargeDependencyGraph(t *testing.T) PipelineRunState { func buildPipelineStateWithMultipleTaskResults(t *testing.T, includeWhen bool) PipelineRunState { t.Helper() - var task = &v1beta1.Task{ + var task = &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "task", }, - Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + Spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", }}, }, } var pipelineRunState PipelineRunState pipelineRunState = []*ResolvedPipelineTask{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "t1", - TaskRef: &v1beta1.TaskRef{Name: "task"}, + TaskRef: &v1.TaskRef{Name: "task"}, }, TaskRuns: nil, ResolvedTask: &resources.ResolvedTask{ @@ -1386,18 +1387,18 @@ func buildPipelineStateWithMultipleTaskResults(t *testing.T, includeWhen bool) P }, }} for i := 2; i < 400; i++ { - var params v1beta1.Params - whenExpressions := v1beta1.WhenExpressions{} + var params v1.Params + whenExpressions := v1.WhenExpressions{} var alpha byte // the task has a reference to multiple task results (a through j) from each parent task - causing a redundant references // the task dependents on all predecessors in a graph through params and/or whenExpressions for j := 1; j < i; j++ { for alpha = 'a'; alpha <= 'j'; alpha++ { // include param with task results - params = append(params, v1beta1.Param{ + params = append(params, v1.Param{ Name: fmt.Sprintf("%c", alpha), - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: fmt.Sprintf("$(tasks.t%d.results.%c)", j, alpha), }, }) @@ -1405,7 +1406,7 @@ func buildPipelineStateWithMultipleTaskResults(t *testing.T, includeWhen bool) P if includeWhen { for alpha = 'a'; alpha <= 'j'; alpha++ { // include when expressions with task results - whenExpressions = append(whenExpressions, v1beta1.WhenExpression{ + whenExpressions = append(whenExpressions, v1.WhenExpression{ Input: fmt.Sprintf("$(tasks.t%d.results.%c)", j, alpha), Operator: selection.In, Values: []string{"true"}, @@ -1414,11 +1415,11 @@ func buildPipelineStateWithMultipleTaskResults(t *testing.T, includeWhen bool) P } } pipelineRunState = append(pipelineRunState, &ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ - Name: fmt.Sprintf("t%d", i), - Params: params, - TaskRef: &v1beta1.TaskRef{Name: "task"}, - WhenExpressions: whenExpressions, + PipelineTask: &v1.PipelineTask{ + Name: fmt.Sprintf("t%d", i), + Params: params, + TaskRef: &v1.TaskRef{Name: "task"}, + When: whenExpressions, }, TaskRuns: nil, ResolvedTask: &resources.ResolvedTask{ @@ -1435,8 +1436,8 @@ func TestPipelineRunState_GetFinalTasksAndNames(t *testing.T) { name string desc string state PipelineRunState - DAGTasks []v1beta1.PipelineTask - finalTasks []v1beta1.PipelineTask + DAGTasks []v1.PipelineTask + finalTasks []v1.PipelineTask expectedFinalTasks PipelineRunState expectedFinalNames sets.String expectedTaskNames sets.String @@ -1447,8 +1448,8 @@ func TestPipelineRunState_GetFinalTasksAndNames(t *testing.T) { desc: "DAG tasks (mytask1 and mytask2) finished successfully -" + " do not schedule final tasks since pipeline didnt have any", state: oneStartedState, - DAGTasks: []v1beta1.PipelineTask{pts[0], pts[1]}, - finalTasks: []v1beta1.PipelineTask{}, + DAGTasks: []v1.PipelineTask{pts[0], pts[1]}, + finalTasks: []v1.PipelineTask{}, expectedFinalTasks: PipelineRunState{}, expectedFinalNames: nil, expectedTaskNames: sets.NewString(pts[0].Name, pts[1].Name), @@ -1458,8 +1459,8 @@ func TestPipelineRunState_GetFinalTasksAndNames(t *testing.T) { name: "02 - DAG task not started, no final tasks", desc: "DAG tasks (mytask1) not started yet - do not schedule final tasks (mytask2)", state: noneStartedState, - DAGTasks: []v1beta1.PipelineTask{pts[0]}, - finalTasks: []v1beta1.PipelineTask{pts[1]}, + DAGTasks: []v1.PipelineTask{pts[0]}, + finalTasks: []v1.PipelineTask{pts[1]}, expectedFinalTasks: PipelineRunState{}, expectedFinalNames: sets.NewString(pts[1].Name), expectedTaskNames: sets.NewString(pts[0].Name), @@ -1469,8 +1470,8 @@ func TestPipelineRunState_GetFinalTasksAndNames(t *testing.T) { name: "03 - DAG task not finished, no final tasks", desc: "DAG tasks (mytask1) started but not finished - do not schedule final tasks (mytask2)", state: oneStartedState, - DAGTasks: []v1beta1.PipelineTask{pts[0]}, - finalTasks: []v1beta1.PipelineTask{pts[1]}, + DAGTasks: []v1.PipelineTask{pts[0]}, + finalTasks: []v1.PipelineTask{pts[1]}, expectedFinalTasks: PipelineRunState{}, expectedFinalNames: sets.NewString(pts[1].Name), expectedTaskNames: sets.NewString(pts[0].Name), @@ -1480,8 +1481,8 @@ func TestPipelineRunState_GetFinalTasksAndNames(t *testing.T) { name: "04 - DAG task done, return final tasks", desc: "DAG tasks (mytask1) done - schedule final tasks (mytask2)", state: oneFinishedState, - DAGTasks: []v1beta1.PipelineTask{pts[0]}, - finalTasks: []v1beta1.PipelineTask{pts[1]}, + DAGTasks: []v1.PipelineTask{pts[0]}, + finalTasks: []v1.PipelineTask{pts[1]}, expectedFinalTasks: PipelineRunState{oneFinishedState[1]}, expectedFinalNames: sets.NewString(pts[1].Name), expectedTaskNames: sets.NewString(pts[0].Name), @@ -1491,8 +1492,8 @@ func TestPipelineRunState_GetFinalTasksAndNames(t *testing.T) { name: "05 - DAG task failed, return final tasks", desc: "DAG task (mytask1) failed - schedule final tasks (mytask2)", state: oneFailedState, - DAGTasks: []v1beta1.PipelineTask{pts[0]}, - finalTasks: []v1beta1.PipelineTask{pts[1]}, + DAGTasks: []v1.PipelineTask{pts[0]}, + finalTasks: []v1.PipelineTask{pts[1]}, expectedFinalTasks: PipelineRunState{oneFinishedState[1]}, expectedFinalNames: sets.NewString(pts[1].Name), expectedTaskNames: sets.NewString(pts[0].Name), @@ -1502,18 +1503,18 @@ func TestPipelineRunState_GetFinalTasksAndNames(t *testing.T) { name: "06 - DAG tasks succeeded, final tasks scheduled - no final tasks", desc: "DAG task (mytask1) finished successfully - final task (mytask2) scheduled - no final tasks", state: finalScheduledState, - DAGTasks: []v1beta1.PipelineTask{pts[0]}, - finalTasks: []v1beta1.PipelineTask{pts[1]}, + DAGTasks: []v1.PipelineTask{pts[0]}, + finalTasks: []v1.PipelineTask{pts[1]}, expectedFinalTasks: PipelineRunState{}, expectedFinalNames: sets.NewString(pts[1].Name), expectedTaskNames: sets.NewString(pts[0].Name), }} for _, tc := range tcs { - dagGraph, err := dag.Build(v1beta1.PipelineTaskList(tc.DAGTasks), v1beta1.PipelineTaskList(tc.DAGTasks).Deps()) + dagGraph, err := dag.Build(v1.PipelineTaskList(tc.DAGTasks), v1.PipelineTaskList(tc.DAGTasks).Deps()) if err != nil { t.Fatalf("Unexpected error while building DAG for pipelineTasks %v: %v", tc.DAGTasks, err) } - finalGraph, err := dag.Build(v1beta1.PipelineTaskList(tc.finalTasks), map[string][]string{}) + finalGraph, err := dag.Build(v1.PipelineTaskList(tc.finalTasks), map[string][]string{}) if err != nil { t.Fatalf("Unexpected error while building DAG for final pipelineTasks %v: %v", tc.finalTasks, err) } @@ -1548,7 +1549,7 @@ func TestGetPipelineConditionStatus(t *testing.T) { var taskRetriedState = PipelineRunState{{ PipelineTask: &pts[3], // 1 retry needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeRetried(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeRetried(trs[0]))}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -1557,24 +1558,24 @@ func TestGetPipelineConditionStatus(t *testing.T) { var taskCancelledFailed = PipelineRunState{{ PipelineTask: &pts[4], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelled(makeFailed(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelled(makeFailed(trs[0]))}, }} var taskCancelledFailedTimedOut = PipelineRunState{{ PipelineTask: &pts[4], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{withCancelledForTimeout(makeFailed(trs[0]))}, + TaskRuns: []*v1.TaskRun{withCancelledForTimeout(makeFailed(trs[0]))}, }} var cancelledTask = PipelineRunState{{ PipelineTask: &pts[3], // 1 retry needed TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{{ - Status: v1beta1.TaskRunStatus{ + TaskRuns: []*v1.TaskRun{{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, - Reason: v1beta1.TaskRunSpecStatusCancelled, + Reason: v1.TaskRunSpecStatusCancelled, }}}, }, }}, @@ -1631,15 +1632,15 @@ func TestGetPipelineConditionStatus(t *testing.T) { var taskMultipleFailuresSkipRunning = PipelineRunState{{ TaskRunNames: []string{"task0taskrun"}, PipelineTask: &pts[5], - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, }, { TaskRunNames: []string{"runningTaskRun"}, // this is running PipelineTask: &pts[6], - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[1])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[1])}, }, { TaskRunNames: []string{"failedTaskRun"}, // this failed PipelineTask: &pts[0], - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }} var taskMultipleFailuresOneCancel = taskMultipleFailuresSkipRunning @@ -1648,7 +1649,7 @@ func TestGetPipelineConditionStatus(t *testing.T) { var taskNotRunningWithSuccesfulParentsOneFailed = PipelineRunState{{ TaskRunNames: []string{"task0taskrun"}, PipelineTask: &pts[5], - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, }, { TaskRunNames: []string{"notRunningTaskRun"}, // runAfter pts[5], not started yet PipelineTask: &pts[6], @@ -1656,7 +1657,7 @@ func TestGetPipelineConditionStatus(t *testing.T) { }, { TaskRunNames: []string{"failedTaskRun"}, // this failed PipelineTask: &pts[0], - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }} tenMinutesAgo := now.Add(-10 * time.Minute) @@ -1666,7 +1667,7 @@ func TestGetPipelineConditionStatus(t *testing.T) { name string state PipelineRunState finallyState PipelineRunState - specStatus v1beta1.PipelineRunSpecStatus + specStatus v1.PipelineRunSpecStatus timeoutsState PipelineRunTimeoutsState expectedStatus corev1.ConditionStatus expectedReason string @@ -1679,87 +1680,87 @@ func TestGetPipelineConditionStatus(t *testing.T) { name: "no-tasks-started", state: noneStartedState, expectedStatus: corev1.ConditionUnknown, - expectedReason: v1beta1.PipelineRunReasonRunning.String(), + expectedReason: v1.PipelineRunReasonRunning.String(), expectedIncomplete: 2, }, { name: "no-tasks-started-pipeline-run-gracefully-cancelled", state: noneStartedState, - specStatus: v1beta1.PipelineRunSpecStatusCancelledRunFinally, + specStatus: v1.PipelineRunSpecStatusCancelledRunFinally, expectedStatus: corev1.ConditionFalse, - expectedReason: v1beta1.PipelineRunReasonCancelled.String(), + expectedReason: v1.PipelineRunReasonCancelled.String(), expectedSkipped: 2, }, { name: "no-tasks-started-pipeline-run-with-finally-gracefully-cancelled", state: noneStartedState, finallyState: noneStartedState, - specStatus: v1beta1.PipelineRunSpecStatusCancelledRunFinally, + specStatus: v1.PipelineRunSpecStatusCancelledRunFinally, expectedStatus: corev1.ConditionUnknown, - expectedReason: v1beta1.PipelineRunReasonCancelledRunningFinally.String(), + expectedReason: v1.PipelineRunReasonCancelledRunningFinally.String(), expectedIncomplete: 2, }, { name: "no-tasks-started-pipeline-run-with-finally-gracefully-stopped", state: noneStartedState, finallyState: noneStartedState, - specStatus: v1beta1.PipelineRunSpecStatusStoppedRunFinally, + specStatus: v1.PipelineRunSpecStatusStoppedRunFinally, expectedStatus: corev1.ConditionUnknown, - expectedReason: v1beta1.PipelineRunReasonStoppedRunningFinally.String(), + expectedReason: v1.PipelineRunReasonStoppedRunningFinally.String(), expectedIncomplete: 2, }, { name: "one-task-started", state: oneStartedState, expectedStatus: corev1.ConditionUnknown, - expectedReason: v1beta1.PipelineRunReasonRunning.String(), + expectedReason: v1.PipelineRunReasonRunning.String(), expectedIncomplete: 2, }, { name: "one-task-finished", state: oneFinishedState, expectedStatus: corev1.ConditionUnknown, - expectedReason: v1beta1.PipelineRunReasonRunning.String(), + expectedReason: v1.PipelineRunReasonRunning.String(), expectedSucceeded: 1, expectedIncomplete: 1, }, { name: "one-task-finished-pipeline-run-gracefully-stopped", state: oneFinishedState, - specStatus: v1beta1.PipelineRunSpecStatusStoppedRunFinally, + specStatus: v1.PipelineRunSpecStatusStoppedRunFinally, expectedStatus: corev1.ConditionFalse, - expectedReason: v1beta1.PipelineRunReasonCancelled.String(), + expectedReason: v1.PipelineRunReasonCancelled.String(), expectedSucceeded: 1, expectedSkipped: 1, }, { name: "one-task-failed", state: oneFailedState, expectedStatus: corev1.ConditionFalse, - expectedReason: v1beta1.PipelineRunReasonFailed.String(), + expectedReason: v1.PipelineRunReasonFailed.String(), expectedFailed: 1, expectedSkipped: 1, }, { name: "all-finished", state: allFinishedState, expectedStatus: corev1.ConditionTrue, - expectedReason: v1beta1.PipelineRunReasonSuccessful.String(), + expectedReason: v1.PipelineRunReasonSuccessful.String(), expectedSucceeded: 2, }, { name: "one-retry-needed", state: taskRetriedState, expectedStatus: corev1.ConditionUnknown, - expectedReason: v1beta1.PipelineRunReasonRunning.String(), + expectedReason: v1.PipelineRunReasonRunning.String(), expectedIncomplete: 1, }, { name: "task that was cancelled", state: taskCancelledFailed, - expectedReason: v1beta1.PipelineRunReasonCancelled.String(), + expectedReason: v1.PipelineRunReasonCancelled.String(), expectedStatus: corev1.ConditionFalse, expectedCancelled: 1, }, { name: "task that was cancelled for timeout", state: taskCancelledFailedTimedOut, - expectedReason: v1beta1.PipelineRunReasonFailed.String(), + expectedReason: v1.PipelineRunReasonFailed.String(), expectedStatus: corev1.ConditionFalse, expectedFailed: 1, }, { name: "task with multiple failures", state: taskMultipleFailuresSkipRunning, - expectedReason: v1beta1.PipelineRunReasonStopping.String(), + expectedReason: v1.PipelineRunReasonStopping.String(), expectedStatus: corev1.ConditionUnknown, expectedSucceeded: 1, expectedFailed: 1, @@ -1769,7 +1770,7 @@ func TestGetPipelineConditionStatus(t *testing.T) { }, { name: "task with multiple failures; one cancelled", state: taskMultipleFailuresOneCancel, - expectedReason: v1beta1.PipelineRunReasonStopping.String(), + expectedReason: v1.PipelineRunReasonStopping.String(), expectedStatus: corev1.ConditionUnknown, expectedSucceeded: 1, expectedFailed: 1, @@ -1779,7 +1780,7 @@ func TestGetPipelineConditionStatus(t *testing.T) { }, { name: "task not started with passed parent; one failed", state: taskNotRunningWithSuccesfulParentsOneFailed, - expectedReason: v1beta1.PipelineRunReasonFailed.String(), + expectedReason: v1.PipelineRunReasonFailed.String(), expectedStatus: corev1.ConditionFalse, expectedSucceeded: 1, expectedFailed: 1, @@ -1788,19 +1789,19 @@ func TestGetPipelineConditionStatus(t *testing.T) { name: "cancelled task should result in cancelled pipeline", state: cancelledTask, expectedStatus: corev1.ConditionFalse, - expectedReason: v1beta1.PipelineRunReasonCancelled.String(), + expectedReason: v1.PipelineRunReasonCancelled.String(), expectedCancelled: 1, }, { name: "cancelled run should result in cancelled pipeline", state: cancelledRun, expectedStatus: corev1.ConditionFalse, - expectedReason: v1beta1.PipelineRunReasonCancelled.String(), + expectedReason: v1.PipelineRunReasonCancelled.String(), expectedCancelled: 1, }, { name: "cancelled for timeout run should result in failed pipeline", state: timedOutRun, expectedStatus: corev1.ConditionFalse, - expectedReason: v1beta1.PipelineRunReasonFailed.String(), + expectedReason: v1.PipelineRunReasonFailed.String(), expectedFailed: 1, }, { name: "skipped for timeout run should result in failed pipeline", @@ -1810,16 +1811,16 @@ func TestGetPipelineConditionStatus(t *testing.T) { TasksTimeout: &fiveMinuteDuration, }, expectedStatus: corev1.ConditionFalse, - expectedReason: v1beta1.PipelineRunReasonFailed.String(), + expectedReason: v1.PipelineRunReasonFailed.String(), expectedSkipped: 1, }} for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "somepipelinerun", }, - Spec: v1beta1.PipelineRunSpec{ + Spec: v1.PipelineRunSpec{ Status: tc.specStatus, }, } @@ -1864,18 +1865,18 @@ func TestGetPipelineConditionStatus_WithFinalTasks(t *testing.T) { dagSucceededFinalFailed := PipelineRunState{{ TaskRunNames: []string{"task0taskrun"}, PipelineTask: &pts[0], - TaskRuns: []*v1beta1.TaskRun{makeSucceeded(trs[0])}, + TaskRuns: []*v1.TaskRun{makeSucceeded(trs[0])}, }, { TaskRunNames: []string{"failedTaskRun"}, PipelineTask: &pts[1], - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }} // pipeline state with one DAG failed, no final started dagFailedFinalNotStarted := PipelineRunState{{ TaskRunNames: []string{"task0taskrun"}, PipelineTask: &pts[0], - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }, { TaskRunNames: []string{"notRunningTaskRun"}, PipelineTask: &pts[1], @@ -1886,18 +1887,18 @@ func TestGetPipelineConditionStatus_WithFinalTasks(t *testing.T) { dagFailedFinalFailed := PipelineRunState{{ TaskRunNames: []string{"task0taskrun"}, PipelineTask: &pts[0], - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }, { TaskRunNames: []string{"failedTaskRun"}, PipelineTask: &pts[1], - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }} // pipeline state with one DAG failed, one final task skipped dagFailedFinalSkipped := PipelineRunState{{ TaskRunNames: []string{"task0taskrun"}, PipelineTask: &pts[0], - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }, { PipelineTask: &pts[14], }} @@ -1905,8 +1906,8 @@ func TestGetPipelineConditionStatus_WithFinalTasks(t *testing.T) { tcs := []struct { name string state PipelineRunState - dagTasks []v1beta1.PipelineTask - finalTasks []v1beta1.PipelineTask + dagTasks []v1.PipelineTask + finalTasks []v1.PipelineTask expectedStatus corev1.ConditionStatus expectedReason string expectedSucceeded int @@ -1917,10 +1918,10 @@ func TestGetPipelineConditionStatus_WithFinalTasks(t *testing.T) { }{{ name: "pipeline with one successful DAG task and failed final task", state: dagSucceededFinalFailed, - dagTasks: []v1beta1.PipelineTask{pts[0]}, - finalTasks: []v1beta1.PipelineTask{pts[1]}, + dagTasks: []v1.PipelineTask{pts[0]}, + finalTasks: []v1.PipelineTask{pts[1]}, expectedStatus: corev1.ConditionFalse, - expectedReason: v1beta1.PipelineRunReasonFailed.String(), + expectedReason: v1.PipelineRunReasonFailed.String(), expectedSucceeded: 1, expectedIncomplete: 0, expectedSkipped: 0, @@ -1929,10 +1930,10 @@ func TestGetPipelineConditionStatus_WithFinalTasks(t *testing.T) { }, { name: "pipeline with one failed DAG task and not started final task", state: dagFailedFinalNotStarted, - dagTasks: []v1beta1.PipelineTask{pts[0]}, - finalTasks: []v1beta1.PipelineTask{pts[1]}, + dagTasks: []v1.PipelineTask{pts[0]}, + finalTasks: []v1.PipelineTask{pts[1]}, expectedStatus: corev1.ConditionUnknown, - expectedReason: v1beta1.PipelineRunReasonRunning.String(), + expectedReason: v1.PipelineRunReasonRunning.String(), expectedSucceeded: 0, expectedIncomplete: 1, expectedSkipped: 0, @@ -1941,10 +1942,10 @@ func TestGetPipelineConditionStatus_WithFinalTasks(t *testing.T) { }, { name: "pipeline with one failed DAG task and failed final task", state: dagFailedFinalFailed, - dagTasks: []v1beta1.PipelineTask{pts[0]}, - finalTasks: []v1beta1.PipelineTask{pts[1]}, + dagTasks: []v1.PipelineTask{pts[0]}, + finalTasks: []v1.PipelineTask{pts[1]}, expectedStatus: corev1.ConditionFalse, - expectedReason: v1beta1.PipelineRunReasonFailed.String(), + expectedReason: v1.PipelineRunReasonFailed.String(), expectedSucceeded: 0, expectedIncomplete: 0, expectedSkipped: 0, @@ -1953,10 +1954,10 @@ func TestGetPipelineConditionStatus_WithFinalTasks(t *testing.T) { }, { name: "pipeline with one failed DAG task and skipped final task", state: dagFailedFinalSkipped, - dagTasks: []v1beta1.PipelineTask{pts[0]}, - finalTasks: []v1beta1.PipelineTask{pts[14]}, + dagTasks: []v1.PipelineTask{pts[0]}, + finalTasks: []v1.PipelineTask{pts[14]}, expectedStatus: corev1.ConditionFalse, - expectedReason: v1beta1.PipelineRunReasonFailed.String(), + expectedReason: v1.PipelineRunReasonFailed.String(), expectedSucceeded: 0, expectedIncomplete: 0, expectedSkipped: 1, @@ -1966,17 +1967,17 @@ func TestGetPipelineConditionStatus_WithFinalTasks(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "pipelinerun-final-tasks", }, - Spec: v1beta1.PipelineRunSpec{}, + Spec: v1.PipelineRunSpec{}, } - d, err := dag.Build(v1beta1.PipelineTaskList(tc.dagTasks), v1beta1.PipelineTaskList(tc.dagTasks).Deps()) + d, err := dag.Build(v1.PipelineTaskList(tc.dagTasks), v1.PipelineTaskList(tc.dagTasks).Deps()) if err != nil { t.Fatalf("Unexpected error while building graph for DAG tasks %v: %v", tc.dagTasks, err) } - df, err := dag.Build(v1beta1.PipelineTaskList(tc.finalTasks), map[string][]string{}) + df, err := dag.Build(v1.PipelineTaskList(tc.finalTasks), map[string][]string{}) if err != nil { t.Fatalf("Unexpected error while building graph for final tasks %v: %v", tc.finalTasks, err) } @@ -2009,13 +2010,15 @@ func TestGetPipelineConditionStatus_PipelineTimeoutDeprecated(t *testing.T) { if err != nil { t.Fatalf("Unexpected error while building DAG for state %v: %v", oneFinishedState, err) } - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-no-tasks-started"}, - Spec: v1beta1.PipelineRunSpec{ - Timeout: &metav1.Duration{Duration: 1 * time.Minute}, + Spec: v1.PipelineRunSpec{ + Timeouts: &v1.TimeoutFields{ + Pipeline: &metav1.Duration{Duration: 1 * time.Minute}, + }, }, - Status: v1beta1.PipelineRunStatus{ - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + Status: v1.PipelineRunStatus{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ StartTime: &metav1.Time{Time: now.Add(-2 * time.Minute)}, }, }, @@ -2029,7 +2032,7 @@ func TestGetPipelineConditionStatus_PipelineTimeoutDeprecated(t *testing.T) { }, } c := facts.GetPipelineConditionStatus(context.Background(), pr, zap.NewNop().Sugar(), testClock) - if c.Status != corev1.ConditionFalse && c.Reason != v1beta1.PipelineRunReasonTimedOut.String() { + if c.Status != corev1.ConditionFalse && c.Reason != v1.PipelineRunReasonTimedOut.String() { t.Fatalf("Expected to get status %s but got %s for state %v", corev1.ConditionFalse, c.Status, oneFinishedState) } } @@ -2040,15 +2043,15 @@ func TestGetPipelineConditionStatus_PipelineTimeouts(t *testing.T) { if err != nil { t.Fatalf("Unexpected error while building DAG for state %v: %v", oneFinishedState, err) } - pr := &v1beta1.PipelineRun{ + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipelinerun-no-tasks-started"}, - Spec: v1beta1.PipelineRunSpec{ - Timeouts: &v1beta1.TimeoutFields{ + Spec: v1.PipelineRunSpec{ + Timeouts: &v1.TimeoutFields{ Pipeline: &metav1.Duration{Duration: 1 * time.Minute}, }, }, - Status: v1beta1.PipelineRunStatus{ - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ + Status: v1.PipelineRunStatus{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ StartTime: &metav1.Time{Time: now.Add(-2 * time.Minute)}, }, }, @@ -2062,7 +2065,7 @@ func TestGetPipelineConditionStatus_PipelineTimeouts(t *testing.T) { }, } c := facts.GetPipelineConditionStatus(context.Background(), pr, zap.NewNop().Sugar(), testClock) - if c.Status != corev1.ConditionFalse && c.Reason != v1beta1.PipelineRunReasonTimedOut.String() { + if c.Status != corev1.ConditionFalse && c.Reason != v1.PipelineRunReasonTimedOut.String() { t.Fatalf("Expected to get status %s but got %s for state %v", corev1.ConditionFalse, c.Status, oneFinishedState) } } @@ -2077,7 +2080,7 @@ func TestAdjustStartTime(t *testing.T) { }{{ name: "same times", prs: PipelineRunState{{ - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "blah", CreationTimestamp: baseline, @@ -2088,7 +2091,7 @@ func TestAdjustStartTime(t *testing.T) { }, { name: "taskrun starts later", prs: PipelineRunState{{ - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "blah", CreationTimestamp: metav1.Time{Time: baseline.Time.Add(1 * time.Second)}, @@ -2100,7 +2103,7 @@ func TestAdjustStartTime(t *testing.T) { }, { name: "taskrun starts earlier", prs: PipelineRunState{{ - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "blah", CreationTimestamp: metav1.Time{Time: baseline.Time.Add(-1 * time.Second)}, @@ -2112,14 +2115,14 @@ func TestAdjustStartTime(t *testing.T) { }, { name: "multiple taskruns, some earlier", prs: PipelineRunState{{ - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "blah1", CreationTimestamp: metav1.Time{Time: baseline.Time.Add(-1 * time.Second)}, }, }}, }, { - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "blah2", CreationTimestamp: metav1.Time{Time: baseline.Time.Add(-2 * time.Second)}, @@ -2128,7 +2131,7 @@ func TestAdjustStartTime(t *testing.T) { }, { TaskRuns: nil, }, { - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "blah3", CreationTimestamp: metav1.Time{Time: baseline.Time.Add(2 * time.Second)}, @@ -2140,7 +2143,7 @@ func TestAdjustStartTime(t *testing.T) { }, { name: "multiple taskruns, some earlier", prs: PipelineRunState{{ - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "blah1", CreationTimestamp: metav1.Time{Time: baseline.Time.Add(-1 * time.Second)}, @@ -2224,52 +2227,52 @@ func TestPipelineRunFacts_GetPipelineTaskStatus(t *testing.T) { tcs := []struct { name string state PipelineRunState - dagTasks []v1beta1.PipelineTask + dagTasks []v1.PipelineTask expectedStatus map[string]string }{{ name: "no-tasks-started", state: noneStartedState, - dagTasks: []v1beta1.PipelineTask{pts[0], pts[1]}, + dagTasks: []v1.PipelineTask{pts[0], pts[1]}, expectedStatus: map[string]string{ PipelineTaskStatusPrefix + pts[0].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, PipelineTaskStatusPrefix + pts[1].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, - v1beta1.PipelineTasksAggregateStatus: PipelineTaskStateNone, + v1.PipelineTasksAggregateStatus: PipelineTaskStateNone, }, }, { name: "one-task-started", state: oneStartedState, - dagTasks: []v1beta1.PipelineTask{pts[0], pts[1]}, + dagTasks: []v1.PipelineTask{pts[0], pts[1]}, expectedStatus: map[string]string{ PipelineTaskStatusPrefix + pts[0].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, PipelineTaskStatusPrefix + pts[1].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, - v1beta1.PipelineTasksAggregateStatus: PipelineTaskStateNone, + v1.PipelineTasksAggregateStatus: PipelineTaskStateNone, }, }, { name: "one-task-finished", state: oneFinishedState, - dagTasks: []v1beta1.PipelineTask{pts[0], pts[1]}, + dagTasks: []v1.PipelineTask{pts[0], pts[1]}, expectedStatus: map[string]string{ - PipelineTaskStatusPrefix + pts[0].Name + PipelineTaskStatusSuffix: v1beta1.TaskRunReasonSuccessful.String(), + PipelineTaskStatusPrefix + pts[0].Name + PipelineTaskStatusSuffix: v1.TaskRunReasonSuccessful.String(), PipelineTaskStatusPrefix + pts[1].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, - v1beta1.PipelineTasksAggregateStatus: PipelineTaskStateNone, + v1.PipelineTasksAggregateStatus: PipelineTaskStateNone, }, }, { name: "one-task-failed", state: oneFailedState, - dagTasks: []v1beta1.PipelineTask{pts[0], pts[1]}, + dagTasks: []v1.PipelineTask{pts[0], pts[1]}, expectedStatus: map[string]string{ - PipelineTaskStatusPrefix + pts[0].Name + PipelineTaskStatusSuffix: v1beta1.TaskRunReasonFailed.String(), + PipelineTaskStatusPrefix + pts[0].Name + PipelineTaskStatusSuffix: v1.TaskRunReasonFailed.String(), PipelineTaskStatusPrefix + pts[1].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, - v1beta1.PipelineTasksAggregateStatus: v1beta1.PipelineRunReasonFailed.String(), + v1.PipelineTasksAggregateStatus: v1.PipelineRunReasonFailed.String(), }, }, { name: "all-finished", state: allFinishedState, - dagTasks: []v1beta1.PipelineTask{pts[0], pts[1]}, + dagTasks: []v1.PipelineTask{pts[0], pts[1]}, expectedStatus: map[string]string{ - PipelineTaskStatusPrefix + pts[0].Name + PipelineTaskStatusSuffix: v1beta1.TaskRunReasonSuccessful.String(), - PipelineTaskStatusPrefix + pts[1].Name + PipelineTaskStatusSuffix: v1beta1.TaskRunReasonSuccessful.String(), - v1beta1.PipelineTasksAggregateStatus: v1beta1.PipelineRunReasonSuccessful.String(), + PipelineTaskStatusPrefix + pts[0].Name + PipelineTaskStatusSuffix: v1.TaskRunReasonSuccessful.String(), + PipelineTaskStatusPrefix + pts[1].Name + PipelineTaskStatusSuffix: v1.TaskRunReasonSuccessful.String(), + v1.PipelineTasksAggregateStatus: v1.PipelineRunReasonSuccessful.String(), }, }, { name: "task-with-when-expressions-passed", @@ -2281,10 +2284,10 @@ func TestPipelineRunFacts_GetPipelineTaskStatus(t *testing.T) { TaskSpec: &task.Spec, }, }}, - dagTasks: []v1beta1.PipelineTask{pts[9]}, + dagTasks: []v1.PipelineTask{pts[9]}, expectedStatus: map[string]string{ PipelineTaskStatusPrefix + pts[9].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, - v1beta1.PipelineTasksAggregateStatus: PipelineTaskStateNone, + v1.PipelineTasksAggregateStatus: PipelineTaskStateNone, }, }, { name: "tasks-when-expression-failed-and-task-skipped", @@ -2295,16 +2298,16 @@ func TestPipelineRunFacts_GetPipelineTaskStatus(t *testing.T) { TaskSpec: &task.Spec, }, }}, - dagTasks: []v1beta1.PipelineTask{pts[10]}, + dagTasks: []v1.PipelineTask{pts[10]}, expectedStatus: map[string]string{ PipelineTaskStatusPrefix + pts[10].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, - v1beta1.PipelineTasksAggregateStatus: v1beta1.PipelineRunReasonCompleted.String(), + v1.PipelineTasksAggregateStatus: v1.PipelineRunReasonCompleted.String(), }, }, { name: "when-expression-task-with-parent-started", state: PipelineRunState{{ PipelineTask: &pts[0], - TaskRuns: []*v1beta1.TaskRun{makeStarted(trs[0])}, + TaskRuns: []*v1.TaskRun{makeStarted(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, @@ -2315,19 +2318,19 @@ func TestPipelineRunFacts_GetPipelineTaskStatus(t *testing.T) { TaskSpec: &task.Spec, }, }}, - dagTasks: []v1beta1.PipelineTask{pts[0], pts[11]}, + dagTasks: []v1.PipelineTask{pts[0], pts[11]}, expectedStatus: map[string]string{ PipelineTaskStatusPrefix + pts[0].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, PipelineTaskStatusPrefix + pts[11].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, - v1beta1.PipelineTasksAggregateStatus: PipelineTaskStateNone, + v1.PipelineTasksAggregateStatus: PipelineTaskStateNone, }, }, { name: "task-cancelled", state: taskCancelled, - dagTasks: []v1beta1.PipelineTask{pts[4]}, + dagTasks: []v1.PipelineTask{pts[4]}, expectedStatus: map[string]string{ PipelineTaskStatusPrefix + pts[4].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, - v1beta1.PipelineTasksAggregateStatus: PipelineTaskStateNone, + v1.PipelineTasksAggregateStatus: PipelineTaskStateNone, }, }, { name: "one-skipped-one-failed-aggregate-status-must-be-failed", @@ -2340,21 +2343,21 @@ func TestPipelineRunFacts_GetPipelineTaskStatus(t *testing.T) { }, { PipelineTask: &pts[0], TaskRunNames: []string{"pipelinerun-mytask1"}, - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, ResolvedTask: &resources.ResolvedTask{ TaskSpec: &task.Spec, }, }}, - dagTasks: []v1beta1.PipelineTask{pts[0], pts[10]}, + dagTasks: []v1.PipelineTask{pts[0], pts[10]}, expectedStatus: map[string]string{ - PipelineTaskStatusPrefix + pts[0].Name + PipelineTaskStatusSuffix: v1beta1.PipelineRunReasonFailed.String(), + PipelineTaskStatusPrefix + pts[0].Name + PipelineTaskStatusSuffix: v1.PipelineRunReasonFailed.String(), PipelineTaskStatusPrefix + pts[10].Name + PipelineTaskStatusSuffix: PipelineTaskStateNone, - v1beta1.PipelineTasksAggregateStatus: v1beta1.PipelineRunReasonFailed.String(), + v1.PipelineTasksAggregateStatus: v1.PipelineRunReasonFailed.String(), }, }} for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - d, err := dag.Build(v1beta1.PipelineTaskList(tc.dagTasks), v1beta1.PipelineTaskList(tc.dagTasks).Deps()) + d, err := dag.Build(v1.PipelineTaskList(tc.dagTasks), v1.PipelineTaskList(tc.dagTasks).Deps()) if err != nil { t.Fatalf("Unexpected error while building graph for DAG tasks %v: %v", tc.dagTasks, err) } @@ -2378,47 +2381,47 @@ func TestPipelineRunFacts_GetSkippedTasks(t *testing.T) { for _, tc := range []struct { name string state PipelineRunState - dagTasks []v1beta1.PipelineTask - finallyTasks []v1beta1.PipelineTask - expectedSkippedTasks []v1beta1.SkippedTask + dagTasks []v1.PipelineTask + finallyTasks []v1.PipelineTask + expectedSkippedTasks []v1.SkippedTask }{{ name: "stopping-skip-taskruns", state: PipelineRunState{{ PipelineTask: &pts[0], - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }, { PipelineTask: &pts[14], }}, - dagTasks: []v1beta1.PipelineTask{pts[0], pts[14]}, - expectedSkippedTasks: []v1beta1.SkippedTask{{ + dagTasks: []v1.PipelineTask{pts[0], pts[14]}, + expectedSkippedTasks: []v1.SkippedTask{{ Name: pts[14].Name, - Reason: v1beta1.StoppingSkip, + Reason: v1.StoppingSkip, }}, }, { name: "missing-results-skip-finally", state: PipelineRunState{{ TaskRunNames: []string{"task0taskrun"}, PipelineTask: &pts[0], - TaskRuns: []*v1beta1.TaskRun{makeFailed(trs[0])}, + TaskRuns: []*v1.TaskRun{makeFailed(trs[0])}, }, { PipelineTask: &pts[14], }}, - dagTasks: []v1beta1.PipelineTask{pts[0]}, - finallyTasks: []v1beta1.PipelineTask{pts[14]}, - expectedSkippedTasks: []v1beta1.SkippedTask{{ + dagTasks: []v1.PipelineTask{pts[0]}, + finallyTasks: []v1.PipelineTask{pts[14]}, + expectedSkippedTasks: []v1.SkippedTask{{ Name: pts[14].Name, - Reason: v1beta1.MissingResultsSkip, + Reason: v1.MissingResultsSkip, }}, }, { name: "when-expressions-skip-finally", state: PipelineRunState{{ PipelineTask: &pts[10], }}, - finallyTasks: []v1beta1.PipelineTask{pts[10]}, - expectedSkippedTasks: []v1beta1.SkippedTask{{ + finallyTasks: []v1.PipelineTask{pts[10]}, + expectedSkippedTasks: []v1.SkippedTask{{ Name: pts[10].Name, - Reason: v1beta1.WhenExpressionsSkip, - WhenExpressions: []v1beta1.WhenExpression{{ + Reason: v1.WhenExpressionsSkip, + WhenExpressions: []v1.WhenExpression{{ Input: "foo", Operator: "notin", Values: []string{"foo", "bar"}, @@ -2426,13 +2429,13 @@ func TestPipelineRunFacts_GetSkippedTasks(t *testing.T) { }}, }} { t.Run(tc.name, func(t *testing.T) { - d, err := dag.Build(v1beta1.PipelineTaskList(tc.dagTasks), v1beta1.PipelineTaskList(tc.dagTasks).Deps()) + d, err := dag.Build(v1.PipelineTaskList(tc.dagTasks), v1.PipelineTaskList(tc.dagTasks).Deps()) if err != nil { - t.Fatalf("Unexpected error while building graph for DAG tasks %v: %v", v1beta1.PipelineTaskList{pts[0]}, err) + t.Fatalf("Unexpected error while building graph for DAG tasks %v: %v", v1.PipelineTaskList{pts[0]}, err) } - df, err := dag.Build(v1beta1.PipelineTaskList(tc.finallyTasks), map[string][]string{}) + df, err := dag.Build(v1.PipelineTaskList(tc.finallyTasks), map[string][]string{}) if err != nil { - t.Fatalf("Unexpected error while building graph for final tasks %v: %v", v1beta1.PipelineTaskList{pts[14]}, err) + t.Fatalf("Unexpected error while building graph for final tasks %v: %v", v1.PipelineTaskList{pts[14]}, err) } facts := PipelineRunFacts{ State: tc.state, @@ -2507,87 +2510,87 @@ func TestPipelineRunFacts_IsRunning(t *testing.T) { func TestPipelineRunState_GetResultsFuncs(t *testing.T) { state := PipelineRunState{{ TaskRunNames: []string{"successful-task-with-results"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "successful-task-with-results-1", }, - TaskRuns: []*v1beta1.TaskRun{{ - Status: v1beta1.TaskRunStatus{ + TaskRuns: []*v1.TaskRun{{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, }}}, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("oof"), + Value: *v1.NewStructuredValues("oof"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("rab"), + Value: *v1.NewStructuredValues("rab"), }}, }, }, }}, }, { TaskRunNames: []string{"successful-task-without-results"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "successful-task-without-results-1", }, - TaskRuns: []*v1beta1.TaskRun{{ - Status: v1beta1.TaskRunStatus{ + TaskRuns: []*v1.TaskRun{{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, }}}, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{}, + TaskRunStatusFields: v1.TaskRunStatusFields{}, }, }}, }, { TaskRunNames: []string{"failed-task"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "failed-task-1", }, - TaskRuns: []*v1beta1.TaskRun{{ - Status: v1beta1.TaskRunStatus{ + TaskRuns: []*v1.TaskRun{{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, }}}, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{{ Name: "fail-foo", - Value: *v1beta1.NewStructuredValues("fail-oof"), + Value: *v1.NewStructuredValues("fail-oof"), }}, }, }, }}, }, { TaskRunNames: []string{"incomplete-task"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "incomplete-task-1", }, - TaskRuns: []*v1beta1.TaskRun{{ - Status: v1beta1.TaskRunStatus{ + TaskRuns: []*v1.TaskRun{{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionUnknown, }}}, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{{ Name: "unknown-foo", - Value: *v1beta1.NewStructuredValues("unknown-oof"), + Value: *v1.NewStructuredValues("unknown-oof"), }}, }, }, }}, }, { TaskRunNames: []string{"nil-taskrun"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "nil-taskrun-1", }, }, { CustomRunNames: []string{"successful-run-with-results"}, CustomTask: true, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "successful-run-with-results-1", }, CustomRuns: []*v1beta1.CustomRun{ @@ -2611,7 +2614,7 @@ func TestPipelineRunState_GetResultsFuncs(t *testing.T) { }, { CustomRunNames: []string{"successful-run-without-results"}, CustomTask: true, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "successful-run-without-results-1", }, CustomRuns: []*v1beta1.CustomRun{ @@ -2626,7 +2629,7 @@ func TestPipelineRunState_GetResultsFuncs(t *testing.T) { }}, }, { CustomRunNames: []string{"failed-run"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "failed-run-1", }, CustomRuns: []*v1beta1.CustomRun{ @@ -2646,7 +2649,7 @@ func TestPipelineRunState_GetResultsFuncs(t *testing.T) { }, }, { CustomRunNames: []string{"incomplete-run"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "incomplete-run-1", }, CustomRuns: []*v1beta1.CustomRun{ @@ -2667,7 +2670,7 @@ func TestPipelineRunState_GetResultsFuncs(t *testing.T) { }, { CustomRunNames: []string{"nil-run"}, CustomTask: true, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "nil-run-1", }, }, { @@ -2677,60 +2680,60 @@ func TestPipelineRunState_GetResultsFuncs(t *testing.T) { "matrixed-task-run-2", "matrixed-task-run-3", }, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "matrixed-task", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "task", Kind: "Task", - APIVersion: "v1beta1", + APIVersion: "v1", }, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "foobar", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, }, { Name: "quxbaz", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, }}}, }, - TaskRuns: []*v1beta1.TaskRun{{ - TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1beta1"}, + TaskRuns: []*v1.TaskRun{{ + TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1"}, ObjectMeta: metav1.ObjectMeta{Name: "matrixed-task-run-0"}, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, - Reason: v1beta1.TaskRunReasonSuccessful.String(), + Reason: v1.TaskRunReasonSuccessful.String(), }}}, }, }, { - TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1beta1"}, + TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1"}, ObjectMeta: metav1.ObjectMeta{Name: "matrixed-task-run-1"}, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, - Reason: v1beta1.TaskRunReasonSuccessful.String(), + Reason: v1.TaskRunReasonSuccessful.String(), }}}, }, }, { - TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1beta1"}, + TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1"}, ObjectMeta: metav1.ObjectMeta{Name: "matrixed-task-run-2"}, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, - Reason: v1beta1.TaskRunReasonSuccessful.String(), + Reason: v1.TaskRunReasonSuccessful.String(), }}}, }, }, { - TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1beta1"}, + TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1"}, ObjectMeta: metav1.ObjectMeta{Name: "matrixed-task-run-3"}, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, - Reason: v1beta1.TaskRunReasonSuccessful.String(), + Reason: v1.TaskRunReasonSuccessful.String(), }}}, }, }}, @@ -2741,19 +2744,19 @@ func TestPipelineRunState_GetResultsFuncs(t *testing.T) { "matrixed-run-2", "matrixed-run-3", }, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "matrixed-task", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Kind: "Example", APIVersion: "example.dev/v0", }, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "foobar", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, }, { Name: "quxbaz", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, }}}, }, CustomRuns: []*v1beta1.CustomRun{ @@ -2833,13 +2836,13 @@ func TestPipelineRunState_GetResultsFuncs(t *testing.T) { }, }} - expectedTaskResults := map[string][]v1beta1.TaskRunResult{ + expectedTaskResults := map[string][]v1.TaskRunResult{ "successful-task-with-results-1": {{ Name: "foo", - Value: *v1beta1.NewStructuredValues("oof"), + Value: *v1.NewStructuredValues("oof"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("rab"), + Value: *v1.NewStructuredValues("rab"), }}, "successful-task-without-results-1": nil, } @@ -2869,7 +2872,7 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { testCases := []struct { name string state PipelineRunState - childRefs []v1beta1.ChildStatusReference + childRefs []v1.ChildStatusReference }{ { name: "no-tasks", @@ -2880,12 +2883,12 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { name: "unresolved-task", state: PipelineRunState{{ TaskRunNames: []string{"unresolved-task-run"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "unresolved-task-1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "unresolved-task", Kind: "Task", - APIVersion: "v1beta1", + APIVersion: "v1", }, }, }}, @@ -2896,9 +2899,9 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { state: PipelineRunState{{ CustomRunNames: []string{"unresolved-custom-task-run"}, CustomTask: true, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "unresolved-custom-task-1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ APIVersion: "example.dev/v0", Kind: "Example", Name: "unresolved-custom-task", @@ -2911,32 +2914,32 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { name: "single-task", state: PipelineRunState{{ TaskRunNames: []string{"single-task-run"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "single-task-1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "single-task", Kind: "Task", - APIVersion: "v1beta1", + APIVersion: "v1", }, - WhenExpressions: []v1beta1.WhenExpression{{ + When: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, }}, }, - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1beta1"}, ObjectMeta: metav1.ObjectMeta{Name: "single-task-run"}, }}, }}, - childRefs: []v1beta1.ChildStatusReference{{ + childRefs: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "TaskRun", }, Name: "single-task-run", PipelineTaskName: "single-task-1", - WhenExpressions: []v1beta1.WhenExpression{{ + WhenExpressions: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, @@ -2948,14 +2951,14 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { state: PipelineRunState{{ CustomRunNames: []string{"single-custom-task-run"}, CustomTask: true, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "single-custom-task-1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ APIVersion: "example.dev/v0", Kind: "Example", Name: "single-custom-task", }, - WhenExpressions: []v1beta1.WhenExpression{{ + When: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, @@ -2967,14 +2970,14 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { ObjectMeta: metav1.ObjectMeta{Name: "single-custom-task-run"}, }}, }}, - childRefs: []v1beta1.ChildStatusReference{{ + childRefs: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ APIVersion: "tekton.dev/v1beta1", Kind: "CustomRun", }, Name: "single-custom-task-run", PipelineTaskName: "single-custom-task-1", - WhenExpressions: []v1beta1.WhenExpression{{ + WhenExpressions: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, @@ -2985,24 +2988,24 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { name: "task-and-custom-task", state: PipelineRunState{{ TaskRunNames: []string{"single-task-run"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "single-task-1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "single-task", Kind: "Task", - APIVersion: "v1beta1", + APIVersion: "v1", }, }, - TaskRuns: []*v1beta1.TaskRun{{ - TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1beta1"}, + TaskRuns: []*v1.TaskRun{{ + TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1"}, ObjectMeta: metav1.ObjectMeta{Name: "single-task-run"}, }}, }, { CustomRunNames: []string{"single-custom-task-run"}, CustomTask: true, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "single-custom-task-1", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ APIVersion: "example.dev/v0", Kind: "Example", Name: "single-custom-task", @@ -3014,9 +3017,9 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { ObjectMeta: metav1.ObjectMeta{Name: "single-custom-task-run"}, }}, }}, - childRefs: []v1beta1.ChildStatusReference{{ + childRefs: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "TaskRun", }, Name: "single-task-run", @@ -3034,28 +3037,28 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { name: "unresolved-matrixed-task", state: PipelineRunState{{ TaskRunNames: []string{"task-run-0", "task-run-1", "task-run-2", "task-run-3"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "matrixed-task", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "task", Kind: "Task", - APIVersion: "v1beta1", + APIVersion: "v1", }, - WhenExpressions: []v1beta1.WhenExpression{{ + When: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, }}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "foobar", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, }, { Name: "quxbaz", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, }}}, }, - TaskRuns: []*v1beta1.TaskRun{nil, nil, nil, nil}, + TaskRuns: []*v1.TaskRun{nil, nil, nil, nil}, }}, childRefs: nil, }, @@ -3063,85 +3066,85 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { name: "matrixed-task", state: PipelineRunState{{ TaskRunNames: []string{"matrixed-task-run-0"}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "matrixed-task", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Name: "task", Kind: "Task", - APIVersion: "v1beta1", + APIVersion: "v1", }, - WhenExpressions: []v1beta1.WhenExpression{{ + When: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, }}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "foobar", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, }, { Name: "quxbaz", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, }}}, }, - TaskRuns: []*v1beta1.TaskRun{{ - TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1beta1"}, + TaskRuns: []*v1.TaskRun{{ + TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1"}, ObjectMeta: metav1.ObjectMeta{Name: "matrixed-task-run-0"}, }, { - TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1beta1"}, + TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1"}, ObjectMeta: metav1.ObjectMeta{Name: "matrixed-task-run-1"}, }, { - TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1beta1"}, + TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1"}, ObjectMeta: metav1.ObjectMeta{Name: "matrixed-task-run-2"}, }, { - TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1beta1"}, + TypeMeta: metav1.TypeMeta{APIVersion: "tekton.dev/v1"}, ObjectMeta: metav1.ObjectMeta{Name: "matrixed-task-run-3"}, }}, }}, - childRefs: []v1beta1.ChildStatusReference{{ + childRefs: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "TaskRun", }, Name: "matrixed-task-run-0", PipelineTaskName: "matrixed-task", - WhenExpressions: []v1beta1.WhenExpression{{ + WhenExpressions: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, }}, }, { TypeMeta: runtime.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "TaskRun", }, Name: "matrixed-task-run-1", PipelineTaskName: "matrixed-task", - WhenExpressions: []v1beta1.WhenExpression{{ + WhenExpressions: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, }}, }, { TypeMeta: runtime.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "TaskRun", }, Name: "matrixed-task-run-2", PipelineTaskName: "matrixed-task", - WhenExpressions: []v1beta1.WhenExpression{{ + WhenExpressions: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, }}, }, { TypeMeta: runtime.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "TaskRun", }, Name: "matrixed-task-run-3", PipelineTaskName: "matrixed-task", - WhenExpressions: []v1beta1.WhenExpression{{ + WhenExpressions: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, @@ -3151,24 +3154,24 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { { name: "unresolved-matrixed-custom-task", state: PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "matrixed-task", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ Kind: "Example", APIVersion: "example.dev/v0", }, - WhenExpressions: []v1beta1.WhenExpression{{ + When: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, }}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "foobar", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, }, { Name: "quxbaz", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, }}}, }, CustomTask: true, @@ -3178,24 +3181,24 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { { name: "matrixed-custom-task", state: PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "matrixed-task", - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ APIVersion: "example.dev/v0", Kind: "Example", }, - WhenExpressions: []v1beta1.WhenExpression{{ + When: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, }}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "foobar", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, }, { Name: "quxbaz", - Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, + Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"qux", "baz"}}, }}}, }, CustomTask: true, @@ -3206,14 +3209,14 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { customRunWithName("matrixed-run-3"), }, }}, - childRefs: []v1beta1.ChildStatusReference{{ + childRefs: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ APIVersion: "tekton.dev/v1beta1", Kind: "CustomRun", }, Name: "matrixed-run-0", PipelineTaskName: "matrixed-task", - WhenExpressions: []v1beta1.WhenExpression{{ + WhenExpressions: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, @@ -3225,7 +3228,7 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { }, Name: "matrixed-run-1", PipelineTaskName: "matrixed-task", - WhenExpressions: []v1beta1.WhenExpression{{ + WhenExpressions: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, @@ -3237,7 +3240,7 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { }, Name: "matrixed-run-2", PipelineTaskName: "matrixed-task", - WhenExpressions: []v1beta1.WhenExpression{{ + WhenExpressions: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, @@ -3249,7 +3252,7 @@ func TestPipelineRunState_GetChildReferences(t *testing.T) { }, Name: "matrixed-run-3", PipelineTaskName: "matrixed-task", - WhenExpressions: []v1beta1.WhenExpression{{ + WhenExpressions: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{"foo", "bar"}, diff --git a/pkg/reconciler/pipelinerun/resources/resultrefresolution.go b/pkg/reconciler/pipelinerun/resources/resultrefresolution.go index 3d3c3c58263..c7b6f7e693b 100644 --- a/pkg/reconciler/pipelinerun/resources/resultrefresolution.go +++ b/pkg/reconciler/pipelinerun/resources/resultrefresolution.go @@ -20,6 +20,7 @@ import ( "fmt" "sort" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" ) @@ -30,8 +31,8 @@ type ResolvedResultRefs []*ResolvedResultRef // If the value is from a Result, then the ResultReference will be populated to point to the ResultReference // which resulted in the value type ResolvedResultRef struct { - Value v1beta1.ResultValue - ResultReference v1beta1.ResultRef + Value v1.ResultValue + ResultReference v1.ResultRef FromTaskRun string FromRun string } @@ -61,7 +62,7 @@ func ResolveResultRefs(pipelineRunState PipelineRunState, targets PipelineRunSta // validateArrayResultsIndex checks if the result array indexing reference is out of bound of the array size func validateArrayResultsIndex(allResolvedResultRefs ResolvedResultRefs) (ResolvedResultRefs, string, error) { for _, r := range allResolvedResultRefs { - if r.Value.Type == v1beta1.ParamTypeArray { + if r.Value.Type == v1.ParamTypeArray { if r.ResultReference.ResultsIndex >= len(r.Value.ArrayVal) { return nil, "", fmt.Errorf("Array Result Index %d for Task %s Result %s is out of bound of size %d", r.ResultReference.ResultsIndex, r.ResultReference.PipelineTask, r.ResultReference.Result, len(r.Value.ArrayVal)) } @@ -74,14 +75,14 @@ func removeDup(refs ResolvedResultRefs) ResolvedResultRefs { if refs == nil { return nil } - resolvedResultRefByRef := make(map[v1beta1.ResultRef]*ResolvedResultRef, len(refs)) + resolvedResultRefByRef := make(map[v1.ResultRef]*ResolvedResultRef, len(refs)) for _, resolvedResultRef := range refs { resolvedResultRefByRef[resolvedResultRef.ResultReference] = resolvedResultRef } deduped := make([]*ResolvedResultRef, 0, len(resolvedResultRefByRef)) // Sort the resulting keys to produce a deterministic ordering. - order := make([]v1beta1.ResultRef, 0, len(refs)) + order := make([]v1.ResultRef, 0, len(refs)) for key := range resolvedResultRefByRef { order = append(order, key) } @@ -107,7 +108,7 @@ func removeDup(refs ResolvedResultRefs) ResolvedResultRefs { // then a nil list and error is returned instead. func convertToResultRefs(pipelineRunState PipelineRunState, target *ResolvedPipelineTask) (ResolvedResultRefs, string, error) { var resolvedResultRefs ResolvedResultRefs - for _, ref := range v1beta1.PipelineTaskResultRefs(target.PipelineTask) { + for _, ref := range v1.PipelineTaskResultRefs(target.PipelineTask) { resolved, pt, err := resolveResultRef(pipelineRunState, ref) if err != nil { return nil, pt, err @@ -117,7 +118,7 @@ func convertToResultRefs(pipelineRunState PipelineRunState, target *ResolvedPipe return resolvedResultRefs, "", nil } -func resolveResultRef(pipelineState PipelineRunState, resultRef *v1beta1.ResultRef) (*ResolvedResultRef, string, error) { +func resolveResultRef(pipelineState PipelineRunState, resultRef *v1.ResultRef) (*ResolvedResultRef, string, error) { referencedPipelineTask := pipelineState.ToMap()[resultRef.PipelineTask] if referencedPipelineTask == nil { return nil, resultRef.PipelineTask, fmt.Errorf("could not find task %q referenced by result", resultRef.PipelineTask) @@ -127,7 +128,7 @@ func resolveResultRef(pipelineState PipelineRunState, resultRef *v1beta1.ResultR } var runName, runValue, taskRunName string - var resultValue v1beta1.ResultValue + var resultValue v1.ResultValue var err error if referencedPipelineTask.IsCustomTask() { if len(referencedPipelineTask.CustomRuns) != 1 { @@ -136,7 +137,7 @@ func resolveResultRef(pipelineState PipelineRunState, resultRef *v1beta1.ResultR customRun := referencedPipelineTask.CustomRuns[0] runName = customRun.GetObjectMeta().GetName() runValue, err = findRunResultForParam(customRun, resultRef) - resultValue = *v1beta1.NewStructuredValues(runValue) + resultValue = *v1.NewStructuredValues(runValue) if err != nil { return nil, resultRef.PipelineTask, err } @@ -161,7 +162,7 @@ func resolveResultRef(pipelineState PipelineRunState, resultRef *v1beta1.ResultR }, "", nil } -func findRunResultForParam(customRun *v1beta1.CustomRun, reference *v1beta1.ResultRef) (string, error) { +func findRunResultForParam(customRun *v1beta1.CustomRun, reference *v1.ResultRef) (string, error) { for _, result := range customRun.Status.Results { if result.Name == reference.Result { return result.Value, nil @@ -170,34 +171,34 @@ func findRunResultForParam(customRun *v1beta1.CustomRun, reference *v1beta1.Resu return "", fmt.Errorf("Could not find result with name %s for task %s", reference.Result, reference.PipelineTask) } -func findTaskResultForParam(taskRun *v1beta1.TaskRun, reference *v1beta1.ResultRef) (v1beta1.ResultValue, error) { - results := taskRun.Status.TaskRunStatusFields.TaskRunResults +func findTaskResultForParam(taskRun *v1.TaskRun, reference *v1.ResultRef) (v1.ResultValue, error) { + results := taskRun.Status.TaskRunStatusFields.Results for _, result := range results { if result.Name == reference.Result { return result.Value, nil } } - return v1beta1.ResultValue{}, fmt.Errorf("Could not find result with name %s for task %s", reference.Result, reference.PipelineTask) + return v1.ResultValue{}, fmt.Errorf("Could not find result with name %s for task %s", reference.Result, reference.PipelineTask) } func (rs ResolvedResultRefs) getStringReplacements() map[string]string { replacements := map[string]string{} for _, r := range rs { switch r.Value.Type { - case v1beta1.ParamTypeArray: + case v1.ParamTypeArray: for i := 0; i < len(r.Value.ArrayVal); i++ { for _, target := range r.getReplaceTargetfromArrayIndex(i) { replacements[target] = r.Value.ArrayVal[i] } } - case v1beta1.ParamTypeObject: + case v1.ParamTypeObject: for key, element := range r.Value.ObjectVal { for _, target := range r.getReplaceTargetfromObjectKey(key) { replacements[target] = element } } - case v1beta1.ParamTypeString: + case v1.ParamTypeString: fallthrough default: for _, target := range r.getReplaceTarget() { @@ -211,7 +212,7 @@ func (rs ResolvedResultRefs) getStringReplacements() map[string]string { func (rs ResolvedResultRefs) getArrayReplacements() map[string][]string { replacements := map[string][]string{} for _, r := range rs { - if r.Value.Type == v1beta1.ParamType(v1beta1.ResultsTypeArray) { + if r.Value.Type == v1.ParamType(v1.ResultsTypeArray) { for _, target := range r.getReplaceTarget() { replacements[target] = r.Value.ArrayVal } @@ -223,7 +224,7 @@ func (rs ResolvedResultRefs) getArrayReplacements() map[string][]string { func (rs ResolvedResultRefs) getObjectReplacements() map[string]map[string]string { replacements := map[string]map[string]string{} for _, r := range rs { - if r.Value.Type == v1beta1.ParamType(v1beta1.ResultsTypeObject) { + if r.Value.Type == v1.ParamType(v1.ResultsTypeObject) { for _, target := range r.getReplaceTarget() { replacements[target] = r.Value.ObjectVal } @@ -234,24 +235,24 @@ func (rs ResolvedResultRefs) getObjectReplacements() map[string]map[string]strin func (r *ResolvedResultRef) getReplaceTarget() []string { return []string{ - fmt.Sprintf("%s.%s.%s.%s", v1beta1.ResultTaskPart, r.ResultReference.PipelineTask, v1beta1.ResultResultPart, r.ResultReference.Result), - fmt.Sprintf("%s.%s.%s[%q]", v1beta1.ResultTaskPart, r.ResultReference.PipelineTask, v1beta1.ResultResultPart, r.ResultReference.Result), - fmt.Sprintf("%s.%s.%s['%s']", v1beta1.ResultTaskPart, r.ResultReference.PipelineTask, v1beta1.ResultResultPart, r.ResultReference.Result), + fmt.Sprintf("%s.%s.%s.%s", v1.ResultTaskPart, r.ResultReference.PipelineTask, v1.ResultResultPart, r.ResultReference.Result), + fmt.Sprintf("%s.%s.%s[%q]", v1.ResultTaskPart, r.ResultReference.PipelineTask, v1.ResultResultPart, r.ResultReference.Result), + fmt.Sprintf("%s.%s.%s['%s']", v1.ResultTaskPart, r.ResultReference.PipelineTask, v1.ResultResultPart, r.ResultReference.Result), } } func (r *ResolvedResultRef) getReplaceTargetfromArrayIndex(idx int) []string { return []string{ - fmt.Sprintf("%s.%s.%s.%s[%d]", v1beta1.ResultTaskPart, r.ResultReference.PipelineTask, v1beta1.ResultResultPart, r.ResultReference.Result, idx), - fmt.Sprintf("%s.%s.%s[%q][%d]", v1beta1.ResultTaskPart, r.ResultReference.PipelineTask, v1beta1.ResultResultPart, r.ResultReference.Result, idx), - fmt.Sprintf("%s.%s.%s['%s'][%d]", v1beta1.ResultTaskPart, r.ResultReference.PipelineTask, v1beta1.ResultResultPart, r.ResultReference.Result, idx), + fmt.Sprintf("%s.%s.%s.%s[%d]", v1.ResultTaskPart, r.ResultReference.PipelineTask, v1.ResultResultPart, r.ResultReference.Result, idx), + fmt.Sprintf("%s.%s.%s[%q][%d]", v1.ResultTaskPart, r.ResultReference.PipelineTask, v1.ResultResultPart, r.ResultReference.Result, idx), + fmt.Sprintf("%s.%s.%s['%s'][%d]", v1.ResultTaskPart, r.ResultReference.PipelineTask, v1.ResultResultPart, r.ResultReference.Result, idx), } } func (r *ResolvedResultRef) getReplaceTargetfromObjectKey(key string) []string { return []string{ - fmt.Sprintf("%s.%s.%s.%s.%s", v1beta1.ResultTaskPart, r.ResultReference.PipelineTask, v1beta1.ResultResultPart, r.ResultReference.Result, key), - fmt.Sprintf("%s.%s.%s[%q][%s]", v1beta1.ResultTaskPart, r.ResultReference.PipelineTask, v1beta1.ResultResultPart, r.ResultReference.Result, key), - fmt.Sprintf("%s.%s.%s['%s'][%s]", v1beta1.ResultTaskPart, r.ResultReference.PipelineTask, v1beta1.ResultResultPart, r.ResultReference.Result, key), + fmt.Sprintf("%s.%s.%s.%s.%s", v1.ResultTaskPart, r.ResultReference.PipelineTask, v1.ResultResultPart, r.ResultReference.Result, key), + fmt.Sprintf("%s.%s.%s[%q][%s]", v1.ResultTaskPart, r.ResultReference.PipelineTask, v1.ResultResultPart, r.ResultReference.Result, key), + fmt.Sprintf("%s.%s.%s['%s'][%s]", v1.ResultTaskPart, r.ResultReference.PipelineTask, v1.ResultResultPart, r.ResultReference.Result, key), } } diff --git a/pkg/reconciler/pipelinerun/resources/resultrefresolution_test.go b/pkg/reconciler/pipelinerun/resources/resultrefresolution_test.go index 84d0a8a417d..7792c9218b3 100644 --- a/pkg/reconciler/pipelinerun/resources/resultrefresolution_test.go +++ b/pkg/reconciler/pipelinerun/resources/resultrefresolution_test.go @@ -22,6 +22,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/test/diff" corev1 "k8s.io/api/core/v1" @@ -44,62 +45,62 @@ var ( var pipelineRunState = PipelineRunState{{ TaskRunNames: []string{"aTaskRun"}, - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "aTaskRun", }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{successCondition}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{{ Name: "aResult", - Value: *v1beta1.NewStructuredValues("aResultValue"), + Value: *v1.NewStructuredValues("aResultValue"), }}, }, }, }}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "aTask", - TaskRef: &v1beta1.TaskRef{Name: "aTask"}, + TaskRef: &v1.TaskRef{Name: "aTask"}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: []v1.Param{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("$(tasks.aTask.results.aResult)"), + Value: *v1.NewStructuredValues("$(tasks.aTask.results.aResult)"), }}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{{ Input: "$(tasks.aTask.results.aResult)", Operator: selection.In, Values: []string{"$(tasks.aTask.results.aResult)"}, }}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - WhenExpressions: []v1beta1.WhenExpression{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + When: []v1.WhenExpression{{ Input: "$(tasks.aTask.results.missingResult)", Operator: selection.In, Values: []string{"$(tasks.aTask.results.missingResult)"}, }}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: []v1.Param{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("$(tasks.aTask.results.missingResult)"), + Value: *v1.NewStructuredValues("$(tasks.aTask.results.missingResult)"), }}, }, }, { @@ -120,114 +121,114 @@ var pipelineRunState = PipelineRunState{{ }, }, }}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "aCustomPipelineTask", - TaskRef: &v1beta1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example", Name: "aTask"}, + TaskRef: &v1.TaskRef{APIVersion: "example.dev/v0", Kind: "Example", Name: "aTask"}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "bTask", - TaskRef: &v1beta1.TaskRef{Name: "bTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "bTask"}, + Params: []v1.Param{{ Name: "bParam", - Value: *v1beta1.NewStructuredValues("$(tasks.aCustomPipelineTask.results.aResult)"), + Value: *v1.NewStructuredValues("$(tasks.aCustomPipelineTask.results.aResult)"), }}, }, }, { TaskRunNames: []string{"cTaskRun"}, - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "cTaskRun", }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{successCondition}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{{ Name: "cResult", - Value: *v1beta1.NewStructuredValues("arrayResultOne", "arrayResultTwo"), + Value: *v1.NewStructuredValues("arrayResultOne", "arrayResultTwo"), }}, }, }, }}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "cTask", - TaskRef: &v1beta1.TaskRef{Name: "cTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "cTask"}, + Params: []v1.Param{{ Name: "cParam", - Value: *v1beta1.NewStructuredValues("$(tasks.cTask.results.cResult[1])"), + Value: *v1.NewStructuredValues("$(tasks.cTask.results.cResult[1])"), }}, }, }, { TaskRunNames: []string{"dTaskRun"}, - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "dTaskRun", }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{successCondition}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{{ Name: "dResult", - Value: *v1beta1.NewStructuredValues("arrayResultOne", "arrayResultTwo"), + Value: *v1.NewStructuredValues("arrayResultOne", "arrayResultTwo"), }}, }, }, }}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "dTask", - TaskRef: &v1beta1.TaskRef{Name: "dTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "dTask"}, + Params: []v1.Param{{ Name: "dParam", - Value: *v1beta1.NewStructuredValues("$(tasks.dTask.results.dResult[3])"), + Value: *v1.NewStructuredValues("$(tasks.dTask.results.dResult[3])"), }}, }, }, { TaskRunNames: []string{"eTaskRun"}, - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{Name: "eTaskRun"}, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{failedCondition}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{{ Name: "eResult", - Value: *v1beta1.NewStructuredValues("eResultValue"), + Value: *v1.NewStructuredValues("eResultValue"), }}, }, }, }}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "eTask", - TaskRef: &v1beta1.TaskRef{Name: "eTask"}, + TaskRef: &v1.TaskRef{Name: "eTask"}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "fTask", - TaskRef: &v1beta1.TaskRef{Name: "fTask"}, - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "fTask"}, + Params: v1.Params{{ Name: "fParam", - Value: *v1beta1.NewStructuredValues("$(tasks.eTask.results.eResult)"), + Value: *v1.NewStructuredValues("$(tasks.eTask.results.eResult)"), }}, }, }, { TaskRunNames: []string{"xTaskRun"}, - TaskRuns: []*v1beta1.TaskRun{{ + TaskRuns: []*v1.TaskRun{{ ObjectMeta: metav1.ObjectMeta{ Name: "xTaskRun", }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{successCondition}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{{ Name: "xResult", - Value: *v1beta1.NewStructuredValues("arrayResultOne", "arrayResultTwo"), + Value: *v1.NewStructuredValues("arrayResultOne", "arrayResultTwo"), }}, }, }, @@ -235,28 +236,28 @@ var pipelineRunState = PipelineRunState{{ ObjectMeta: metav1.ObjectMeta{ Name: "yTaskRun", }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{successCondition}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{{ Name: "yResult", - Value: *v1beta1.NewStructuredValues("arrayResultOne", "arrayResultTwo"), + Value: *v1.NewStructuredValues("arrayResultOne", "arrayResultTwo"), }}, }, }, }}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "xTask", - TaskRef: &v1beta1.TaskRef{Name: "xTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "xTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "xParam", - Value: *v1beta1.NewStructuredValues("$(tasks.xTask.results.xResult[*])"), + Value: *v1.NewStructuredValues("$(tasks.xTask.results.xResult[*])"), }, { Name: "yParam", - Value: *v1beta1.NewStructuredValues("$(tasks.yTask.results.yResult[*])"), + Value: *v1.NewStructuredValues("$(tasks.yTask.results.yResult[*])"), }}, }, }, @@ -291,16 +292,16 @@ var pipelineRunState = PipelineRunState{{ }, }, }}, - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "xTask", - TaskRef: &v1beta1.TaskRef{Name: "xTask"}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + TaskRef: &v1.TaskRef{Name: "xTask"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "xParam", - Value: *v1beta1.NewStructuredValues("$(tasks.xCustomPipelineTask.results.xResult[*])"), + Value: *v1.NewStructuredValues("$(tasks.xCustomPipelineTask.results.xResult[*])"), }, { Name: "yParam", - Value: *v1beta1.NewStructuredValues("$(tasks.yCustomPipelineTask.results.yResult[*])"), + Value: *v1.NewStructuredValues("$(tasks.yCustomPipelineTask.results.yResult[*])"), }}, }, }, @@ -321,8 +322,8 @@ func TestResolveResultRefs(t *testing.T) { pipelineRunState[1], }, want: ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, @@ -336,8 +337,8 @@ func TestResolveResultRefs(t *testing.T) { pipelineRunState[7], }, want: ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("arrayResultOne", "arrayResultTwo"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("arrayResultOne", "arrayResultTwo"), + ResultReference: v1.ResultRef{ PipelineTask: "cTask", Result: "cResult", ResultsIndex: 1, @@ -378,8 +379,8 @@ func TestResolveResultRefs(t *testing.T) { pipelineRunState[2], }, want: ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, @@ -419,8 +420,8 @@ func TestResolveResultRefs(t *testing.T) { pipelineRunState[6], }, want: ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aCustomPipelineTask", Result: "aResult", }, @@ -434,8 +435,8 @@ func TestResolveResultRefs(t *testing.T) { pipelineRunState[10], }, want: ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("eResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("eResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "eTask", Result: "eResult", }, @@ -471,8 +472,8 @@ func TestResolveResultRef(t *testing.T) { pipelineRunState: pipelineRunState, target: pipelineRunState[1], want: ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, @@ -484,8 +485,8 @@ func TestResolveResultRef(t *testing.T) { pipelineRunState: pipelineRunState, target: pipelineRunState[2], want: ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aTask", Result: "aResult", }, @@ -517,8 +518,8 @@ func TestResolveResultRef(t *testing.T) { pipelineRunState: pipelineRunState, target: pipelineRunState[6], want: ResolvedResultRefs{{ - Value: *v1beta1.NewStructuredValues("aResultValue"), - ResultReference: v1beta1.ResultRef{ + Value: *v1.NewStructuredValues("aResultValue"), + ResultReference: v1.ResultRef{ PipelineTask: "aCustomPipelineTask", Result: "aResult", }, diff --git a/pkg/reconciler/pipelinerun/resources/validate_dependencies.go b/pkg/reconciler/pipelinerun/resources/validate_dependencies.go index 11385b1e15e..81b845e06c8 100644 --- a/pkg/reconciler/pipelinerun/resources/validate_dependencies.go +++ b/pkg/reconciler/pipelinerun/resources/validate_dependencies.go @@ -19,7 +19,7 @@ package resources import ( "fmt" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "k8s.io/apimachinery/pkg/util/sets" ) @@ -30,7 +30,7 @@ import ( func ValidatePipelineTaskResults(state PipelineRunState) error { ptMap := state.ToMap() for _, rpt := range state { - for _, ref := range v1beta1.PipelineTaskResultRefs(rpt.PipelineTask) { + for _, ref := range v1.PipelineTaskResultRefs(rpt.PipelineTask) { if err := validateResultRef(ref, ptMap); err != nil { return fmt.Errorf("invalid result reference in pipeline task %q: %w", rpt.PipelineTask.Name, err) } @@ -43,11 +43,11 @@ func ValidatePipelineTaskResults(state PipelineRunState) error { // resolve to valid results. This prevents a situation where a PipelineResult references // a result in a PipelineTask that doesn't exist or where the user has either misspelled // a result name or the referenced task just doesn't return a result with that name. -func ValidatePipelineResults(ps *v1beta1.PipelineSpec, state PipelineRunState) error { +func ValidatePipelineResults(ps *v1.PipelineSpec, state PipelineRunState) error { ptMap := state.ToMap() for _, result := range ps.Results { - expressions, _ := v1beta1.GetVarSubstitutionExpressionsForPipelineResult(result) - refs := v1beta1.NewResultRefs(expressions) + expressions, _ := v1.GetVarSubstitutionExpressionsForPipelineResult(result) + refs := v1.NewResultRefs(expressions) for _, ref := range refs { if err := validateResultRef(ref, ptMap); err != nil { return fmt.Errorf("invalid pipeline result %q: %w", result.Name, err) @@ -60,7 +60,7 @@ func ValidatePipelineResults(ps *v1beta1.PipelineSpec, state PipelineRunState) e // validateResultRef takes a ResultRef and searches for the result using the given // map of PipelineTask name to ResolvedPipelineTask. If the ResultRef does not point // to a pipeline task or named result then an error is returned. -func validateResultRef(ref *v1beta1.ResultRef, ptMap map[string]*ResolvedPipelineTask) error { +func validateResultRef(ref *v1.ResultRef, ptMap map[string]*ResolvedPipelineTask) error { if _, ok := ptMap[ref.PipelineTask]; !ok { return fmt.Errorf("referenced pipeline task %q does not exist", ref.PipelineTask) } @@ -90,7 +90,7 @@ func validateResultRef(ref *v1beta1.ResultRef, ptMap map[string]*ResolvedPipelin // marked as optional are also marked optional in the Tasks that receive them. This // prevents a situation where a Task requires a workspace but a Pipeline does not offer // the same guarantee the workspace will be provided at runtime. -func ValidateOptionalWorkspaces(pipelineWorkspaces []v1beta1.PipelineWorkspaceDeclaration, state PipelineRunState) error { +func ValidateOptionalWorkspaces(pipelineWorkspaces []v1.PipelineWorkspaceDeclaration, state PipelineRunState) error { optionalWorkspaces := sets.NewString() for _, ws := range pipelineWorkspaces { if ws.Optional { diff --git a/pkg/reconciler/pipelinerun/resources/validate_dependencies_test.go b/pkg/reconciler/pipelinerun/resources/validate_dependencies_test.go index 866ae805a85..5b57a634822 100644 --- a/pkg/reconciler/pipelinerun/resources/validate_dependencies_test.go +++ b/pkg/reconciler/pipelinerun/resources/validate_dependencies_test.go @@ -20,7 +20,7 @@ import ( "strings" "testing" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" prresources "github.com/tektoncd/pipeline/pkg/reconciler/pipelinerun/resources" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" "k8s.io/apimachinery/pkg/selection" @@ -35,75 +35,75 @@ func TestValidatePipelineTaskResults_ValidStates(t *testing.T) { }{{ desc: "no variables used", state: prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "p1", - Value: *v1beta1.NewStructuredValues("foo"), + Value: *v1.NewStructuredValues("foo"), }}, }, }}, }, { desc: "correct use of task and result names", state: prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", }, ResolvedTask: &resources.ResolvedTask{ TaskName: "t", - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "result", }}, }, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt2", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "p", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.result)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.result)"), }}, }, }}, }, { desc: "correct use of task and result names in matrix", state: prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", }, ResolvedTask: &resources.ResolvedTask{ TaskName: "t", - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "result", }}, }, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt2", - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: []v1.Param{{ Name: "p", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.result)", "foo"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.result)", "foo"), }}}, }, }}, }, { desc: "custom task results are not validated", state: prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", }, CustomTask: true, CustomRunNames: []string{"foo-run"}, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt2", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "p", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.a-dynamic-custom-task-result)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.a-dynamic-custom-task-result)"), }}, }, }}, @@ -126,31 +126,31 @@ func TestValidatePipelineTaskResults_IncorrectTaskName(t *testing.T) { }{{ desc: "invalid result reference in param", state: prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "p1", - Value: *v1beta1.NewStructuredValues(missingPipelineTaskVariable), + Value: *v1.NewStructuredValues(missingPipelineTaskVariable), }}, }, }}, }, { desc: "invalid result reference in matrix", state: prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "p1", - Value: *v1beta1.NewStructuredValues(missingPipelineTaskVariable, "foo"), + Value: *v1.NewStructuredValues(missingPipelineTaskVariable, "foo"), }}, }, }}, }, { desc: "invalid result reference in when expression", state: prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", - WhenExpressions: []v1beta1.WhenExpression{{ + When: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{ @@ -173,13 +173,13 @@ func TestValidatePipelineTaskResults_IncorrectTaskName(t *testing.T) { // a misnamed Result is correctly caught by the validatePipelineTaskResults func. func TestValidatePipelineTaskResults_IncorrectResultName(t *testing.T) { pt1 := &prresources.ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", }, ResolvedTask: &resources.ResolvedTask{ TaskName: "t", - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "not-the-result-youre-looking-for", }}, }, @@ -191,32 +191,32 @@ func TestValidatePipelineTaskResults_IncorrectResultName(t *testing.T) { }{{ desc: "invalid result reference in param", state: prresources.PipelineRunState{pt1, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt2", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "p1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.result1)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.result1)"), }}, }, }}, }, { desc: "invalid result reference in matrix", state: prresources.PipelineRunState{pt1, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt2", - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: []v1.Param{{ Name: "p1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.result1)", "$(tasks.pt1.results.result2)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.result1)", "$(tasks.pt1.results.result2)"), }}}, }, }}, }, { desc: "invalid result reference in when expression", state: prresources.PipelineRunState{pt1, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt2", - WhenExpressions: []v1beta1.WhenExpression{{ + When: []v1.WhenExpression{{ Input: "foo", Operator: selection.In, Values: []string{ @@ -239,7 +239,7 @@ func TestValidatePipelineTaskResults_IncorrectResultName(t *testing.T) { // with a name but no spec results in a validation error being returned. func TestValidatePipelineTaskResults_MissingTaskSpec(t *testing.T) { pt1 := &prresources.ResolvedPipelineTask{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", }, ResolvedTask: &resources.ResolvedTask{ @@ -248,20 +248,20 @@ func TestValidatePipelineTaskResults_MissingTaskSpec(t *testing.T) { }, } state := prresources.PipelineRunState{pt1, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt2", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "p1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.result1)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.result1)"), }}, }, }, { - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt3", - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + Matrix: &v1.Matrix{ + Params: []v1.Param{{ Name: "p1", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.result1)", "$(tasks.pt1.results.result2)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.result1)", "$(tasks.pt1.results.result2)"), }}}, }, }} @@ -276,33 +276,33 @@ func TestValidatePipelineTaskResults_MissingTaskSpec(t *testing.T) { func TestValidatePipelineResults_ValidStates(t *testing.T) { for _, tc := range []struct { desc string - spec *v1beta1.PipelineSpec + spec *v1.PipelineSpec state prresources.PipelineRunState }{{ desc: "no result variables", - spec: &v1beta1.PipelineSpec{ - Results: []v1beta1.PipelineResult{{ + spec: &v1.PipelineSpec{ + Results: []v1.PipelineResult{{ Name: "foo-result", - Value: *v1beta1.NewStructuredValues("just a text pipeline result"), + Value: *v1.NewStructuredValues("just a text pipeline result"), }}, }, state: nil, }, { desc: "correct use of task and result names", - spec: &v1beta1.PipelineSpec{ - Results: []v1beta1.PipelineResult{{ + spec: &v1.PipelineSpec{ + Results: []v1.PipelineResult{{ Name: "foo-result", - Value: *v1beta1.NewStructuredValues("test $(tasks.pt1.results.result1) 123"), + Value: *v1.NewStructuredValues("test $(tasks.pt1.results.result1) 123"), }}, }, state: prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", }, ResolvedTask: &resources.ResolvedTask{ TaskName: "t", - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "result1", }}, }, @@ -320,10 +320,10 @@ func TestValidatePipelineResults_ValidStates(t *testing.T) { // TestValidatePipelineResults tests that a result variable used in a PipelineResult // with a misnamed PipelineTask is correctly caught by the validatePipelineResults func. func TestValidatePipelineResults_IncorrectTaskName(t *testing.T) { - spec := &v1beta1.PipelineSpec{ - Results: []v1beta1.PipelineResult{{ + spec := &v1.PipelineSpec{ + Results: []v1.PipelineResult{{ Name: "foo-result", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.result1)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.result1)"), }}, } state := prresources.PipelineRunState{} @@ -336,20 +336,20 @@ func TestValidatePipelineResults_IncorrectTaskName(t *testing.T) { // TestValidatePipelineResults tests that a result variable used in a PipelineResult // with a misnamed Result is correctly caught by the validatePipelineResults func. func TestValidatePipelineResults_IncorrectResultName(t *testing.T) { - spec := &v1beta1.PipelineSpec{ - Results: []v1beta1.PipelineResult{{ + spec := &v1.PipelineSpec{ + Results: []v1.PipelineResult{{ Name: "foo-result", - Value: *v1beta1.NewStructuredValues("$(tasks.pt1.results.result1)"), + Value: *v1.NewStructuredValues("$(tasks.pt1.results.result1)"), }}, } state := prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", }, ResolvedTask: &resources.ResolvedTask{ TaskName: "t", - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "not-the-result-youre-looking-for", }}, }, @@ -366,18 +366,18 @@ func TestValidatePipelineResults_IncorrectResultName(t *testing.T) { func TestValidateOptionalWorkspaces_ValidStates(t *testing.T) { for _, tc := range []struct { desc string - workspaces []v1beta1.PipelineWorkspaceDeclaration + workspaces []v1.PipelineWorkspaceDeclaration state prresources.PipelineRunState }{{ desc: "no workspaces declared", workspaces: nil, state: prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", Workspaces: nil, }, ResolvedTask: &resources.ResolvedTask{ - TaskSpec: &v1beta1.TaskSpec{ + TaskSpec: &v1.TaskSpec{ Workspaces: nil, }, }, @@ -386,13 +386,13 @@ func TestValidateOptionalWorkspaces_ValidStates(t *testing.T) { desc: "pipeline can omit workspace if task workspace is optional", workspaces: nil, state: prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{}, + Workspaces: []v1.WorkspacePipelineTaskBinding{}, }, ResolvedTask: &resources.ResolvedTask{ - TaskSpec: &v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + TaskSpec: &v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "foo", Optional: true, }}, @@ -401,21 +401,21 @@ func TestValidateOptionalWorkspaces_ValidStates(t *testing.T) { }}, }, { desc: "optional pipeline workspace matches optional task workspace", - workspaces: []v1beta1.PipelineWorkspaceDeclaration{{ + workspaces: []v1.PipelineWorkspaceDeclaration{{ Name: "ws1", Optional: true, }}, state: prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{{ + Workspaces: []v1.WorkspacePipelineTaskBinding{{ Name: "foo", Workspace: "ws1", }}, }, ResolvedTask: &resources.ResolvedTask{ - TaskSpec: &v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + TaskSpec: &v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "foo", Optional: true, }}, @@ -434,21 +434,21 @@ func TestValidateOptionalWorkspaces_ValidStates(t *testing.T) { // TestValidateOptionalWorkspaces tests that an error is generated if an optional pipeline // workspace is bound to a non-optional task workspace. func TestValidateOptionalWorkspaces_NonOptionalTaskWorkspace(t *testing.T) { - workspaces := []v1beta1.PipelineWorkspaceDeclaration{{ + workspaces := []v1.PipelineWorkspaceDeclaration{{ Name: "ws1", Optional: true, }} state := prresources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "pt1", - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{{ + Workspaces: []v1.WorkspacePipelineTaskBinding{{ Name: "foo", Workspace: "ws1", }}, }, ResolvedTask: &resources.ResolvedTask{ - TaskSpec: &v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + TaskSpec: &v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "foo", Optional: false, }}, diff --git a/pkg/reconciler/pipelinerun/resources/validate_params.go b/pkg/reconciler/pipelinerun/resources/validate_params.go index ad30fd8196f..f3a4a8c7749 100644 --- a/pkg/reconciler/pipelinerun/resources/validate_params.go +++ b/pkg/reconciler/pipelinerun/resources/validate_params.go @@ -19,16 +19,16 @@ package resources import ( "fmt" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/list" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun" trresources "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" ) // ValidateParamTypesMatching validate that parameters in PipelineRun override corresponding parameters in Pipeline of the same type. -func ValidateParamTypesMatching(p *v1beta1.PipelineSpec, pr *v1beta1.PipelineRun) error { +func ValidateParamTypesMatching(p *v1.PipelineSpec, pr *v1.PipelineRun) error { // Build a map of parameter names/types declared in p. - paramTypes := make(map[string]v1beta1.ParamType) + paramTypes := make(map[string]v1.ParamType) for _, param := range p.Params { paramTypes[param.Name] = param.Type } @@ -52,7 +52,7 @@ func ValidateParamTypesMatching(p *v1beta1.PipelineSpec, pr *v1beta1.PipelineRun // ValidateRequiredParametersProvided validates that all the parameters expected by the Pipeline are provided by the PipelineRun. // Extra Parameters are allowed, the Pipeline will use the Parameters it needs and ignore the other Parameters. -func ValidateRequiredParametersProvided(pipelineParameters *v1beta1.ParamSpecs, pipelineRunParameters *v1beta1.Params) error { +func ValidateRequiredParametersProvided(pipelineParameters *v1.ParamSpecs, pipelineRunParameters *v1.Params) error { // Build a list of parameter names declared in pr. var providedParams []string for _, param := range *pipelineRunParameters { @@ -77,7 +77,7 @@ func ValidateRequiredParametersProvided(pipelineParameters *v1beta1.ParamSpecs, } // ValidateObjectParamRequiredKeys validates that the required keys of all the object parameters expected by the Pipeline are provided by the PipelineRun. -func ValidateObjectParamRequiredKeys(pipelineParameters []v1beta1.ParamSpec, pipelineRunParameters v1beta1.Params) error { +func ValidateObjectParamRequiredKeys(pipelineParameters []v1.ParamSpec, pipelineRunParameters []v1.Param) error { missings := taskrun.MissingKeysObjectParamNames(pipelineParameters, pipelineRunParameters) if len(missings) != 0 { return fmt.Errorf("PipelineRun missing object keys for parameters: %v", missings) @@ -95,7 +95,7 @@ func ValidateParameterTypesInMatrix(state PipelineRunState) error { if m.HasInclude() { for _, include := range m.Include { for _, param := range include.Params { - if param.Value.Type != v1beta1.ParamTypeString { + if param.Value.Type != v1.ParamTypeString { return fmt.Errorf("parameters of type string only are allowed, but param %s has type %s", param.Name, string(param.Value.Type)) } } @@ -103,7 +103,7 @@ func ValidateParameterTypesInMatrix(state PipelineRunState) error { } if m.HasParams() { for _, param := range m.Params { - if param.Value.Type != v1beta1.ParamTypeArray { + if param.Value.Type != v1.ParamTypeArray { return fmt.Errorf("parameters of type array only are allowed, but param %s has type %s", param.Name, string(param.Value.Type)) } } @@ -115,6 +115,6 @@ func ValidateParameterTypesInMatrix(state PipelineRunState) error { // ValidateParamArrayIndex validates if the param reference to an array param is out of bound. // error is returned when the array indexing reference is out of bound of the array param // e.g. if a param reference of $(params.array-param[2]) and the array param is of length 2. -func ValidateParamArrayIndex(ps *v1beta1.PipelineSpec, params v1beta1.Params) error { +func ValidateParamArrayIndex(ps *v1.PipelineSpec, params v1.Params) error { return trresources.ValidateOutOfBoundArrayParams(ps.Params, params, ps.GetIndexingReferencesToArrayParams()) } diff --git a/pkg/reconciler/pipelinerun/resources/validate_params_test.go b/pkg/reconciler/pipelinerun/resources/validate_params_test.go index ea7a8cba6f9..69fa1f7a1eb 100644 --- a/pkg/reconciler/pipelinerun/resources/validate_params_test.go +++ b/pkg/reconciler/pipelinerun/resources/validate_params_test.go @@ -21,7 +21,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" resources "github.com/tektoncd/pipeline/pkg/reconciler/pipelinerun/resources" "github.com/tektoncd/pipeline/test/diff" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -29,34 +29,34 @@ import ( ) func TestValidateParamTypesMatching_Valid(t *testing.T) { - stringValue := *v1beta1.NewStructuredValues("stringValue") - arrayValue := *v1beta1.NewStructuredValues("arrayValue", "arrayValue") + stringValue := *v1.NewStructuredValues("stringValue") + arrayValue := *v1.NewStructuredValues("arrayValue", "arrayValue") for _, tc := range []struct { name string description string - pp []v1beta1.ParamSpec - prp v1beta1.Params + pp []v1.ParamSpec + prp []v1.Param }{{ name: "proper param types", - pp: []v1beta1.ParamSpec{ - {Name: "correct-type-1", Type: v1beta1.ParamTypeString}, - {Name: "correct-type-2", Type: v1beta1.ParamTypeArray}, + pp: []v1.ParamSpec{ + {Name: "correct-type-1", Type: v1.ParamTypeString}, + {Name: "correct-type-2", Type: v1.ParamTypeArray}, }, - prp: v1beta1.Params{ + prp: v1.Params{ {Name: "correct-type-1", Value: stringValue}, {Name: "correct-type-2", Value: arrayValue}, }, }, { name: "no params to get wrong", - pp: []v1beta1.ParamSpec{}, - prp: v1beta1.Params{}, + pp: []v1.ParamSpec{}, + prp: v1.Params{}, }} { t.Run(tc.name, func(t *testing.T) { - ps := &v1beta1.PipelineSpec{Params: tc.pp} - pr := &v1beta1.PipelineRun{ + ps := &v1.PipelineSpec{Params: tc.pp} + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipeline"}, - Spec: v1beta1.PipelineRunSpec{Params: tc.prp}, + Spec: v1.PipelineRunSpec{Params: tc.prp}, } if err := resources.ValidateParamTypesMatching(ps, pr); err != nil { @@ -67,44 +67,44 @@ func TestValidateParamTypesMatching_Valid(t *testing.T) { } func TestValidateParamTypesMatching_Invalid(t *testing.T) { - stringValue := *v1beta1.NewStructuredValues("stringValue") - arrayValue := *v1beta1.NewStructuredValues("arrayValue", "arrayValue") + stringValue := *v1.NewStructuredValues("stringValue") + arrayValue := *v1.NewStructuredValues("arrayValue", "arrayValue") for _, tc := range []struct { name string description string - pp []v1beta1.ParamSpec - prp v1beta1.Params + pp []v1.ParamSpec + prp []v1.Param }{{ name: "string-array mismatch", - pp: []v1beta1.ParamSpec{ - {Name: "correct-type-1", Type: v1beta1.ParamTypeString}, - {Name: "correct-type-2", Type: v1beta1.ParamTypeArray}, - {Name: "incorrect-type", Type: v1beta1.ParamTypeString}, + pp: []v1.ParamSpec{ + {Name: "correct-type-1", Type: v1.ParamTypeString}, + {Name: "correct-type-2", Type: v1.ParamTypeArray}, + {Name: "incorrect-type", Type: v1.ParamTypeString}, }, - prp: v1beta1.Params{ + prp: v1.Params{ {Name: "correct-type-1", Value: stringValue}, {Name: "correct-type-2", Value: arrayValue}, {Name: "incorrect-type", Value: arrayValue}, }, }, { name: "array-string mismatch", - pp: []v1beta1.ParamSpec{ - {Name: "correct-type-1", Type: v1beta1.ParamTypeString}, - {Name: "correct-type-2", Type: v1beta1.ParamTypeArray}, - {Name: "incorrect-type", Type: v1beta1.ParamTypeArray}, + pp: []v1.ParamSpec{ + {Name: "correct-type-1", Type: v1.ParamTypeString}, + {Name: "correct-type-2", Type: v1.ParamTypeArray}, + {Name: "incorrect-type", Type: v1.ParamTypeArray}, }, - prp: v1beta1.Params{ + prp: v1.Params{ {Name: "correct-type-1", Value: stringValue}, {Name: "correct-type-2", Value: arrayValue}, {Name: "incorrect-type", Value: stringValue}, }, }} { t.Run(tc.name, func(t *testing.T) { - ps := &v1beta1.PipelineSpec{Params: tc.pp} - pr := &v1beta1.PipelineRun{ + ps := &v1.PipelineSpec{Params: tc.pp} + pr := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "pipeline"}, - Spec: v1beta1.PipelineRunSpec{Params: tc.prp}, + Spec: v1.PipelineRunSpec{Params: tc.prp}, } if err := resources.ValidateParamTypesMatching(ps, pr); err == nil { @@ -115,36 +115,36 @@ func TestValidateParamTypesMatching_Invalid(t *testing.T) { } func TestValidateRequiredParametersProvided_Valid(t *testing.T) { - stringValue := *v1beta1.NewStructuredValues("stringValue") - arrayValue := *v1beta1.NewStructuredValues("arrayValue", "arrayValue") + stringValue := *v1.NewStructuredValues("stringValue") + arrayValue := *v1.NewStructuredValues("arrayValue", "arrayValue") for _, tc := range []struct { name string description string - pp v1beta1.ParamSpecs - prp v1beta1.Params + pp v1.ParamSpecs + prp v1.Params }{{ name: "required string params provided", - pp: []v1beta1.ParamSpec{ - {Name: "required-string-param", Type: v1beta1.ParamTypeString}, + pp: []v1.ParamSpec{ + {Name: "required-string-param", Type: v1.ParamTypeString}, }, - prp: v1beta1.Params{ + prp: v1.Params{ {Name: "required-string-param", Value: stringValue}, }, }, { name: "required array params provided", - pp: []v1beta1.ParamSpec{ - {Name: "required-array-param", Type: v1beta1.ParamTypeArray}, + pp: []v1.ParamSpec{ + {Name: "required-array-param", Type: v1.ParamTypeArray}, }, - prp: v1beta1.Params{ + prp: v1.Params{ {Name: "required-array-param", Value: arrayValue}, }, }, { name: "string params provided in default", - pp: []v1beta1.ParamSpec{ - {Name: "string-param", Type: v1beta1.ParamTypeString, Default: &stringValue}, + pp: []v1.ParamSpec{ + {Name: "string-param", Type: v1.ParamTypeString, Default: &stringValue}, }, - prp: v1beta1.Params{ + prp: v1.Params{ {Name: "another-string-param", Value: stringValue}, }, }} { @@ -157,28 +157,28 @@ func TestValidateRequiredParametersProvided_Valid(t *testing.T) { } func TestValidateRequiredParametersProvided_Invalid(t *testing.T) { - stringValue := *v1beta1.NewStructuredValues("stringValue") - arrayValue := *v1beta1.NewStructuredValues("arrayValue", "arrayValue") + stringValue := *v1.NewStructuredValues("stringValue") + arrayValue := *v1.NewStructuredValues("arrayValue", "arrayValue") for _, tc := range []struct { name string description string - pp v1beta1.ParamSpecs - prp v1beta1.Params + pp v1.ParamSpecs + prp v1.Params }{{ name: "required string param missing", - pp: []v1beta1.ParamSpec{ - {Name: "required-string-param", Type: v1beta1.ParamTypeString}, + pp: []v1.ParamSpec{ + {Name: "required-string-param", Type: v1.ParamTypeString}, }, - prp: v1beta1.Params{ + prp: v1.Params{ {Name: "another-string-param", Value: stringValue}, }, }, { name: "required array param missing", - pp: []v1beta1.ParamSpec{ - {Name: "required-array-param", Type: v1beta1.ParamTypeArray}, + pp: []v1.ParamSpec{ + {Name: "required-array-param", Type: v1.ParamTypeArray}, }, - prp: v1beta1.Params{ + prp: v1.Params{ {Name: "another-array-param", Value: arrayValue}, }, }} { @@ -193,43 +193,43 @@ func TestValidateRequiredParametersProvided_Invalid(t *testing.T) { func TestValidateObjectParamRequiredKeys_Invalid(t *testing.T) { for _, tc := range []struct { name string - pp []v1beta1.ParamSpec - prp v1beta1.Params + pp []v1.ParamSpec + prp v1.Params }{{ name: "miss all required keys", - pp: []v1beta1.ParamSpec{ + pp: []v1.ParamSpec{ { Name: "an-object-param", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, }, }, - prp: v1beta1.Params{ + prp: v1.Params{ { Name: "an-object-param", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "foo": "val1", })}, }, }, { name: "miss one of the required keys", - pp: []v1beta1.ParamSpec{ + pp: []v1.ParamSpec{ { Name: "an-object-param", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, }, }, - prp: v1beta1.Params{ + prp: v1.Params{ { Name: "an-object-param", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "foo", })}, }, @@ -245,69 +245,69 @@ func TestValidateObjectParamRequiredKeys_Invalid(t *testing.T) { func TestValidateObjectParamRequiredKeys_Valid(t *testing.T) { for _, tc := range []struct { name string - pp []v1beta1.ParamSpec - prp v1beta1.Params + pp []v1.ParamSpec + prp v1.Params }{{ name: "some keys are provided by default, and the rest are provided in value", - pp: []v1beta1.ParamSpec{ + pp: []v1.ParamSpec{ { Name: "an-object-param", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, - Default: &v1beta1.ParamValue{ - Type: v1beta1.ParamTypeObject, + Default: &v1.ParamValue{ + Type: v1.ParamTypeObject, ObjectVal: map[string]string{ "key1": "val1", }, }, }, }, - prp: v1beta1.Params{ + prp: v1.Params{ { Name: "an-object-param", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key2": "val2", })}, }, }, { name: "all keys are provided with a value", - pp: []v1beta1.ParamSpec{ + pp: []v1.ParamSpec{ { Name: "an-object-param", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, }, }, - prp: v1beta1.Params{ + prp: v1.Params{ { Name: "an-object-param", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", })}, }, }, { name: "extra keys are provided", - pp: []v1beta1.ParamSpec{ + pp: []v1.ParamSpec{ { Name: "an-object-param", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {Type: "string"}, "key2": {Type: "string"}, }, }, }, - prp: v1beta1.Params{ + prp: v1.Params{ { Name: "an-object-param", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", "key3": "val3", @@ -332,26 +332,26 @@ func TestValidatePipelineParameterTypes(t *testing.T) { }{{ desc: "parameters in matrix are arrays", state: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "task", - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ - Name: "foobar", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ + Name: "foobar", Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, }, { - Name: "barfoo", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"bar", "foo"}}}}, + Name: "barfoo", Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"bar", "foo"}}}}, }, }, }}, }, { desc: "parameters in matrix are strings", state: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "task", - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ - Name: "foo", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeString, StringVal: "foo"}, + Matrix: &v1.Matrix{ + Params: v1.Params{{ + Name: "foo", Value: v1.ParamValue{Type: v1.ParamTypeString, StringVal: "foo"}, }, { - Name: "bar", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeString, StringVal: "bar"}, + Name: "bar", Value: v1.ParamValue{Type: v1.ParamTypeString, StringVal: "bar"}, }}}, }, }}, @@ -359,30 +359,30 @@ func TestValidatePipelineParameterTypes(t *testing.T) { }, { desc: "parameters in include matrix are strings", state: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "task", - Matrix: &v1beta1.Matrix{ - Include: v1beta1.IncludeParamsList{{ + Matrix: &v1.Matrix{ + Include: v1.IncludeParamsList{{ Name: "build-1", - Params: v1beta1.Params{{ - Name: "foo", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeString, StringVal: "foo"}, + Params: v1.Params{{ + Name: "foo", Value: v1.ParamValue{Type: v1.ParamTypeString, StringVal: "foo"}, }, { - Name: "bar", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeString, StringVal: "bar"}}}, + Name: "bar", Value: v1.ParamValue{Type: v1.ParamTypeString, StringVal: "bar"}}}, }}}, }, }}, }, { desc: "parameters in include matrix are arrays", state: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "task", - Matrix: &v1beta1.Matrix{ - Include: v1beta1.IncludeParamsList{{ + Matrix: &v1.Matrix{ + Include: v1.IncludeParamsList{{ Name: "build-1", - Params: v1beta1.Params{{ - Name: "foobar", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, + Params: v1.Params{{ + Name: "foobar", Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"foo", "bar"}}, }, { - Name: "barfoo", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{"bar", "foo"}}}}, + Name: "barfoo", Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{"bar", "foo"}}}}, }}}, }, }}, @@ -390,18 +390,18 @@ func TestValidatePipelineParameterTypes(t *testing.T) { }, { desc: "parameters in include matrix are objects", state: resources.PipelineRunState{{ - PipelineTask: &v1beta1.PipelineTask{ + PipelineTask: &v1.PipelineTask{ Name: "task", - Matrix: &v1beta1.Matrix{ - Include: v1beta1.IncludeParamsList{{ + Matrix: &v1.Matrix{ + Include: v1.IncludeParamsList{{ Name: "build-1", - Params: v1beta1.Params{{ - Name: "barfoo", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeObject, ObjectVal: map[string]string{ + Params: v1.Params{{ + Name: "barfoo", Value: v1.ParamValue{Type: v1.ParamTypeObject, ObjectVal: map[string]string{ "url": "$(params.myObject.non-exist-key)", "commit": "$(params.myString)", }}, }, { - Name: "foobar", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeObject, ObjectVal: map[string]string{ + Name: "foobar", Value: v1.ParamValue{Type: v1.ParamTypeObject, ObjectVal: map[string]string{ "url": "$(params.myObject.non-exist-key)", "commit": "$(params.myString)", }}, @@ -426,154 +426,154 @@ func TestValidatePipelineParameterTypes(t *testing.T) { func TestValidateParamArrayIndex_valid(t *testing.T) { for _, tt := range []struct { name string - original v1beta1.PipelineSpec - params v1beta1.Params + original v1.PipelineSpec + params v1.Params }{{ name: "single parameter", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[1])")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[0])")}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[1])")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[0])")}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, }, { name: "single parameter with when expression", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - WhenExpressions: []v1beta1.WhenExpression{{ + Tasks: []v1.PipelineTask{{ + When: []v1.WhenExpression{{ Input: "$(params.first-param[1])", Operator: selection.In, Values: []string{"$(params.second-param[0])"}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, }, { name: "pipeline parameter nested inside task parameter", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.$(params.first-param[0]))")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.$(params.second-param[1]))")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(input.workspace.$(params.first-param[0]))")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(input.workspace.$(params.second-param[1]))")}, }, }}, }, params: nil, // no parameter values. }, { name: "array parameter", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default", "array", "value")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default", "array", "value")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("firstelement", "$(params.first-param)")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("firstelement", "$(params.second-param[0])")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("firstelement", "$(params.first-param)")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("firstelement", "$(params.second-param[0])")}, }, }}, }, - params: v1beta1.Params{ - {Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "array")}, + params: v1.Params{ + {Name: "second-param", Value: *v1.NewStructuredValues("second-value", "array")}, }, }, { name: "parameter evaluation with final tasks", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[0])")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[1])")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[0])")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[1])")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "$(params.first-param[0])", Operator: selection.In, Values: []string{"$(params.second-param[1])"}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, }, { name: "parameter evaluation with both tasks and final tasks", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[0])")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[1])")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[0])")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[1])")}, }, }}, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[0])")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[1])")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[0])")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[1])")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "$(params.first-param[0])", Operator: selection.In, Values: []string{"$(params.second-param[1])"}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, }, { name: "parameter references with bracket notation and special characters", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first.param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second/param", Type: v1beta1.ParamTypeArray}, - {Name: "third.param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "fourth/param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first.param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second/param", Type: v1.ParamTypeArray}, + {Name: "third.param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "fourth/param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues(`$(params["first.param"][0])`)}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues(`$(params["second/param"][0])`)}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues(`$(params['third.param'][1])`)}, - {Name: "first-task-fourth-param", Value: *v1beta1.NewStructuredValues(`$(params['fourth/param'][1])`)}, - {Name: "first-task-fifth-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues(`$(params["first.param"][0])`)}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues(`$(params["second/param"][0])`)}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues(`$(params['third.param'][1])`)}, + {Name: "first-task-fourth-param", Value: *v1.NewStructuredValues(`$(params['fourth/param'][1])`)}, + {Name: "first-task-fifth-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, - params: v1beta1.Params{ - {Name: "second/param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}, - {Name: "fourth/param", Value: *v1beta1.NewStructuredValues("fourth-value", "fourth-value-again")}, + params: v1.Params{ + {Name: "second/param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}, + {Name: "fourth/param", Value: *v1.NewStructuredValues("fourth-value", "fourth-value-again")}, }, }, { name: "single parameter in workspace subpath", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[0])")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[0])")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("static value")}, }, - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{ + Workspaces: []v1.WorkspacePipelineTaskBinding{ { Name: "first-workspace", Workspace: "first-workspace", @@ -582,7 +582,7 @@ func TestValidateParamArrayIndex_valid(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, }, } { tt := tt // capture range variable @@ -599,54 +599,54 @@ func TestValidateParamArrayIndex_valid(t *testing.T) { func TestValidateParamArrayIndex_invalid(t *testing.T) { for _, tt := range []struct { name string - original v1beta1.PipelineSpec - params v1beta1.Params + original v1.PipelineSpec + params v1.Params expected error }{{ name: "single parameter reference out of bound", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[2])")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[2])")}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[2])")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[2])")}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, expected: fmt.Errorf("non-existent param references:[$(params.first-param[2]) $(params.second-param[2])]"), }, { name: "single parameter reference with when expression out of bound", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeString}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeString}, }, - Tasks: []v1beta1.PipelineTask{{ - WhenExpressions: []v1beta1.WhenExpression{{ + Tasks: []v1.PipelineTask{{ + When: []v1.WhenExpression{{ Input: "$(params.first-param[2])", Operator: selection.In, Values: []string{"$(params.second-param[2])"}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, expected: fmt.Errorf("non-existent param references:[$(params.first-param[2]) $(params.second-param[2])]"), }, { name: "pipeline parameter reference nested inside task parameter out of bound", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.$(params.first-param[2]))")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("$(input.workspace.$(params.second-param[2]))")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(input.workspace.$(params.first-param[2]))")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("$(input.workspace.$(params.second-param[2]))")}, }, }}, }, @@ -654,150 +654,150 @@ func TestValidateParamArrayIndex_invalid(t *testing.T) { expected: fmt.Errorf("non-existent param references:[$(params.first-param[2]) $(params.second-param[2])]"), }, { name: "array parameter reference out of bound", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default", "array", "value")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default", "array", "value")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("firstelement", "$(params.first-param[3])")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("firstelement", "$(params.second-param[4])")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("firstelement", "$(params.first-param[3])")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("firstelement", "$(params.second-param[4])")}, }, }}, }, - params: v1beta1.Params{ - {Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "array")}, + params: v1.Params{ + {Name: "second-param", Value: *v1.NewStructuredValues("second-value", "array")}, }, expected: fmt.Errorf("non-existent param references:[$(params.first-param[3]) $(params.second-param[4])]"), }, { name: "object parameter reference out of bound", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default", "array", "value")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default", "array", "value")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewObject(map[string]string{ + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewObject(map[string]string{ "val1": "$(params.first-param[4])", "val2": "$(params.second-param[4])", })}, }, }}, }, - params: v1beta1.Params{ - {Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "array")}, + params: v1.Params{ + {Name: "second-param", Value: *v1.NewStructuredValues("second-value", "array")}, }, expected: fmt.Errorf("non-existent param references:[$(params.first-param[4]) $(params.second-param[4])]"), }, { name: "parameter evaluation with final tasks reference out of bound", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[2])")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[2])")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[2])")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[2])")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "$(params.first-param[0])", Operator: selection.In, Values: []string{"$(params.second-param[1])"}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, expected: fmt.Errorf("non-existent param references:[$(params.first-param[2]) $(params.second-param[2])]"), }, { name: "parameter evaluation with both tasks and final tasks reference out of bound", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[2])")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[2])")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[2])")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[2])")}, }, }}, - Finally: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[3])")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[3])")}, + Finally: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[3])")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[3])")}, }, - WhenExpressions: v1beta1.WhenExpressions{{ + When: v1.WhenExpressions{{ Input: "$(params.first-param[2])", Operator: selection.In, Values: []string{"$(params.second-param[2])"}, }}, - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{ - {Name: "final-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[4])")}, - {Name: "final-task-second-param", Value: *v1beta1.NewStructuredValues("$(params.second-param[4])")}, + Matrix: &v1.Matrix{ + Params: v1.Params{ + {Name: "final-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[4])")}, + {Name: "final-task-second-param", Value: *v1.NewStructuredValues("$(params.second-param[4])")}, }}, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, expected: fmt.Errorf("non-existent param references:[$(params.first-param[2]) $(params.first-param[3]) $(params.first-param[4]) $(params.second-param[2]) $(params.second-param[3]) $(params.second-param[4])]"), }, { name: "parameter in matrix reference out of bound", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[2])")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Matrix: &v1.Matrix{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[2])")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("static value")}, }, }, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, expected: fmt.Errorf("non-existent param references:[$(params.first-param[2])]"), }, { name: "parameter references with bracket notation and special characters reference out of bound", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first.param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second/param", Type: v1beta1.ParamTypeArray}, - {Name: "third.param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "fourth/param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first.param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second/param", Type: v1.ParamTypeArray}, + {Name: "third.param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "fourth/param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues(`$(params["first.param"][2])`)}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues(`$(params["second/param"][2])`)}, - {Name: "first-task-third-param", Value: *v1beta1.NewStructuredValues(`$(params['third.param'][2])`)}, - {Name: "first-task-fourth-param", Value: *v1beta1.NewStructuredValues(`$(params['fourth/param'][2])`)}, - {Name: "first-task-fifth-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues(`$(params["first.param"][2])`)}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues(`$(params["second/param"][2])`)}, + {Name: "first-task-third-param", Value: *v1.NewStructuredValues(`$(params['third.param'][2])`)}, + {Name: "first-task-fourth-param", Value: *v1.NewStructuredValues(`$(params['fourth/param'][2])`)}, + {Name: "first-task-fifth-param", Value: *v1.NewStructuredValues("static value")}, }, }}, }, - params: v1beta1.Params{ - {Name: "second/param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}, - {Name: "fourth/param", Value: *v1beta1.NewStructuredValues("fourth-value", "fourth-value-again")}, + params: v1.Params{ + {Name: "second/param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}, + {Name: "fourth/param", Value: *v1.NewStructuredValues("fourth-value", "fourth-value-again")}, }, expected: fmt.Errorf("non-existent param references:[$(params[\"first.param\"][2]) $(params[\"second/param\"][2]) $(params['fourth/param'][2]) $(params['third.param'][2])]"), }, { name: "single parameter in workspace subpath reference out of bound", - original: v1beta1.PipelineSpec{ - Params: []v1beta1.ParamSpec{ - {Name: "first-param", Type: v1beta1.ParamTypeArray, Default: v1beta1.NewStructuredValues("default-value", "default-value-again")}, - {Name: "second-param", Type: v1beta1.ParamTypeArray}, + original: v1.PipelineSpec{ + Params: []v1.ParamSpec{ + {Name: "first-param", Type: v1.ParamTypeArray, Default: v1.NewStructuredValues("default-value", "default-value-again")}, + {Name: "second-param", Type: v1.ParamTypeArray}, }, - Tasks: []v1beta1.PipelineTask{{ - Params: v1beta1.Params{ - {Name: "first-task-first-param", Value: *v1beta1.NewStructuredValues("$(params.first-param[2])")}, - {Name: "first-task-second-param", Value: *v1beta1.NewStructuredValues("static value")}, + Tasks: []v1.PipelineTask{{ + Params: v1.Params{ + {Name: "first-task-first-param", Value: *v1.NewStructuredValues("$(params.first-param[2])")}, + {Name: "first-task-second-param", Value: *v1.NewStructuredValues("static value")}, }, - Workspaces: []v1beta1.WorkspacePipelineTaskBinding{ + Workspaces: []v1.WorkspacePipelineTaskBinding{ { Name: "first-workspace", Workspace: "first-workspace", @@ -806,7 +806,7 @@ func TestValidateParamArrayIndex_invalid(t *testing.T) { }, }}, }, - params: v1beta1.Params{{Name: "second-param", Value: *v1beta1.NewStructuredValues("second-value", "second-value-again")}}, + params: v1.Params{{Name: "second-param", Value: *v1.NewStructuredValues("second-value", "second-value-again")}}, expected: fmt.Errorf("non-existent param references:[$(params.first-param[2]) $(params.second-param[3])]"), }, } { diff --git a/pkg/reconciler/pipelinerun/timeout.go b/pkg/reconciler/pipelinerun/timeout.go index a9fbdf329ef..c42eea6a1b0 100644 --- a/pkg/reconciler/pipelinerun/timeout.go +++ b/pkg/reconciler/pipelinerun/timeout.go @@ -21,6 +21,7 @@ import ( "strings" "time" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" clientset "github.com/tektoncd/pipeline/pkg/client/clientset/versioned" "go.uber.org/zap" @@ -40,12 +41,12 @@ func init() { { Operation: "add", Path: "/spec/status", - Value: v1beta1.TaskRunSpecStatusCancelled, + Value: v1.TaskRunSpecStatusCancelled, }, { Operation: "add", Path: "/spec/statusMessage", - Value: v1beta1.TaskRunCancelledByPipelineTimeoutMsg, + Value: v1.TaskRunCancelledByPipelineTimeoutMsg, }}) if err != nil { log.Fatalf("failed to marshal TaskRun timeout patch bytes: %v", err) @@ -67,7 +68,7 @@ func init() { } // timeoutPipelineRun marks the PipelineRun as timed out and any resolved TaskRun(s) too. -func timeoutPipelineRun(ctx context.Context, logger *zap.SugaredLogger, pr *v1beta1.PipelineRun, clientSet clientset.Interface) error { +func timeoutPipelineRun(ctx context.Context, logger *zap.SugaredLogger, pr *v1.PipelineRun, clientSet clientset.Interface) error { errs := timeoutPipelineTasks(ctx, logger, pr, clientSet) // If we successfully timed out all the TaskRuns and Runs, we can consider the PipelineRun timed out. @@ -95,12 +96,12 @@ func timeoutCustomRun(ctx context.Context, customRunName string, namespace strin } // timeoutPipelineTaskRuns patches `TaskRun` and `Run` with canceled status and an appropriate message -func timeoutPipelineTasks(ctx context.Context, logger *zap.SugaredLogger, pr *v1beta1.PipelineRun, clientSet clientset.Interface) []string { +func timeoutPipelineTasks(ctx context.Context, logger *zap.SugaredLogger, pr *v1.PipelineRun, clientSet clientset.Interface) []string { return timeoutPipelineTasksForTaskNames(ctx, logger, pr, clientSet, sets.NewString()) } // timeoutPipelineTasksForTaskNames patches `TaskRun`s and `Run`s for the given task names, or all if no task names are given, with canceled status and appropriate message -func timeoutPipelineTasksForTaskNames(ctx context.Context, logger *zap.SugaredLogger, pr *v1beta1.PipelineRun, clientSet clientset.Interface, taskNames sets.String) []string { +func timeoutPipelineTasksForTaskNames(ctx context.Context, logger *zap.SugaredLogger, pr *v1.PipelineRun, clientSet clientset.Interface, taskNames sets.String) []string { errs := []string{} trNames, customRunNames, err := getChildObjectsFromPRStatusForTaskNames(ctx, pr.Status, taskNames) @@ -111,7 +112,7 @@ func timeoutPipelineTasksForTaskNames(ctx context.Context, logger *zap.SugaredLo for _, taskRunName := range trNames { logger.Infof("cancelling TaskRun %s for timeout", taskRunName) - if _, err := clientSet.TektonV1beta1().TaskRuns(pr.Namespace).Patch(ctx, taskRunName, types.JSONPatchType, timeoutTaskRunPatchBytes, metav1.PatchOptions{}, ""); err != nil { + if _, err := clientSet.TektonV1().TaskRuns(pr.Namespace).Patch(ctx, taskRunName, types.JSONPatchType, timeoutTaskRunPatchBytes, metav1.PatchOptions{}, ""); err != nil { errs = append(errs, fmt.Errorf("Failed to patch TaskRun `%s` with cancellation: %w", taskRunName, err).Error()) continue } diff --git a/pkg/reconciler/pipelinerun/timeout_test.go b/pkg/reconciler/pipelinerun/timeout_test.go index 5292288d258..0b65cf08f35 100644 --- a/pkg/reconciler/pipelinerun/timeout_test.go +++ b/pkg/reconciler/pipelinerun/timeout_test.go @@ -17,6 +17,8 @@ import ( "context" "testing" + "github.com/tektoncd/pipeline/pkg/apis/pipeline" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" _ "github.com/tektoncd/pipeline/pkg/pipelinerunmetrics/fake" // Make sure the pipelinerunmetrics are setup ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" @@ -31,40 +33,40 @@ func TestTimeoutPipelineRun(t *testing.T) { testCases := []struct { name string useV1Beta1CustomTasks bool - pipelineRun *v1beta1.PipelineRun - taskRuns []*v1beta1.TaskRun + pipelineRun *v1.PipelineRun + taskRuns []*v1.TaskRun customRuns []*v1beta1.CustomRun wantErr bool }{{ name: "no-resolved-taskrun", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-timedout"}, - Spec: v1beta1.PipelineRunSpec{}, + Spec: v1.PipelineRunSpec{}, }, }, { name: "one-taskrun", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-timedout"}, - Spec: v1beta1.PipelineRunSpec{}, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ - TypeMeta: runtime.TypeMeta{Kind: taskRun}, + Spec: v1.PipelineRunSpec{}, + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ + TypeMeta: runtime.TypeMeta{Kind: "TaskRun"}, Name: "t1", PipelineTaskName: "task-1", }}, }}, }, - taskRuns: []*v1beta1.TaskRun{ + taskRuns: []*v1.TaskRun{ {ObjectMeta: metav1.ObjectMeta{Name: "t1"}}, }, }, { name: "multiple-taskruns", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-timedout"}, - Spec: v1beta1.PipelineRunSpec{}, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ - TypeMeta: runtime.TypeMeta{Kind: taskRun}, + Spec: v1.PipelineRunSpec{}, + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ + TypeMeta: runtime.TypeMeta{Kind: "TaskRun"}, Name: "t1", PipelineTaskName: "task-1", }, { @@ -74,18 +76,18 @@ func TestTimeoutPipelineRun(t *testing.T) { }}, }}, }, - taskRuns: []*v1beta1.TaskRun{ + taskRuns: []*v1.TaskRun{ {ObjectMeta: metav1.ObjectMeta{Name: "t1"}}, {ObjectMeta: metav1.ObjectMeta{Name: "t2"}}, }, }, { name: "multiple-runs", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-timedout"}, - Spec: v1beta1.PipelineRunSpec{}, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ - TypeMeta: runtime.TypeMeta{Kind: customRun}, + Spec: v1.PipelineRunSpec{}, + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ + TypeMeta: runtime.TypeMeta{Kind: "CustomRun"}, Name: "t1", PipelineTaskName: "task-1", }, { @@ -102,12 +104,12 @@ func TestTimeoutPipelineRun(t *testing.T) { }, { name: "multiple-runs-beta-custom-tasks", useV1Beta1CustomTasks: true, - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-timedout"}, - Spec: v1beta1.PipelineRunSpec{}, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ - TypeMeta: runtime.TypeMeta{Kind: customRun}, + Spec: v1.PipelineRunSpec{}, + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ + TypeMeta: runtime.TypeMeta{Kind: "CustomRun"}, Name: "t1", PipelineTaskName: "task-1", }, { @@ -123,11 +125,11 @@ func TestTimeoutPipelineRun(t *testing.T) { }, }, { name: "multiple-taskruns-and-customruns", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-timedout"}, - Spec: v1beta1.PipelineRunSpec{}, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{ + Spec: v1.PipelineRunSpec{}, + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{ { TypeMeta: runtime.TypeMeta{Kind: taskRun}, Name: "t1", @@ -157,7 +159,7 @@ func TestTimeoutPipelineRun(t *testing.T) { }, }}, }, - taskRuns: []*v1beta1.TaskRun{ + taskRuns: []*v1.TaskRun{ {ObjectMeta: metav1.ObjectMeta{Name: "t1"}}, {ObjectMeta: metav1.ObjectMeta{Name: "t2"}}, }, @@ -168,11 +170,11 @@ func TestTimeoutPipelineRun(t *testing.T) { }, { name: "child-references-beta-custom-tasks", useV1Beta1CustomTasks: true, - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-timedout"}, - Spec: v1beta1.PipelineRunSpec{}, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{ + Spec: v1.PipelineRunSpec{}, + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{ { TypeMeta: runtime.TypeMeta{Kind: taskRun}, Name: "t1", @@ -185,16 +187,16 @@ func TestTimeoutPipelineRun(t *testing.T) { }, { TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: customRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: pipeline.CustomRunControllerName, }, Name: "r1", PipelineTaskName: "run-1", }, { TypeMeta: runtime.TypeMeta{ - APIVersion: v1beta1.SchemeGroupVersion.String(), - Kind: customRun, + APIVersion: v1.SchemeGroupVersion.String(), + Kind: pipeline.CustomRunControllerName, }, Name: "r2", PipelineTaskName: "run-2", @@ -202,7 +204,7 @@ func TestTimeoutPipelineRun(t *testing.T) { }, }}, }, - taskRuns: []*v1beta1.TaskRun{ + taskRuns: []*v1.TaskRun{ {ObjectMeta: metav1.ObjectMeta{Name: "t1"}}, {ObjectMeta: metav1.ObjectMeta{Name: "t2"}}, }, @@ -212,11 +214,11 @@ func TestTimeoutPipelineRun(t *testing.T) { }, }, { name: "unknown-kind-on-child-references", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-pipeline-run-timedout"}, - Spec: v1beta1.PipelineRunSpec{}, - Status: v1beta1.PipelineRunStatus{PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - ChildReferences: []v1beta1.ChildStatusReference{{ + Spec: v1.PipelineRunSpec{}, + Status: v1.PipelineRunStatus{PipelineRunStatusFields: v1.PipelineRunStatusFields{ + ChildReferences: []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{Kind: "InvalidKind"}, Name: "t1", PipelineTaskName: "task-1", @@ -229,7 +231,7 @@ func TestTimeoutPipelineRun(t *testing.T) { tc := tc t.Run(tc.name, func(t *testing.T) { d := test.Data{ - PipelineRuns: []*v1beta1.PipelineRun{tc.pipelineRun}, + PipelineRuns: []*v1.PipelineRun{tc.pipelineRun}, TaskRuns: tc.taskRuns, CustomRuns: tc.customRuns, } @@ -254,14 +256,14 @@ func TestTimeoutPipelineRun(t *testing.T) { } if tc.taskRuns != nil { for _, expectedTR := range tc.taskRuns { - tr, err := c.Pipeline.TektonV1beta1().TaskRuns("").Get(ctx, expectedTR.Name, metav1.GetOptions{}) + tr, err := c.Pipeline.TektonV1().TaskRuns("").Get(ctx, expectedTR.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("couldn't get expected TaskRun %s, got error %s", expectedTR.Name, err) } - if tr.Spec.Status != v1beta1.TaskRunSpecStatusCancelled { + if tr.Spec.Status != v1.TaskRunSpecStatusCancelled { t.Errorf("expected task %q to be marked as timed out, was %q", tr.Name, tr.Spec.Status) } - if tr.Spec.StatusMessage != v1beta1.TaskRunCancelledByPipelineTimeoutMsg { + if tr.Spec.StatusMessage != v1.TaskRunCancelledByPipelineTimeoutMsg { t.Errorf("expected task %s to have the timeout-specific status message, was %s", tr.Name, tr.Spec.StatusMessage) } } diff --git a/pkg/reconciler/pipelinerun/tracing.go b/pkg/reconciler/pipelinerun/tracing.go index b5c152302e8..c94461046e1 100644 --- a/pkg/reconciler/pipelinerun/tracing.go +++ b/pkg/reconciler/pipelinerun/tracing.go @@ -21,7 +21,7 @@ import ( "encoding/json" "fmt" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/propagation" @@ -40,7 +40,7 @@ const ( // initialize tracing by creating the root span and injecting the // spanContext is propogated through annotations in the CR -func initTracing(ctx context.Context, tracerProvider trace.TracerProvider, pr *v1beta1.PipelineRun) context.Context { +func initTracing(ctx context.Context, tracerProvider trace.TracerProvider, pr *v1.PipelineRun) context.Context { logger := logging.FromContext(ctx) pro := otel.GetTextMapPropagator() diff --git a/pkg/reconciler/pipelinerun/tracing_test.go b/pkg/reconciler/pipelinerun/tracing_test.go index 3d95c45b5f7..1737a77ac27 100644 --- a/pkg/reconciler/pipelinerun/tracing_test.go +++ b/pkg/reconciler/pipelinerun/tracing_test.go @@ -17,7 +17,7 @@ import ( "context" "testing" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/propagation" tracesdk "go.opentelemetry.io/otel/sdk/trace" @@ -30,14 +30,14 @@ func TestInitTracing(t *testing.T) { testcases := []struct { name string - pipelineRun *v1beta1.PipelineRun + pipelineRun *v1.PipelineRun tracerProvider trace.TracerProvider expectSpanContextStatus bool expectValidSpanContext bool parentTraceID string }{{ name: "with-tracerprovider-no-parent-trace", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "test", Namespace: "testns", @@ -48,7 +48,7 @@ func TestInitTracing(t *testing.T) { expectValidSpanContext: true, }, { name: "with-tracerprovider-with-parent-trace", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "test", Namespace: "testns", @@ -63,7 +63,7 @@ func TestInitTracing(t *testing.T) { parentTraceID: "00-0f57e147e992b304d977436289d10628-73d5909e31793992-01", }, { name: "without-tracerprovider", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "test", Namespace: "testns", @@ -74,7 +74,7 @@ func TestInitTracing(t *testing.T) { expectValidSpanContext: false, }, { name: "without-tracerprovider-existing-annotations", - pipelineRun: &v1beta1.PipelineRun{ + pipelineRun: &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: "test", Namespace: "testns", diff --git a/pkg/reconciler/taskrun/controller.go b/pkg/reconciler/taskrun/controller.go index 8ce8db753df..169462e180a 100644 --- a/pkg/reconciler/taskrun/controller.go +++ b/pkg/reconciler/taskrun/controller.go @@ -21,11 +21,11 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" pipelineclient "github.com/tektoncd/pipeline/pkg/client/injection/client" + taskruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/taskrun" verificationpolicyinformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1alpha1/verificationpolicy" - taskruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/taskrun" - taskrunreconciler "github.com/tektoncd/pipeline/pkg/client/injection/reconciler/pipeline/v1beta1/taskrun" + taskrunreconciler "github.com/tektoncd/pipeline/pkg/client/injection/reconciler/pipeline/v1/taskrun" resolutionclient "github.com/tektoncd/pipeline/pkg/client/resolution/injection/client" resolutioninformer "github.com/tektoncd/pipeline/pkg/client/resolution/injection/informers/resolution/v1beta1/resolutionrequest" "github.com/tektoncd/pipeline/pkg/pod" @@ -52,7 +52,7 @@ func NewController(opts *pipeline.Options, clock clock.PassiveClock, tracerProvi kubeclientset := kubeclient.Get(ctx) pipelineclientset := pipelineclient.Get(ctx) taskRunInformer := taskruninformer.Get(ctx) - podInformer := filteredpodinformer.Get(ctx, v1beta1.ManagedByLabelKey) + podInformer := filteredpodinformer.Get(ctx, v1.ManagedByLabelKey) limitrangeInformer := limitrangeinformer.Get(ctx) verificationpolicyInformer := verificationpolicyinformer.Get(ctx) resolutionInformer := resolutioninformer.Get(ctx) @@ -92,7 +92,7 @@ func NewController(opts *pipeline.Options, clock clock.PassiveClock, tracerProvi taskRunInformer.Informer().AddEventHandler(controller.HandleAll(impl.Enqueue)) podInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{ - FilterFunc: controller.FilterController(&v1beta1.TaskRun{}), + FilterFunc: controller.FilterController(&v1.TaskRun{}), Handler: controller.HandleAll(impl.EnqueueControllerOf), }) diff --git a/pkg/reconciler/taskrun/resources/apply.go b/pkg/reconciler/taskrun/resources/apply.go index 83d8ec2cb1c..8fb537f15aa 100644 --- a/pkg/reconciler/taskrun/resources/apply.go +++ b/pkg/reconciler/taskrun/resources/apply.go @@ -24,7 +24,7 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/container" "github.com/tektoncd/pipeline/pkg/pod" "github.com/tektoncd/pipeline/pkg/substitution" @@ -48,7 +48,7 @@ var ( ) // ApplyParameters applies the params from a TaskRun.Input.Parameters to a TaskSpec -func ApplyParameters(ctx context.Context, spec *v1beta1.TaskSpec, tr *v1beta1.TaskRun, defaults ...v1beta1.ParamSpec) *v1beta1.TaskSpec { +func ApplyParameters(ctx context.Context, spec *v1.TaskSpec, tr *v1.TaskRun, defaults ...v1.ParamSpec) *v1.TaskSpec { // This assumes that the TaskRun inputs have been validated against what the Task requests. // stringReplacements is used for standard single-string stringReplacements, while arrayReplacements contains arrays @@ -60,18 +60,18 @@ func ApplyParameters(ctx context.Context, spec *v1beta1.TaskSpec, tr *v1beta1.Ta for _, p := range defaults { if p.Default != nil { switch p.Default.Type { - case v1beta1.ParamTypeArray: + case v1.ParamTypeArray: for _, pattern := range paramPatterns { for i := 0; i < len(p.Default.ArrayVal); i++ { stringReplacements[fmt.Sprintf(pattern+"[%d]", p.Name, i)] = p.Default.ArrayVal[i] } arrayReplacements[fmt.Sprintf(pattern, p.Name)] = p.Default.ArrayVal } - case v1beta1.ParamTypeObject: + case v1.ParamTypeObject: for k, v := range p.Default.ObjectVal { stringReplacements[fmt.Sprintf(objectIndividualVariablePattern, p.Name, k)] = v } - case v1beta1.ParamTypeString: + case v1.ParamTypeString: fallthrough default: for _, pattern := range paramPatterns { @@ -92,7 +92,7 @@ func ApplyParameters(ctx context.Context, spec *v1beta1.TaskSpec, tr *v1beta1.Ta return ApplyReplacements(spec, stringReplacements, arrayReplacements) } -func paramsFromTaskRun(ctx context.Context, tr *v1beta1.TaskRun) (map[string]string, map[string][]string) { +func paramsFromTaskRun(ctx context.Context, tr *v1.TaskRun) (map[string]string, map[string][]string) { // stringReplacements is used for standard single-string stringReplacements, while arrayReplacements contains arrays // that need to be further processed. stringReplacements := map[string]string{} @@ -100,18 +100,18 @@ func paramsFromTaskRun(ctx context.Context, tr *v1beta1.TaskRun) (map[string]str for _, p := range tr.Spec.Params { switch p.Value.Type { - case v1beta1.ParamTypeArray: + case v1.ParamTypeArray: for _, pattern := range paramPatterns { for i := 0; i < len(p.Value.ArrayVal); i++ { stringReplacements[fmt.Sprintf(pattern+"[%d]", p.Name, i)] = p.Value.ArrayVal[i] } arrayReplacements[fmt.Sprintf(pattern, p.Name)] = p.Value.ArrayVal } - case v1beta1.ParamTypeObject: + case v1.ParamTypeObject: for k, v := range p.Value.ObjectVal { stringReplacements[fmt.Sprintf(objectIndividualVariablePattern, p.Name, k)] = v } - case v1beta1.ParamTypeString: + case v1.ParamTypeString: fallthrough default: for _, pattern := range paramPatterns { @@ -123,7 +123,7 @@ func paramsFromTaskRun(ctx context.Context, tr *v1beta1.TaskRun) (map[string]str return stringReplacements, arrayReplacements } -func getContextReplacements(taskName string, tr *v1beta1.TaskRun) map[string]string { +func getContextReplacements(taskName string, tr *v1.TaskRun) map[string]string { return map[string]string{ "context.taskRun.name": tr.Name, "context.task.name": taskName, @@ -135,14 +135,14 @@ func getContextReplacements(taskName string, tr *v1beta1.TaskRun) map[string]str // ApplyContexts applies the substitution from $(context.(taskRun|task).*) with the specified values. // Uses "" as a default if a value is not available. -func ApplyContexts(spec *v1beta1.TaskSpec, taskName string, tr *v1beta1.TaskRun) *v1beta1.TaskSpec { +func ApplyContexts(spec *v1.TaskSpec, taskName string, tr *v1.TaskRun) *v1.TaskSpec { return ApplyReplacements(spec, getContextReplacements(taskName, tr), map[string][]string{}) } // ApplyWorkspaces applies the substitution from paths that the workspaces in declarations mounted to, the // volumes that bindings are realized with in the task spec and the PersistentVolumeClaim names for the // workspaces. -func ApplyWorkspaces(ctx context.Context, spec *v1beta1.TaskSpec, declarations []v1beta1.WorkspaceDeclaration, bindings []v1beta1.WorkspaceBinding, vols map[string]corev1.Volume) *v1beta1.TaskSpec { +func ApplyWorkspaces(ctx context.Context, spec *v1.TaskSpec, declarations []v1.WorkspaceDeclaration, bindings []v1.WorkspaceBinding, vols map[string]corev1.Volume) *v1.TaskSpec { stringReplacements := map[string]string{} bindNames := sets.NewString() @@ -183,7 +183,7 @@ func ApplyWorkspaces(ctx context.Context, spec *v1beta1.TaskSpec, declarations [ // it in the fields of the TaskSpec. A new updated TaskSpec is returned. Steps or Sidecars in the TaskSpec // that override the mountPath will receive that mountPath in place of the variable's value. Other Steps and // Sidecars will see either the workspace's declared mountPath or the default of /workspaces/. -func applyWorkspaceMountPath(variable string, spec *v1beta1.TaskSpec, declaration v1beta1.WorkspaceDeclaration) *v1beta1.TaskSpec { +func applyWorkspaceMountPath(variable string, spec *v1.TaskSpec, declaration v1.WorkspaceDeclaration) *v1.TaskSpec { stringReplacements := map[string]string{variable: ""} emptyArrayReplacements := map[string][]string{} defaultMountPath := declaration.GetMountPath() @@ -215,7 +215,7 @@ func applyWorkspaceMountPath(variable string, spec *v1beta1.TaskSpec, declaratio // ApplyTaskResults applies the substitution from values in results which are referenced in spec as subitems // of the replacementStr. -func ApplyTaskResults(spec *v1beta1.TaskSpec) *v1beta1.TaskSpec { +func ApplyTaskResults(spec *v1.TaskSpec) *v1.TaskSpec { stringReplacements := map[string]string{} patterns := []string{ @@ -234,7 +234,7 @@ func ApplyTaskResults(spec *v1beta1.TaskSpec) *v1beta1.TaskSpec { // ApplyStepExitCodePath replaces the occurrences of exitCode path with the absolute tekton internal path // Replace $(steps..exitCode.path) with pipeline.StepPath//exitCode -func ApplyStepExitCodePath(spec *v1beta1.TaskSpec) *v1beta1.TaskSpec { +func ApplyStepExitCodePath(spec *v1.TaskSpec) *v1.TaskSpec { stringReplacements := map[string]string{} for i, step := range spec.Steps { @@ -246,7 +246,7 @@ func ApplyStepExitCodePath(spec *v1beta1.TaskSpec) *v1beta1.TaskSpec { // ApplyCredentialsPath applies a substitution of the key $(credentials.path) with the path that credentials // from annotated secrets are written to. -func ApplyCredentialsPath(spec *v1beta1.TaskSpec, path string) *v1beta1.TaskSpec { +func ApplyCredentialsPath(spec *v1.TaskSpec, path string) *v1.TaskSpec { stringReplacements := map[string]string{ "credentials.path": path, } @@ -254,7 +254,7 @@ func ApplyCredentialsPath(spec *v1beta1.TaskSpec, path string) *v1beta1.TaskSpec } // ApplyReplacements replaces placeholders for declared parameters with the specified replacements. -func ApplyReplacements(spec *v1beta1.TaskSpec, stringReplacements map[string]string, arrayReplacements map[string][]string) *v1beta1.TaskSpec { +func ApplyReplacements(spec *v1.TaskSpec, stringReplacements map[string]string, arrayReplacements map[string][]string) *v1.TaskSpec { spec = spec.DeepCopy() // Apply variable expansion to steps fields. diff --git a/pkg/reconciler/taskrun/resources/apply_test.go b/pkg/reconciler/taskrun/resources/apply_test.go index 06f1a348a0b..91f8c9cb7c8 100644 --- a/pkg/reconciler/taskrun/resources/apply_test.go +++ b/pkg/reconciler/taskrun/resources/apply_test.go @@ -22,7 +22,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/tektoncd/pipeline/pkg/apis/config" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" "github.com/tektoncd/pipeline/pkg/workspace" "github.com/tektoncd/pipeline/test/diff" @@ -34,8 +34,8 @@ import ( ) var ( - simpleTaskSpec = &v1beta1.TaskSpec{ - Sidecars: []v1beta1.Sidecar{{ + simpleTaskSpec = &v1.TaskSpec{ + Sidecars: []v1.Sidecar{{ Name: "foo", Image: `$(params["myimage"])`, Env: []corev1.EnvVar{{ @@ -43,14 +43,14 @@ var ( Value: "$(params['FOO'])", }}, }}, - StepTemplate: &v1beta1.StepTemplate{ + StepTemplate: &v1.StepTemplate{ Env: []corev1.EnvVar{{ Name: "template-var", Value: `$(params["FOO"])`, }}, Image: "$(params.myimage)", }, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "foo", Image: "$(params.myimage)", }, { @@ -177,8 +177,8 @@ var ( } // a taskspec for testing object var in all places i.e. Sidecars, StepTemplate, Steps and Volumns - objectParamTaskSpec = &v1beta1.TaskSpec{ - Sidecars: []v1beta1.Sidecar{{ + objectParamTaskSpec = &v1.TaskSpec{ + Sidecars: []v1.Sidecar{{ Name: "foo", Image: `$(params.myObject.key1)`, Env: []corev1.EnvVar{{ @@ -186,14 +186,14 @@ var ( Value: "$(params.myObject.key2)", }}, }}, - StepTemplate: &v1beta1.StepTemplate{ + StepTemplate: &v1.StepTemplate{ Image: "$(params.myObject.key1)", Env: []corev1.EnvVar{{ Name: "template-var", Value: `$(params.myObject.key2)`, }}, }, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "foo", Image: "$(params.myObject.key1)", WorkingDir: "path/to/$(params.myObject.key2)", @@ -298,8 +298,8 @@ var ( }}, } - simpleTaskSpecArrayIndexing = &v1beta1.TaskSpec{ - Sidecars: []v1beta1.Sidecar{{ + simpleTaskSpecArrayIndexing = &v1.TaskSpec{ + Sidecars: []v1.Sidecar{{ Name: "foo", Image: `$(params["myimage"][0])`, Env: []corev1.EnvVar{{ @@ -307,14 +307,14 @@ var ( Value: "$(params['FOO'][1])", }}, }}, - StepTemplate: &v1beta1.StepTemplate{ + StepTemplate: &v1.StepTemplate{ Env: []corev1.EnvVar{{ Name: "template-var", Value: `$(params["FOO"][1])`, }}, Image: "$(params.myimage[0])", }, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "foo", Image: "$(params.myimage[0])", }, { @@ -440,8 +440,8 @@ var ( }}, } - arrayParamTaskSpec = &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + arrayParamTaskSpec = &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "simple-image", Image: "some-image", }, { @@ -452,8 +452,8 @@ var ( }}, } - arrayAndStringParamTaskSpec = &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + arrayAndStringParamTaskSpec = &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "simple-image", Image: "some-image", }, { @@ -464,8 +464,8 @@ var ( }}, } - arrayAndObjectParamTaskSpec = &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + arrayAndObjectParamTaskSpec = &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "simple-image", Image: "some-image", }, { @@ -476,8 +476,8 @@ var ( }}, } - multipleArrayParamsTaskSpec = &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + multipleArrayParamsTaskSpec = &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "simple-image", Image: "some-image", }, { @@ -488,8 +488,8 @@ var ( }}, } - multipleArrayAndStringsParamsTaskSpec = &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + multipleArrayAndStringsParamsTaskSpec = &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "simple-image", Image: "image-$(params.string-param2)", }, { @@ -500,8 +500,8 @@ var ( }}, } - multipleArrayAndObjectParamsTaskSpec = &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + multipleArrayAndObjectParamsTaskSpec = &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "simple-image", Image: "image-$(params.myObject.key1)", }, { @@ -512,68 +512,68 @@ var ( }}, } - arrayTaskRun0Elements = &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - Params: v1beta1.Params{{ + arrayTaskRun0Elements = &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + Params: []v1.Param{{ Name: "array-param", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeArray, + Value: v1.ParamValue{ + Type: v1.ParamTypeArray, ArrayVal: []string{}, }}, }, }, } - arrayTaskRun1Elements = &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - Params: v1beta1.Params{{ + arrayTaskRun1Elements = &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + Params: []v1.Param{{ Name: "array-param", - Value: *v1beta1.NewStructuredValues("foo"), + Value: *v1.NewStructuredValues("foo"), }}, }, } - arrayTaskRun3Elements = &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - Params: v1beta1.Params{{ + arrayTaskRun3Elements = &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + Params: []v1.Param{{ Name: "array-param", - Value: *v1beta1.NewStructuredValues("foo", "bar", "third"), + Value: *v1.NewStructuredValues("foo", "bar", "third"), }}, }, } - arrayTaskRunMultipleArrays = &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - Params: v1beta1.Params{{ + arrayTaskRunMultipleArrays = &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + Params: []v1.Param{{ Name: "array-param", - Value: *v1beta1.NewStructuredValues("foo", "bar", "third"), + Value: *v1.NewStructuredValues("foo", "bar", "third"), }, { Name: "another-array-param", - Value: *v1beta1.NewStructuredValues("part1", "part2"), + Value: *v1.NewStructuredValues("part1", "part2"), }}, }, } - arrayTaskRunWith1StringParam = &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - Params: v1beta1.Params{{ + arrayTaskRunWith1StringParam = &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + Params: []v1.Param{{ Name: "array-param", - Value: *v1beta1.NewStructuredValues("middlefirst", "middlesecond"), + Value: *v1.NewStructuredValues("middlefirst", "middlesecond"), }, { Name: "normal-param", - Value: *v1beta1.NewStructuredValues("foo"), + Value: *v1.NewStructuredValues("foo"), }}, }, } - arrayTaskRunWith1ObjectParam = &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - Params: v1beta1.Params{{ + arrayTaskRunWith1ObjectParam = &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + Params: []v1.Param{{ Name: "array-param", - Value: *v1beta1.NewStructuredValues("middlefirst", "middlesecond"), + Value: *v1.NewStructuredValues("middlefirst", "middlesecond"), }, { Name: "myObject", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "object value1", "key2": "object value2", }), @@ -581,35 +581,35 @@ var ( }, } - arrayTaskRunMultipleArraysAndStrings = &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - Params: v1beta1.Params{{ + arrayTaskRunMultipleArraysAndStrings = &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + Params: []v1.Param{{ Name: "array-param1", - Value: *v1beta1.NewStructuredValues("1-param1", "2-param1", "3-param1", "4-param1"), + Value: *v1.NewStructuredValues("1-param1", "2-param1", "3-param1", "4-param1"), }, { Name: "array-param2", - Value: *v1beta1.NewStructuredValues("1-param2", "2-param2", "2-param3"), + Value: *v1.NewStructuredValues("1-param2", "2-param2", "2-param3"), }, { Name: "string-param1", - Value: *v1beta1.NewStructuredValues("foo"), + Value: *v1.NewStructuredValues("foo"), }, { Name: "string-param2", - Value: *v1beta1.NewStructuredValues("bar"), + Value: *v1.NewStructuredValues("bar"), }}, }, } - arrayTaskRunMultipleArraysAndObject = &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - Params: v1beta1.Params{{ + arrayTaskRunMultipleArraysAndObject = &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + Params: []v1.Param{{ Name: "array-param1", - Value: *v1beta1.NewStructuredValues("1-param1", "2-param1", "3-param1", "4-param1"), + Value: *v1.NewStructuredValues("1-param1", "2-param1", "3-param1", "4-param1"), }, { Name: "array-param2", - Value: *v1beta1.NewStructuredValues("1-param2", "2-param2", "3-param3"), + Value: *v1.NewStructuredValues("1-param2", "2-param2", "3-param3"), }, { Name: "myObject", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "value1", "key2": "value2", }), @@ -618,7 +618,7 @@ var ( } ) -func applyMutation(ts *v1beta1.TaskSpec, f func(*v1beta1.TaskSpec)) *v1beta1.TaskSpec { +func applyMutation(ts *v1.TaskSpec, f func(*v1.TaskSpec)) *v1.TaskSpec { ts = ts.DeepCopy() f(ts) return ts @@ -626,21 +626,21 @@ func applyMutation(ts *v1beta1.TaskSpec, f func(*v1beta1.TaskSpec)) *v1beta1.Tas func TestApplyArrayParameters(t *testing.T) { type args struct { - ts *v1beta1.TaskSpec - tr *v1beta1.TaskRun - dp []v1beta1.ParamSpec + ts *v1.TaskSpec + tr *v1.TaskRun + dp []v1.ParamSpec } tests := []struct { name string args args - want *v1beta1.TaskSpec + want *v1.TaskSpec }{{ name: "array parameter with 0 elements", args: args{ ts: arrayParamTaskSpec, tr: arrayTaskRun0Elements, }, - want: applyMutation(arrayParamTaskSpec, func(spec *v1beta1.TaskSpec) { + want: applyMutation(arrayParamTaskSpec, func(spec *v1.TaskSpec) { spec.Steps[1].Args = []string{"first", "second", "last"} }), }, { @@ -649,7 +649,7 @@ func TestApplyArrayParameters(t *testing.T) { ts: arrayParamTaskSpec, tr: arrayTaskRun1Elements, }, - want: applyMutation(arrayParamTaskSpec, func(spec *v1beta1.TaskSpec) { + want: applyMutation(arrayParamTaskSpec, func(spec *v1.TaskSpec) { spec.Steps[1].Args = []string{"first", "second", "foo", "last"} }), }, { @@ -658,7 +658,7 @@ func TestApplyArrayParameters(t *testing.T) { ts: arrayParamTaskSpec, tr: arrayTaskRun3Elements, }, - want: applyMutation(arrayParamTaskSpec, func(spec *v1beta1.TaskSpec) { + want: applyMutation(arrayParamTaskSpec, func(spec *v1.TaskSpec) { spec.Steps[1].Args = []string{"first", "second", "foo", "bar", "third", "last"} }), }, { @@ -667,7 +667,7 @@ func TestApplyArrayParameters(t *testing.T) { ts: multipleArrayParamsTaskSpec, tr: arrayTaskRunMultipleArrays, }, - want: applyMutation(multipleArrayParamsTaskSpec, func(spec *v1beta1.TaskSpec) { + want: applyMutation(multipleArrayParamsTaskSpec, func(spec *v1.TaskSpec) { spec.Steps[1].Command = []string{"cmd", "part1", "part2"} spec.Steps[1].Args = []string{"first", "second", "foo", "bar", "third", "last"} }), @@ -677,7 +677,7 @@ func TestApplyArrayParameters(t *testing.T) { ts: arrayAndStringParamTaskSpec, tr: arrayTaskRunWith1StringParam, }, - want: applyMutation(arrayAndStringParamTaskSpec, func(spec *v1beta1.TaskSpec) { + want: applyMutation(arrayAndStringParamTaskSpec, func(spec *v1.TaskSpec) { spec.Steps[1].Args = []string{"foo", "second", "middlefirst", "middlesecond", "last"} }), }, { @@ -686,7 +686,7 @@ func TestApplyArrayParameters(t *testing.T) { ts: multipleArrayAndStringsParamsTaskSpec, tr: arrayTaskRunMultipleArraysAndStrings, }, - want: applyMutation(multipleArrayAndStringsParamsTaskSpec, func(spec *v1beta1.TaskSpec) { + want: applyMutation(multipleArrayAndStringsParamsTaskSpec, func(spec *v1.TaskSpec) { spec.Steps[0].Image = "image-bar" spec.Steps[1].Command = []string{"cmd", "1-param1", "2-param1", "3-param1", "4-param1"} spec.Steps[1].Args = []string{"1-param2", "2-param2", "2-param3", "second", "1-param1", "2-param1", "3-param1", "4-param1", "foo", "last"} @@ -697,7 +697,7 @@ func TestApplyArrayParameters(t *testing.T) { ts: arrayAndObjectParamTaskSpec, tr: arrayTaskRunWith1ObjectParam, }, - want: applyMutation(arrayAndObjectParamTaskSpec, func(spec *v1beta1.TaskSpec) { + want: applyMutation(arrayAndObjectParamTaskSpec, func(spec *v1.TaskSpec) { spec.Steps[1].Args = []string{"object value1", "object value2", "middlefirst", "middlesecond", "last"} }), }, { @@ -706,7 +706,7 @@ func TestApplyArrayParameters(t *testing.T) { ts: multipleArrayAndObjectParamsTaskSpec, tr: arrayTaskRunMultipleArraysAndObject, }, - want: applyMutation(multipleArrayAndObjectParamsTaskSpec, func(spec *v1beta1.TaskSpec) { + want: applyMutation(multipleArrayAndObjectParamsTaskSpec, func(spec *v1.TaskSpec) { spec.Steps[0].Image = "image-value1" spec.Steps[1].Command = []string{"cmd", "1-param1", "2-param1", "3-param1", "4-param1"} spec.Steps[1].Args = []string{"1-param2", "2-param2", "3-param3", "second", "1-param1", "2-param1", "3-param1", "4-param1", "value2", "last"} @@ -715,13 +715,13 @@ func TestApplyArrayParameters(t *testing.T) { name: "default array parameter", args: args{ ts: arrayParamTaskSpec, - tr: &v1beta1.TaskRun{}, - dp: []v1beta1.ParamSpec{{ + tr: &v1.TaskRun{}, + dp: []v1.ParamSpec{{ Name: "array-param", - Default: v1beta1.NewStructuredValues("defaulted", "value!"), + Default: v1.NewStructuredValues("defaulted", "value!"), }}, }, - want: applyMutation(arrayParamTaskSpec, func(spec *v1beta1.TaskSpec) { + want: applyMutation(arrayParamTaskSpec, func(spec *v1.TaskSpec) { spec.Steps[1].Args = []string{"first", "second", "defaulted", "value!", "last"} }), }} @@ -736,25 +736,25 @@ func TestApplyArrayParameters(t *testing.T) { } func TestApplyParameters(t *testing.T) { - tr := &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - Params: v1beta1.Params{{ + tr := &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + Params: []v1.Param{{ Name: "myimage", - Value: *v1beta1.NewStructuredValues("bar"), + Value: *v1.NewStructuredValues("bar"), }, { Name: "FOO", - Value: *v1beta1.NewStructuredValues("world"), + Value: *v1.NewStructuredValues("world"), }}, }, } - dp := []v1beta1.ParamSpec{{ + dp := []v1.ParamSpec{{ Name: "something", - Default: v1beta1.NewStructuredValues("mydefault"), + Default: v1.NewStructuredValues("mydefault"), }, { Name: "somethingelse", - Default: v1beta1.NewStructuredValues(""), + Default: v1.NewStructuredValues(""), }} - want := applyMutation(simpleTaskSpec, func(spec *v1beta1.TaskSpec) { + want := applyMutation(simpleTaskSpec, func(spec *v1.TaskSpec) { spec.StepTemplate.Env[0].Value = "world" spec.StepTemplate.Image = "bar" @@ -803,25 +803,25 @@ func TestApplyParameters(t *testing.T) { } func TestApplyParameters_ArrayIndexing(t *testing.T) { - tr := &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - Params: v1beta1.Params{{ + tr := &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + Params: []v1.Param{{ Name: "myimage", - Value: *v1beta1.NewStructuredValues("bar", "foo"), + Value: *v1.NewStructuredValues("bar", "foo"), }, { Name: "FOO", - Value: *v1beta1.NewStructuredValues("hello", "world"), + Value: *v1.NewStructuredValues("hello", "world"), }}, }, } - dp := []v1beta1.ParamSpec{{ + dp := []v1.ParamSpec{{ Name: "something", - Default: v1beta1.NewStructuredValues("mydefault", "mydefault2"), + Default: v1.NewStructuredValues("mydefault", "mydefault2"), }, { Name: "somethingelse", - Default: v1beta1.NewStructuredValues(""), + Default: v1.NewStructuredValues(""), }} - want := applyMutation(simpleTaskSpec, func(spec *v1beta1.TaskSpec) { + want := applyMutation(simpleTaskSpec, func(spec *v1.TaskSpec) { spec.StepTemplate.Env[0].Value = "world" spec.StepTemplate.Image = "bar" @@ -870,26 +870,26 @@ func TestApplyParameters_ArrayIndexing(t *testing.T) { func TestApplyObjectParameters(t *testing.T) { // define the taskrun to test values provided by taskrun can overwrite the values provided in spec's default - tr := &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - Params: v1beta1.Params{{ + tr := &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + Params: []v1.Param{{ Name: "myObject", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "taskrun-value-for-key1", "key2": "taskrun-value-for-key2", }), }}, }, } - dp := []v1beta1.ParamSpec{{ + dp := []v1.ParamSpec{{ Name: "myObject", - Default: v1beta1.NewObject(map[string]string{ + Default: v1.NewObject(map[string]string{ "key1": "default-value-for-key1", "key2": "default-value-for-key2", }), }} - want := applyMutation(objectParamTaskSpec, func(spec *v1beta1.TaskSpec) { + want := applyMutation(objectParamTaskSpec, func(spec *v1.TaskSpec) { spec.Sidecars[0].Image = "taskrun-value-for-key1" spec.Sidecars[0].Env[0].Value = "taskrun-value-for-key2" @@ -936,8 +936,8 @@ func TestApplyObjectParameters(t *testing.T) { func TestApplyWorkspaces(t *testing.T) { names.TestingSeed() - ts := &v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + ts := &v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ Env: []corev1.EnvVar{{ Name: "template-var", Value: "$(workspaces.myws.volume)", @@ -949,7 +949,7 @@ func TestApplyWorkspaces(t *testing.T) { Value: "$(workspaces.otherws.claim)", }}, }, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "$(workspaces.myws.volume)", Image: "$(workspaces.otherws.volume)", WorkingDir: "$(workspaces.otherws.volume)", @@ -1009,20 +1009,20 @@ func TestApplyWorkspaces(t *testing.T) { } for _, tc := range []struct { name string - spec *v1beta1.TaskSpec - decls []v1beta1.WorkspaceDeclaration - binds []v1beta1.WorkspaceBinding - want *v1beta1.TaskSpec + spec *v1.TaskSpec + decls []v1.WorkspaceDeclaration + binds []v1.WorkspaceBinding + want *v1.TaskSpec }{{ name: "workspace-variable-replacement", spec: ts.DeepCopy(), - decls: []v1beta1.WorkspaceDeclaration{{ + decls: []v1.WorkspaceDeclaration{{ Name: "myws", }, { Name: "otherws", MountPath: "/foo", }}, - binds: []v1beta1.WorkspaceBinding{{ + binds: []v1.WorkspaceBinding{{ Name: "myws", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "foo", @@ -1031,7 +1031,7 @@ func TestApplyWorkspaces(t *testing.T) { Name: "otherws", EmptyDir: &corev1.EmptyDirVolumeSource{}, }}, - want: applyMutation(ts, func(spec *v1beta1.TaskSpec) { + want: applyMutation(ts, func(spec *v1.TaskSpec) { spec.StepTemplate.Env[0].Value = "ws-9l9zj" spec.StepTemplate.Env[1].Value = "foo" spec.StepTemplate.Env[2].Value = "" @@ -1058,31 +1058,31 @@ func TestApplyWorkspaces(t *testing.T) { }), }, { name: "optional-workspace-provided-variable-replacement", - spec: &v1beta1.TaskSpec{Steps: []v1beta1.Step{{ + spec: &v1.TaskSpec{Steps: []v1.Step{{ Script: `test "$(workspaces.ows.bound)" = "true" && echo "$(workspaces.ows.path)"`, }}}, - decls: []v1beta1.WorkspaceDeclaration{{ + decls: []v1.WorkspaceDeclaration{{ Name: "ows", Optional: true, }}, - binds: []v1beta1.WorkspaceBinding{{ + binds: []v1.WorkspaceBinding{{ Name: "ows", EmptyDir: &corev1.EmptyDirVolumeSource{}, }}, - want: &v1beta1.TaskSpec{Steps: []v1beta1.Step{{ + want: &v1.TaskSpec{Steps: []v1.Step{{ Script: `test "true" = "true" && echo "/workspace/ows"`, }}}, }, { name: "optional-workspace-omitted-variable-replacement", - spec: &v1beta1.TaskSpec{Steps: []v1beta1.Step{{ + spec: &v1.TaskSpec{Steps: []v1.Step{{ Script: `test "$(workspaces.ows.bound)" = "true" && echo "$(workspaces.ows.path)"`, }}}, - decls: []v1beta1.WorkspaceDeclaration{{ + decls: []v1.WorkspaceDeclaration{{ Name: "ows", Optional: true, }}, - binds: []v1beta1.WorkspaceBinding{}, // intentionally omitted ows binding - want: &v1beta1.TaskSpec{Steps: []v1beta1.Step{{ + binds: []v1.WorkspaceBinding{}, // intentionally omitted ows binding + want: &v1.TaskSpec{Steps: []v1.Step{{ Script: `test "false" = "true" && echo ""`, }}}, }} { @@ -1099,56 +1099,56 @@ func TestApplyWorkspaces(t *testing.T) { func TestApplyWorkspaces_IsolatedWorkspaces(t *testing.T) { for _, tc := range []struct { name string - spec *v1beta1.TaskSpec - decls []v1beta1.WorkspaceDeclaration - binds []v1beta1.WorkspaceBinding - want *v1beta1.TaskSpec + spec *v1.TaskSpec + decls []v1.WorkspaceDeclaration + binds []v1.WorkspaceBinding + want *v1.TaskSpec }{{ name: "step-workspace-with-custom-mountpath", - spec: &v1beta1.TaskSpec{Steps: []v1beta1.Step{{ + spec: &v1.TaskSpec{Steps: []v1.Step{{ Script: `echo "$(workspaces.ws.path)"`, - Workspaces: []v1beta1.WorkspaceUsage{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "ws", MountPath: "/foo", }}, }, { Script: `echo "$(workspaces.ws.path)"`, - }}, Sidecars: []v1beta1.Sidecar{{ + }}, Sidecars: []v1.Sidecar{{ Script: `echo "$(workspaces.ws.path)"`, }}}, - decls: []v1beta1.WorkspaceDeclaration{{ + decls: []v1.WorkspaceDeclaration{{ Name: "ws", }}, - want: &v1beta1.TaskSpec{Steps: []v1beta1.Step{{ + want: &v1.TaskSpec{Steps: []v1.Step{{ Script: `echo "/foo"`, - Workspaces: []v1beta1.WorkspaceUsage{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "ws", MountPath: "/foo", }}, }, { Script: `echo "/workspace/ws"`, - }}, Sidecars: []v1beta1.Sidecar{{ + }}, Sidecars: []v1.Sidecar{{ Script: `echo "/workspace/ws"`, }}}, }, { name: "sidecar-workspace-with-custom-mountpath", - spec: &v1beta1.TaskSpec{Steps: []v1beta1.Step{{ + spec: &v1.TaskSpec{Steps: []v1.Step{{ Script: `echo "$(workspaces.ws.path)"`, - }}, Sidecars: []v1beta1.Sidecar{{ + }}, Sidecars: []v1.Sidecar{{ Script: `echo "$(workspaces.ws.path)"`, - Workspaces: []v1beta1.WorkspaceUsage{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "ws", MountPath: "/bar", }}, }}}, - decls: []v1beta1.WorkspaceDeclaration{{ + decls: []v1.WorkspaceDeclaration{{ Name: "ws", }}, - want: &v1beta1.TaskSpec{Steps: []v1beta1.Step{{ + want: &v1.TaskSpec{Steps: []v1.Step{{ Script: `echo "/workspace/ws"`, - }}, Sidecars: []v1beta1.Sidecar{{ + }}, Sidecars: []v1.Sidecar{{ Script: `echo "/bar"`, - Workspaces: []v1beta1.WorkspaceUsage{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "ws", MountPath: "/bar", }}, @@ -1173,21 +1173,21 @@ func TestContext(t *testing.T) { for _, tc := range []struct { description string taskName string - tr v1beta1.TaskRun - spec v1beta1.TaskSpec - want v1beta1.TaskSpec + tr v1.TaskRun + spec v1.TaskSpec + want v1.TaskSpec }{{ description: "context taskName replacement without taskRun in spec container", taskName: "Task1", - tr: v1beta1.TaskRun{}, - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + tr: v1.TaskRun{}, + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "$(context.task.name)-1", }}, }, - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "Task1-1", }}, @@ -1195,19 +1195,19 @@ func TestContext(t *testing.T) { }, { description: "context taskName replacement with taskRun in spec container", taskName: "Task1", - tr: v1beta1.TaskRun{ + tr: v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "taskrunName", }, }, - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "$(context.task.name)-1", }}, }, - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "Task1-1", }}, @@ -1215,19 +1215,19 @@ func TestContext(t *testing.T) { }, { description: "context taskRunName replacement with defined taskRun in spec container", taskName: "Task1", - tr: v1beta1.TaskRun{ + tr: v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "taskrunName", }, }, - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "$(context.taskRun.name)-1", }}, }, - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "taskrunName-1", }}, @@ -1235,15 +1235,15 @@ func TestContext(t *testing.T) { }, { description: "context taskRunName replacement with no defined taskRun name in spec container", taskName: "Task1", - tr: v1beta1.TaskRun{}, - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + tr: v1.TaskRun{}, + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "$(context.taskRun.name)-1", }}, }, - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "-1", }}, @@ -1251,15 +1251,15 @@ func TestContext(t *testing.T) { }, { description: "context taskRun namespace replacement with no defined namepsace in spec container", taskName: "Task1", - tr: v1beta1.TaskRun{}, - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + tr: v1.TaskRun{}, + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "$(context.taskRun.namespace)-1", }}, }, - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "-1", }}, @@ -1267,35 +1267,35 @@ func TestContext(t *testing.T) { }, { description: "context taskRun namespace replacement with defined namepsace in spec container", taskName: "Task1", - tr: v1beta1.TaskRun{ + tr: v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "taskrunName", Namespace: "trNamespace", }, }, - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "$(context.taskRun.namespace)-1", }}, }, - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "trNamespace-1", }}, }, }, { description: "context taskRunName replacement with no defined taskName in spec container", - tr: v1beta1.TaskRun{}, - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + tr: v1.TaskRun{}, + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "$(context.task.name)-1", }}, }, - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "-1", }}, @@ -1303,29 +1303,29 @@ func TestContext(t *testing.T) { }, { description: "context UID replacement", taskName: "Task1", - tr: v1beta1.TaskRun{ + tr: v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ UID: "UID-1", }, }, - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "$(context.taskRun.uid)", }}, }, - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "UID-1", }}, }, }, { description: "context retry count replacement", - tr: v1beta1.TaskRun{ - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - RetriesStatus: []v1beta1.TaskRunStatus{{ + tr: v1.TaskRun{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + RetriesStatus: []v1.TaskRunStatus{{ Status: duckv1.Status{ Conditions: []apis.Condition{{ Type: apis.ConditionSucceeded, @@ -1343,29 +1343,29 @@ func TestContext(t *testing.T) { }, }, }, - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "$(context.task.retry-count)-1", }}, }, - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "2-1", }}, }, }, { description: "context retry count replacement with task that never retries", - tr: v1beta1.TaskRun{}, - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + tr: v1.TaskRun{}, + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "$(context.task.retry-count)-1", }}, }, - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "ImageName", Image: "0-1", }}, @@ -1382,15 +1382,15 @@ func TestContext(t *testing.T) { func TestTaskResults(t *testing.T) { names.TestingSeed() - ts := &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{{ + ts := &v1.TaskSpec{ + Results: []v1.TaskResult{{ Name: "current.date.unix.timestamp", Description: "The current date in unix timestamp format", }, { Name: "current-date-human-readable", Description: "The current date in humand readable format"}, }, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "print-date-unix-timestamp", Image: "bash:latest", Args: []string{"$(results[\"current.date.unix.timestamp\"].path)"}, @@ -1405,7 +1405,7 @@ func TestTaskResults(t *testing.T) { Script: "#!/usr/bin/env bash\ndate | tee $(results['current-date-human-readable'].path)", }}, } - want := applyMutation(ts, func(spec *v1beta1.TaskSpec) { + want := applyMutation(ts, func(spec *v1.TaskSpec) { spec.Steps[0].Script = "#!/usr/bin/env bash\ndate +%s | tee /tekton/results/current.date.unix.timestamp" spec.Steps[0].Args[0] = "/tekton/results/current.date.unix.timestamp" spec.Steps[1].Script = "#!/usr/bin/env bash\ndate | tee /tekton/results/current-date-human-readable" @@ -1419,8 +1419,8 @@ func TestTaskResults(t *testing.T) { func TestApplyStepExitCodePath(t *testing.T) { names.TestingSeed() - ts := &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts := &v1.TaskSpec{ + Steps: []v1.Step{{ Image: "bash:latest", Script: "#!/usr/bin/env bash\nexit 11", }, { @@ -1433,7 +1433,7 @@ func TestApplyStepExitCodePath(t *testing.T) { Script: "#!/usr/bin/env bash\ncat $(steps.step-failing-step.exitCode.path)", }}, } - expected := applyMutation(ts, func(spec *v1beta1.TaskSpec) { + expected := applyMutation(ts, func(spec *v1.TaskSpec) { spec.Steps[1].Script = "#!/usr/bin/env bash\ncat /tekton/steps/step-unnamed-0/exitCode" spec.Steps[2].Script = "#!/usr/bin/env bash\ncat /tekton/steps/step-failing-step/exitCode" }) @@ -1446,34 +1446,34 @@ func TestApplyStepExitCodePath(t *testing.T) { func TestApplyCredentialsPath(t *testing.T) { for _, tc := range []struct { description string - spec v1beta1.TaskSpec + spec v1.TaskSpec path string - want v1beta1.TaskSpec + want v1.TaskSpec }{{ description: "replacement in spec container", - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Command: []string{"cp"}, Args: []string{"-R", "$(credentials.path)/", "$HOME"}, }}, }, path: "/tekton/creds", - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Command: []string{"cp"}, Args: []string{"-R", "/tekton/creds/", "$HOME"}, }}, }, }, { description: "replacement in spec Script", - spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + spec: v1.TaskSpec{ + Steps: []v1.Step{{ Script: `cp -R "$(credentials.path)/" $HOME`, }}, }, path: "/tekton/home", - want: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + want: v1.TaskSpec{ + Steps: []v1.Step{{ Script: `cp -R "/tekton/home/" $HOME`, }}, }, diff --git a/pkg/reconciler/taskrun/resources/taskref.go b/pkg/reconciler/taskrun/resources/taskref.go index 450d7e0ed95..3b72d3c3a67 100644 --- a/pkg/reconciler/taskrun/resources/taskref.go +++ b/pkg/reconciler/taskrun/resources/taskref.go @@ -22,13 +22,11 @@ import ( "fmt" "strings" - "github.com/google/go-containerregistry/pkg/authn/k8schain" v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" clientset "github.com/tektoncd/pipeline/pkg/client/clientset/versioned" "github.com/tektoncd/pipeline/pkg/remote" - "github.com/tektoncd/pipeline/pkg/remote/oci" "github.com/tektoncd/pipeline/pkg/remote/resolution" remoteresource "github.com/tektoncd/pipeline/pkg/resolution/resource" "github.com/tektoncd/pipeline/pkg/trustedresources" @@ -45,8 +43,8 @@ import ( var errEtcdLeaderChange = "etcdserver: leader changed" // GetTaskKind returns the referenced Task kind (Task, ClusterTask, ...) if the TaskRun is using TaskRef. -func GetTaskKind(taskrun *v1beta1.TaskRun) v1beta1.TaskKind { - kind := v1beta1.NamespacedTaskKind +func GetTaskKind(taskrun *v1.TaskRun) v1.TaskKind { + kind := v1.NamespacedTaskKind if taskrun.Spec.TaskRef != nil && taskrun.Spec.TaskRef.Kind != "" { kind = taskrun.Spec.TaskRef.Kind } @@ -58,16 +56,16 @@ func GetTaskKind(taskrun *v1beta1.TaskRun) v1beta1.TaskKind { // cluster or authorize against an external repositroy. It will figure out whether it needs to look in the cluster or in // a remote image to fetch the reference. It will also return the "kind" of the task being referenced. // OCI bundle and remote resolution tasks will be verified by trusted resources if the feature is enabled -func GetTaskFuncFromTaskRun(ctx context.Context, k8s kubernetes.Interface, tekton clientset.Interface, requester remoteresource.Requester, taskrun *v1beta1.TaskRun, verificationPolicies []*v1alpha1.VerificationPolicy) GetTask { +func GetTaskFuncFromTaskRun(ctx context.Context, k8s kubernetes.Interface, tekton clientset.Interface, requester remoteresource.Requester, taskrun *v1.TaskRun, verificationPolicies []*v1alpha1.VerificationPolicy) GetTask { // if the spec is already in the status, do not try to fetch it again, just use it as source of truth. // Same for the RefSource field in the Status.Provenance. if taskrun.Status.TaskSpec != nil { - return func(_ context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { - var refSource *v1beta1.RefSource + return func(_ context.Context, name string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { + var refSource *v1.RefSource if taskrun.Status.Provenance != nil { refSource = taskrun.Status.Provenance.RefSource } - return &v1beta1.Task{ + return &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: taskrun.Namespace, @@ -85,35 +83,19 @@ func GetTaskFuncFromTaskRun(ctx context.Context, k8s kubernetes.Interface, tekto // a remote image to fetch the reference. It will also return the "kind" of the task being referenced. // OCI bundle and remote resolution tasks will be verified by trusted resources if the feature is enabled func GetTaskFunc(ctx context.Context, k8s kubernetes.Interface, tekton clientset.Interface, requester remoteresource.Requester, - owner kmeta.OwnerRefable, tr *v1beta1.TaskRef, trName string, namespace, saName string, verificationPolicies []*v1alpha1.VerificationPolicy) GetTask { - kind := v1beta1.NamespacedTaskKind + owner kmeta.OwnerRefable, tr *v1.TaskRef, trName string, namespace, saName string, verificationPolicies []*v1alpha1.VerificationPolicy) GetTask { + kind := v1.NamespacedTaskKind if tr != nil && tr.Kind != "" { kind = tr.Kind } switch { - case tr != nil && tr.Bundle != "": - // Return an inline function that implements GetTask by calling Resolver.Get with the specified task type and - // casting it to a TaskObject. - return func(ctx context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { - // If there is a bundle url at all, construct an OCI resolver to fetch the task. - kc, err := k8schain.New(ctx, k8s, k8schain.Options{ - Namespace: namespace, - ServiceAccountName: saName, - }) - if err != nil { - return nil, nil, nil, fmt.Errorf("failed to get keychain: %w", err) - } - resolver := oci.NewResolver(tr.Bundle, kc) - - return resolveTask(ctx, resolver, name, kind, k8s, verificationPolicies) - } case tr != nil && tr.Resolver != "" && requester != nil: // Return an inline function that implements GetTask by calling Resolver.Get with the specified task type and // casting it to a TaskObject. - return func(ctx context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { - var replacedParams v1beta1.Params - if ownerAsTR, ok := owner.(*v1beta1.TaskRun); ok { + return func(ctx context.Context, name string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { + var replacedParams v1.Params + if ownerAsTR, ok := owner.(*v1.TaskRun); ok { stringReplacements, arrayReplacements := paramsFromTaskRun(ctx, ownerAsTR) for k, v := range getContextReplacements("", ownerAsTR) { stringReplacements[k] = v @@ -145,7 +127,7 @@ func GetTaskFunc(ctx context.Context, k8s kubernetes.Interface, tekton clientset // An error is returned if the remoteresource doesn't work // A VerificationResult is returned if trusted resources is enabled, VerificationResult contains the result type and err. // or the returned data isn't a valid *v1beta1.Task. -func resolveTask(ctx context.Context, resolver remote.Resolver, name string, kind v1beta1.TaskKind, k8s kubernetes.Interface, verificationPolicies []*v1alpha1.VerificationPolicy) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { +func resolveTask(ctx context.Context, resolver remote.Resolver, name string, kind v1.TaskKind, k8s kubernetes.Interface, verificationPolicies []*v1alpha1.VerificationPolicy) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { // Because the resolver will only return references with the same kind (eg ClusterTask), this will ensure we // don't accidentally return a Task with the same name but different kind. obj, refSource, err := resolver.Get(ctx, strings.TrimSuffix(strings.ToLower(string(kind)), "s"), name) @@ -160,22 +142,32 @@ func resolveTask(ctx context.Context, resolver remote.Resolver, name string, kin } // readRuntimeObjectAsTask tries to convert a generic runtime.Object -// into a *v1beta1.Task type so that its meta and spec fields -// can be read. v1 object will be converted to v1beta1 and returned. +// into a *v1.Task type so that its meta and spec fields +// can be read. v1beta1 object will be converted to v1 and returned. // An error is returned if the given object is not a Task nor a ClusterTask // or if there is an error validating or upgrading an older TaskObject into // its v1beta1 equivalent. // A VerificationResult is returned if trusted resources is enabled, VerificationResult contains the result type and err. // v1beta1 task will be verified by trusted resources if the feature is enabled // TODO(#5541): convert v1beta1 obj to v1 once we use v1 as the stored version -func readRuntimeObjectAsTask(ctx context.Context, obj runtime.Object, k8s kubernetes.Interface, refSource *v1beta1.RefSource, verificationPolicies []*v1alpha1.VerificationPolicy) (*v1beta1.Task, *trustedresources.VerificationResult, error) { +func readRuntimeObjectAsTask(ctx context.Context, obj runtime.Object, k8s kubernetes.Interface, refSource *v1.RefSource, verificationPolicies []*v1alpha1.VerificationPolicy) (*v1.Task, *trustedresources.VerificationResult, error) { switch obj := obj.(type) { case *v1beta1.Task: // Verify the Task once we fetch from the remote resolution, mutating, validation and conversion of the task should happen after the verification, since signatures are based on the remote task contents vr := trustedresources.VerifyResource(ctx, obj, k8s, refSource, verificationPolicies) - return obj, &vr, nil + t := &v1.Task{ + TypeMeta: metav1.TypeMeta{ + Kind: "Task", + APIVersion: "tekton.dev/v1", + }, + } + if err := obj.ConvertTo(ctx, t); err != nil { + return nil, nil, fmt.Errorf("failed to convert obj %s into Pipeline", obj.GetObjectKind().GroupVersionKind().String()) + } + return t, &vr, nil case *v1beta1.ClusterTask: - return convertClusterTaskToTask(*obj), nil, nil + t, err := convertClusterTaskToTask(ctx, *obj) + return t, nil, err case *v1.Task: vr := trustedresources.VerifyResource(ctx, obj, k8s, refSource, verificationPolicies) // Validation of beta fields must happen before the V1 Task is converted into the storage version of the API. @@ -183,16 +175,7 @@ func readRuntimeObjectAsTask(ctx context.Context, obj runtime.Object, k8s kubern if err := obj.Spec.ValidateBetaFields(ctx); err != nil { return nil, nil, fmt.Errorf("invalid Task %s: %w", obj.GetName(), err) } - t := &v1beta1.Task{ - TypeMeta: metav1.TypeMeta{ - Kind: "Task", - APIVersion: "tekton.dev/v1beta1", - }, - } - if err := t.ConvertFrom(ctx, obj); err != nil { - return nil, nil, fmt.Errorf("failed to convert obj %s into Task", obj.GetObjectKind().GroupVersionKind().String()) - } - return t, &vr, nil + return obj, &vr, nil } return nil, nil, errors.New("resource is not a task") } @@ -200,27 +183,28 @@ func readRuntimeObjectAsTask(ctx context.Context, obj runtime.Object, k8s kubern // LocalTaskRefResolver uses the current cluster to resolve a task reference. type LocalTaskRefResolver struct { Namespace string - Kind v1beta1.TaskKind + Kind v1.TaskKind Tektonclient clientset.Interface } // GetTask will resolve either a Task or ClusterTask from the local cluster using a versioned Tekton client. It will // return an error if it can't find an appropriate Task for any reason. // TODO(#6666): support local task verification -func (l *LocalTaskRefResolver) GetTask(ctx context.Context, name string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { - if l.Kind == v1beta1.ClusterTaskKind { +func (l *LocalTaskRefResolver) GetTask(ctx context.Context, name string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { + if l.Kind == v1.ClusterTaskRefKind { task, err := l.Tektonclient.TektonV1beta1().ClusterTasks().Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, nil, nil, err } - return convertClusterTaskToTask(*task), nil, nil, nil + v1task, err := convertClusterTaskToTask(ctx, *task) + return v1task, nil, nil, err } // If we are going to resolve this reference locally, we need a namespace scope. if l.Namespace == "" { return nil, nil, nil, fmt.Errorf("must specify namespace to resolve reference to task %s", name) } - task, err := l.Tektonclient.TektonV1beta1().Tasks(l.Namespace).Get(ctx, name, metav1.GetOptions{}) + task, err := l.Tektonclient.TektonV1().Tasks(l.Namespace).Get(ctx, name, metav1.GetOptions{}) if err != nil { return nil, nil, nil, err } @@ -236,7 +220,7 @@ func IsGetTaskErrTransient(err error) bool { // the rest of reconciling process since GetTask func and its upstream callers only // fetches the task spec and stores it in the taskrun status while the kind info // is not being used. -func convertClusterTaskToTask(ct v1beta1.ClusterTask) *v1beta1.Task { +func convertClusterTaskToTask(ctx context.Context, ct v1beta1.ClusterTask) (*v1.Task, error) { t := &v1beta1.Task{ TypeMeta: metav1.TypeMeta{ Kind: "Task", @@ -247,5 +231,16 @@ func convertClusterTaskToTask(ct v1beta1.ClusterTask) *v1beta1.Task { t.Spec = ct.Spec t.ObjectMeta.Name = ct.ObjectMeta.Name - return t + v1Task := &v1.Task{ + TypeMeta: metav1.TypeMeta{ + Kind: "Task", + APIVersion: "tekton.dev/v1", + }, + } + + if err := t.ConvertTo(ctx, v1Task); err != nil { + return nil, err + } + + return v1Task, nil } diff --git a/pkg/reconciler/taskrun/resources/taskref_test.go b/pkg/reconciler/taskrun/resources/taskref_test.go index 9a3fb168e7a..53fc64ec897 100644 --- a/pkg/reconciler/taskrun/resources/taskref_test.go +++ b/pkg/reconciler/taskrun/resources/taskref_test.go @@ -24,16 +24,13 @@ import ( "encoding/json" "errors" "fmt" - "net/http/httptest" - "net/url" "strings" "testing" "github.com/google/go-cmp/cmp" - "github.com/google/go-containerregistry/pkg/registry" "github.com/sigstore/sigstore/pkg/signature" "github.com/tektoncd/pipeline/pkg/apis/config" - pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/client/clientset/versioned/fake" @@ -43,7 +40,6 @@ import ( "github.com/tektoncd/pipeline/test/diff" "github.com/tektoncd/pipeline/test/parse" corev1 "k8s.io/api/core/v1" - v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime" fakek8s "k8s.io/client-go/kubernetes/fake" @@ -51,17 +47,17 @@ import ( ) var ( - simpleNamespacedTask = &v1beta1.Task{ + simpleNamespacedTask = &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "simple", Namespace: "default", }, TypeMeta: metav1.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "Task", }, - Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + Spec: v1.TaskSpec{ + Steps: []v1.Step{{ Image: "something", }}, }, @@ -80,14 +76,14 @@ var ( }}, }, } - sampleRefSource = &v1beta1.RefSource{ + sampleRefSource = &v1.RefSource{ URI: "abc.com", Digest: map[string]string{ "sha1": "a123", }, EntryPoint: "foo/bar", } - unsignedV1Task = pipelinev1.Task{ + unsignedV1Task = v1.Task{ TypeMeta: metav1.TypeMeta{ APIVersion: "tekton.dev/v1", Kind: "Task"}, @@ -95,8 +91,8 @@ var ( Name: "task", Annotations: map[string]string{"foo": "bar"}, }, - Spec: pipelinev1.TaskSpec{ - Steps: []pipelinev1.Step{{ + Spec: v1.TaskSpec{ + Steps: []v1.Step{{ Image: "ubuntu", Name: "echo", }}, @@ -110,36 +106,36 @@ var ( func TestGetTaskKind(t *testing.T) { testCases := []struct { name string - tr *v1beta1.TaskRun - expected v1beta1.TaskKind + tr *v1.TaskRun + expected v1.TaskKind }{ { name: "no task ref", - tr: &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - TaskSpec: &v1beta1.TaskSpec{}, + tr: &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + TaskSpec: &v1.TaskSpec{}, }, }, - expected: v1beta1.NamespacedTaskKind, + expected: v1.NamespacedTaskKind, }, { name: "no kind on task ref", - tr: &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{Name: "whatever"}, + tr: &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{Name: "whatever"}, }, }, - expected: v1beta1.NamespacedTaskKind, + expected: v1.NamespacedTaskKind, }, { name: "kind on task ref", - tr: &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{ + tr: &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{ Name: "whatever", Kind: "something-else", }, }, }, - expected: v1beta1.TaskKind("something-else"), + expected: v1.TaskKind("something-else"), }, } @@ -157,30 +153,30 @@ func TestLocalTaskRef(t *testing.T) { testcases := []struct { name string tasks []runtime.Object - ref *v1beta1.TaskRef + ref *v1.TaskRef expected runtime.Object wantErr bool }{ { name: "local-task", tasks: []runtime.Object{ - &v1beta1.Task{ + &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "simple", Namespace: "default", }, }, - &v1beta1.Task{ + &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "dummy", Namespace: "default", }, }, }, - ref: &v1beta1.TaskRef{ + ref: &v1.TaskRef{ Name: "simple", }, - expected: &v1beta1.Task{ + expected: &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "simple", Namespace: "default", @@ -202,13 +198,13 @@ func TestLocalTaskRef(t *testing.T) { }, }, }, - ref: &v1beta1.TaskRef{ + ref: &v1.TaskRef{ Name: "cluster-task", Kind: "ClusterTask", }, - expected: &v1beta1.Task{ + expected: &v1.Task{ TypeMeta: metav1.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "Task", }, ObjectMeta: metav1.ObjectMeta{ @@ -220,7 +216,7 @@ func TestLocalTaskRef(t *testing.T) { { name: "task-not-found", tasks: []runtime.Object{}, - ref: &v1beta1.TaskRef{ + ref: &v1.TaskRef{ Name: "simple", }, expected: nil, @@ -252,109 +248,9 @@ func TestLocalTaskRef(t *testing.T) { t.Error(diff.PrintWantGot(d)) } - // local cluster tasks have empty RefSource for now. This may be changed in future. + // local cluster tasks have empty source for now. This may be changed in future. if refSource != nil { - t.Errorf("expected refSource is nil, but got %v", refSource) - } - }) - } -} - -// TestGetTaskFunc_Bundle tests the deprecated v1beta1 bundle syntax, this -// can be removed when support for the bundle syntax is removed -func TestGetTaskFunc_Bundle(t *testing.T) { - // Set up a fake registry to push an image to. - s := httptest.NewServer(registry.New()) - defer s.Close() - u, err := url.Parse(s.URL) - if err != nil { - t.Fatal(err) - } - - ctx := context.Background() - - testcases := []struct { - name string - localTasks []runtime.Object - remoteTasks []runtime.Object - ref *v1beta1.TaskRef - expected runtime.Object - expectedKind v1beta1.TaskKind - }{ - { - name: "remote-task-bundle", - localTasks: []runtime.Object{simpleNamespacedTask}, - remoteTasks: []runtime.Object{ - &v1beta1.Task{ - ObjectMeta: metav1.ObjectMeta{ - Name: "simple", - }, - TypeMeta: metav1.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", - Kind: "Task", - }, - }, - &v1beta1.Task{ - ObjectMeta: metav1.ObjectMeta{ - Name: "dummy", - }, - TypeMeta: metav1.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", - Kind: "Task", - }, - }, - }, - ref: &v1beta1.TaskRef{ - Name: "simple", - Bundle: u.Host + "/remote-task-bundle", - }, - expected: &v1beta1.Task{ - ObjectMeta: metav1.ObjectMeta{ - Name: "simple", - }, - TypeMeta: metav1.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", - Kind: "Task", - }, - }, - expectedKind: v1beta1.NamespacedTaskKind, - }, - } - for _, tc := range testcases { - t.Run(tc.name, func(t *testing.T) { - tektonclient := fake.NewSimpleClientset(tc.localTasks...) - kubeclient := fakek8s.NewSimpleClientset(&v1.ServiceAccount{ - ObjectMeta: metav1.ObjectMeta{ - Namespace: "default", - Name: "default", - }, - }) - - _, err := test.CreateImage(u.Host+"/"+tc.name, tc.remoteTasks...) - if err != nil { - t.Fatalf("failed to upload test image: %s", err.Error()) - } - - tr := &v1beta1.TaskRun{ - ObjectMeta: metav1.ObjectMeta{Namespace: "default"}, - Spec: v1beta1.TaskRunSpec{ - TaskRef: tc.ref, - ServiceAccountName: "default", - }, - } - fn := resources.GetTaskFunc(ctx, kubeclient, tektonclient, nil, tr, tc.ref, "", "default", "default", nil /*VerificationPolicies*/) - - task, refSource, _, err := fn(ctx, tc.ref.Name) - if err != nil { - t.Fatalf("failed to call taskfn: %s", err.Error()) - } - - if diff := cmp.Diff(task, tc.expected); tc.expected != nil && diff != "" { - t.Error(diff) - } - - if refSource != nil { - t.Errorf("expected refSource is nil, but got %v", refSource) + t.Errorf("expected refsource is nil, but got %v", refSource) } }) } @@ -367,38 +263,38 @@ func TestGetTaskFunc_Local(t *testing.T) { name string localTasks []runtime.Object remoteTasks []runtime.Object - ref *v1beta1.TaskRef + ref *v1.TaskRef expected runtime.Object - expectedKind v1beta1.TaskKind + expectedKind v1.TaskKind }{ { name: "local-task", localTasks: []runtime.Object{simpleNamespacedTask}, remoteTasks: []runtime.Object{ - &v1beta1.Task{ + &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "simple", }, TypeMeta: metav1.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "Task", }, }, - &v1beta1.Task{ + &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "dummy", }, TypeMeta: metav1.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "Task", }, }, }, - ref: &v1beta1.TaskRef{ + ref: &v1.TaskRef{ Name: "simple", }, expected: simpleNamespacedTask, - expectedKind: v1beta1.NamespacedTaskKind, + expectedKind: v1.NamespacedTaskKind, }, { name: "local-cluster-task", localTasks: []runtime.Object{simpleClusterTask}, @@ -412,41 +308,41 @@ func TestGetTaskFunc_Local(t *testing.T) { ObjectMeta: metav1.ObjectMeta{Name: "dummy"}, }, }, - ref: &v1beta1.TaskRef{ + ref: &v1.TaskRef{ Name: "simple", - Kind: v1beta1.ClusterTaskKind, + Kind: v1.ClusterTaskRefKind, }, - expected: &v1beta1.Task{ + expected: &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "simple", }, TypeMeta: metav1.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "Task", }, - Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + Spec: v1.TaskSpec{ + Steps: []v1.Step{{ Image: "something", }}, }, }, - expectedKind: v1beta1.NamespacedTaskKind, + expectedKind: v1.NamespacedTaskKind, }, } for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { tektonclient := fake.NewSimpleClientset(tc.localTasks...) - kubeclient := fakek8s.NewSimpleClientset(&v1.ServiceAccount{ + kubeclient := fakek8s.NewSimpleClientset(&corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ Namespace: "default", Name: "default", }, }) - trForFunc := &v1beta1.TaskRun{ + trForFunc := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Name: "some-tr"}, - Spec: v1beta1.TaskRunSpec{ + Spec: v1.TaskRunSpec{ TaskRef: tc.ref, }, } @@ -474,7 +370,7 @@ func TestGetTaskFuncFromTaskRunSpecAlreadyFetched(t *testing.T) { ctx, cancel := context.WithCancel(ctx) defer cancel() tektonclient := fake.NewSimpleClientset(simpleNamespacedTask) - kubeclient := fakek8s.NewSimpleClientset(&v1.ServiceAccount{ + kubeclient := fakek8s.NewSimpleClientset(&corev1.ServiceAccount{ ObjectMeta: metav1.ObjectMeta{ Namespace: "default", Name: "default", @@ -482,8 +378,8 @@ func TestGetTaskFuncFromTaskRunSpecAlreadyFetched(t *testing.T) { }) name := "anyname-really" - TaskSpec := v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + TaskSpec := v1.TaskSpec{ + Steps: []v1.Step{{ Image: "myimage", Script: ` #!/usr/bin/env bash @@ -492,24 +388,24 @@ echo hello }}, } - TaskRun := &v1beta1.TaskRun{ + TaskRun := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "default"}, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{ + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{ // Using simple here to show that, it won't fetch the simple Taskspec, // which is different from the TaskSpec above Name: "simple", }, ServiceAccountName: "default", }, - Status: v1beta1.TaskRunStatus{TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + Status: v1.TaskRunStatus{TaskRunStatusFields: v1.TaskRunStatusFields{ TaskSpec: &TaskSpec, - Provenance: &v1beta1.Provenance{ + Provenance: &v1.Provenance{ RefSource: sampleRefSource.DeepCopy(), }, }}, } - expectedTask := &v1beta1.Task{ + expectedTask := &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: name, Namespace: "default", @@ -537,12 +433,12 @@ func TestGetTaskFunc_RemoteResolution(t *testing.T) { ctx := config.EnableStableAPIFields(context.Background()) cfg := config.FromContextOrDefaults(ctx) ctx = config.ToContext(ctx, cfg) - taskRef := &v1beta1.TaskRef{ResolverRef: v1beta1.ResolverRef{Resolver: "git"}} + taskRef := &v1.TaskRef{ResolverRef: v1.ResolverRef{Resolver: "git"}} testcases := []struct { name string taskYAML string - wantTask *v1beta1.Task + wantTask *v1.Task wantErr bool }{{ name: "v1beta1 task", @@ -551,7 +447,7 @@ func TestGetTaskFunc_RemoteResolution(t *testing.T) { "apiVersion: tekton.dev/v1beta1", taskYAMLString, }, "\n"), - wantTask: parse.MustParseV1beta1Task(t, taskYAMLString), + wantTask: parse.MustParseV1Task(t, taskYAMLString), }, { name: "v1beta1 task with beta features", taskYAML: strings.Join([]string{ @@ -559,7 +455,7 @@ func TestGetTaskFunc_RemoteResolution(t *testing.T) { "apiVersion: tekton.dev/v1beta1", taskYAMLStringWithBetaFeatures, }, "\n"), - wantTask: parse.MustParseV1beta1Task(t, taskYAMLStringWithBetaFeatures), + wantTask: parse.MustParseV1Task(t, taskYAMLStringWithBetaFeatures), }, { name: "v1beta1 cluster task", taskYAML: strings.Join([]string{ @@ -567,7 +463,7 @@ func TestGetTaskFunc_RemoteResolution(t *testing.T) { "apiVersion: tekton.dev/v1beta1", taskYAMLString, }, "\n"), - wantTask: parse.MustParseV1beta1Task(t, taskYAMLString), + wantTask: parse.MustParseV1Task(t, taskYAMLString), }, { name: "v1 task", taskYAML: strings.Join([]string{ @@ -575,7 +471,7 @@ func TestGetTaskFunc_RemoteResolution(t *testing.T) { "apiVersion: tekton.dev/v1", taskYAMLString, }, "\n"), - wantTask: parse.MustParseV1beta1Task(t, taskYAMLString), + wantTask: parse.MustParseV1Task(t, taskYAMLString), }, { name: "v1 task with beta features", taskYAML: strings.Join([]string{ @@ -591,25 +487,15 @@ func TestGetTaskFunc_RemoteResolution(t *testing.T) { "apiVersion: tekton.dev/v1", remoteTaskYamlWithoutDefaults, }, "\n"), - wantTask: parse.MustParseV1beta1Task(t, ` -metadata: - name: simple - namespace: default -spec: - steps: - - image: something - params: - - name: foo - type: string -`), + wantTask: parse.MustParseV1Task(t, remoteTaskYamlWithoutDefaults), }} for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { resolved := test.NewResolvedResource([]byte(tc.taskYAML), nil /* annotations */, sampleRefSource.DeepCopy(), nil /* data error */) requester := test.NewRequester(resolved, nil) - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "default"}, - Spec: v1beta1.TaskRunSpec{ + Spec: v1.TaskRunSpec{ TaskRef: taskRef, ServiceAccountName: "default", }, @@ -642,47 +528,47 @@ func TestGetTaskFunc_RemoteResolution_ReplacedParams(t *testing.T) { ctx := context.Background() cfg := config.FromContextOrDefaults(ctx) ctx = config.ToContext(ctx, cfg) - task := parse.MustParseV1beta1Task(t, taskYAMLString) - taskRef := &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ + task := parse.MustParseV1Task(t, taskYAMLString) + taskRef := &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(params.resolver-param)"), + Value: *v1.NewStructuredValues("$(params.resolver-param)"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("$(context.taskRun.name)"), + Value: *v1.NewStructuredValues("$(context.taskRun.name)"), }}, }, } taskYAML := strings.Join([]string{ "kind: Task", - "apiVersion: tekton.dev/v1beta1", + "apiVersion: tekton.dev/v1", taskYAMLString, }, "\n") resolved := test.NewResolvedResource([]byte(taskYAML), nil, sampleRefSource.DeepCopy(), nil) requester := &test.Requester{ ResolvedResource: resolved, - Params: v1beta1.Params{{ + Params: v1.Params{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("bar"), + Value: *v1.NewStructuredValues("bar"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("test-task"), + Value: *v1.NewStructuredValues("test-task"), }}, } - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "test-task", Namespace: "default", }, - Spec: v1beta1.TaskRunSpec{ + Spec: v1.TaskRunSpec{ TaskRef: taskRef, ServiceAccountName: "default", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "resolver-param", - Value: *v1beta1.NewStructuredValues("bar"), + Value: *v1.NewStructuredValues("bar"), }}, }, } @@ -701,30 +587,30 @@ func TestGetTaskFunc_RemoteResolution_ReplacedParams(t *testing.T) { t.Errorf("refSources did not match: %s", diff.PrintWantGot(d)) } - taskRefNotMatching := &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ + taskRefNotMatching := &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("$(params.resolver-param)"), + Value: *v1.NewStructuredValues("$(params.resolver-param)"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("$(context.taskRun.name)"), + Value: *v1.NewStructuredValues("$(context.taskRun.name)"), }}, }, } - trNotMatching := &v1beta1.TaskRun{ + trNotMatching := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "other-task", Namespace: "default", }, - Spec: v1beta1.TaskRunSpec{ + Spec: v1.TaskRunSpec{ TaskRef: taskRefNotMatching, ServiceAccountName: "default", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "resolver-param", - Value: *v1beta1.NewStructuredValues("banana"), + Value: *v1.NewStructuredValues("banana"), }}, }, } @@ -743,13 +629,13 @@ func TestGetPipelineFunc_RemoteResolutionInvalidData(t *testing.T) { ctx := context.Background() cfg := config.FromContextOrDefaults(ctx) ctx = config.ToContext(ctx, cfg) - taskRef := &v1beta1.TaskRef{ResolverRef: v1beta1.ResolverRef{Resolver: "git"}} + taskRef := &v1.TaskRef{ResolverRef: v1.ResolverRef{Resolver: "git"}} resolvesTo := []byte("INVALID YAML") resource := test.NewResolvedResource(resolvesTo, nil, nil, nil) requester := test.NewRequester(resource, nil) - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "default"}, - Spec: v1beta1.TaskRunSpec{ + Spec: v1.TaskRunSpec{ TaskRef: taskRef, ServiceAccountName: "default", }, @@ -767,10 +653,15 @@ func TestGetTaskFunc_V1beta1Task_VerifyNoError(t *testing.T) { unsignedTask := test.GetUnsignedTask("test-task") unsignedTaskBytes, err := json.Marshal(unsignedTask) + unsignedV1Task := &v1.Task{} + unsignedTask.ConvertTo(ctx, unsignedV1Task) + unsignedV1Task.APIVersion = "tekton.dev/v1" + unsignedV1Task.Kind = "Task" + if err != nil { t.Fatal("fail to marshal task", err) } - noMatchPolicyRefSource := &v1beta1.RefSource{ + noMatchPolicyRefSource := &v1.RefSource{ URI: "abc.com", } requesterUnmatched := bytesToRequester(unsignedTaskBytes, noMatchPolicyRefSource) @@ -779,21 +670,25 @@ func TestGetTaskFunc_V1beta1Task_VerifyNoError(t *testing.T) { if err != nil { t.Fatal("fail to sign task", err) } + signedV1Task := &v1.Task{} + signedTask.ConvertTo(ctx, signedV1Task) + signedV1Task.APIVersion = "tekton.dev/v1" + signedV1Task.Kind = "Task" signedTaskBytes, err := json.Marshal(signedTask) if err != nil { t.Fatal("fail to marshal task", err) } - matchPolicyRefSource := &v1beta1.RefSource{ + matchPolicyRefSource := &v1.RefSource{ URI: " https://github.com/tektoncd/catalog.git", } requesterMatched := bytesToRequester(signedTaskBytes, matchPolicyRefSource) - warnPolicyRefSource := &v1beta1.RefSource{ + warnPolicyRefSource := &v1.RefSource{ URI: " warnVP", } requesterUnsignedMatched := bytesToRequester(unsignedTaskBytes, warnPolicyRefSource) - taskRef := &v1beta1.TaskRef{ResolverRef: v1beta1.ResolverRef{Resolver: "git"}} + taskRef := &v1.TaskRef{ResolverRef: v1.ResolverRef{Resolver: "git"}} testcases := []struct { name string @@ -801,14 +696,14 @@ func TestGetTaskFunc_V1beta1Task_VerifyNoError(t *testing.T) { verificationNoMatchPolicy string policies []*v1alpha1.VerificationPolicy expected runtime.Object - expectedRefSource *v1beta1.RefSource + expectedRefSource *v1.RefSource expectedVerificationResult *trustedresources.VerificationResult }{{ name: "signed task with matching policy pass verification with enforce no match policy", requester: requesterMatched, verificationNoMatchPolicy: config.FailNoMatchPolicy, policies: vps, - expected: signedTask, + expected: signedV1Task, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -816,7 +711,7 @@ func TestGetTaskFunc_V1beta1Task_VerifyNoError(t *testing.T) { requester: requesterMatched, verificationNoMatchPolicy: config.WarnNoMatchPolicy, policies: vps, - expected: signedTask, + expected: signedV1Task, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -824,7 +719,7 @@ func TestGetTaskFunc_V1beta1Task_VerifyNoError(t *testing.T) { requester: requesterMatched, verificationNoMatchPolicy: config.IgnoreNoMatchPolicy, policies: vps, - expected: signedTask, + expected: signedV1Task, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -832,7 +727,7 @@ func TestGetTaskFunc_V1beta1Task_VerifyNoError(t *testing.T) { requester: requesterUnmatched, verificationNoMatchPolicy: config.WarnNoMatchPolicy, policies: vps, - expected: unsignedTask, + expected: unsignedV1Task, expectedRefSource: noMatchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationWarn, Err: trustedresources.ErrNoMatchedPolicies}, }, { @@ -840,7 +735,7 @@ func TestGetTaskFunc_V1beta1Task_VerifyNoError(t *testing.T) { requester: requesterUnsignedMatched, verificationNoMatchPolicy: config.FailNoMatchPolicy, policies: vps, - expected: unsignedTask, + expected: unsignedV1Task, expectedRefSource: warnPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationWarn, Err: trustedresources.ErrResourceVerificationFailed}, }, { @@ -848,7 +743,7 @@ func TestGetTaskFunc_V1beta1Task_VerifyNoError(t *testing.T) { requester: requesterUnmatched, verificationNoMatchPolicy: config.IgnoreNoMatchPolicy, policies: vps, - expected: unsignedTask, + expected: unsignedV1Task, expectedRefSource: noMatchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationSkip}, }, @@ -856,9 +751,9 @@ func TestGetTaskFunc_V1beta1Task_VerifyNoError(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { ctx = test.SetupTrustedResourceConfig(ctx, tc.verificationNoMatchPolicy) - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.TaskRunSpec{ + Spec: v1.TaskRunSpec{ TaskRef: taskRef, ServiceAccountName: "default", }, @@ -876,7 +771,7 @@ func TestGetTaskFunc_V1beta1Task_VerifyNoError(t *testing.T) { } if d := cmp.Diff(tc.expectedRefSource, refSource); d != "" { - t.Errorf("configSources did not match: %s", diff.PrintWantGot(d)) + t.Errorf("refSources did not match: %s", diff.PrintWantGot(d)) } if tc.expectedVerificationResult.VerificationResultType != vr.VerificationResultType && errors.Is(vr.Err, tc.expectedVerificationResult.Err) { t.Errorf("VerificationResult mismatch: want %v, got %v", tc.expectedVerificationResult, vr) @@ -895,7 +790,7 @@ func TestGetTaskFunc_V1beta1Task_VerifyError(t *testing.T) { if err != nil { t.Fatal("fail to marshal task", err) } - matchPolicyRefSource := &v1beta1.RefSource{ + matchPolicyRefSource := &v1.RefSource{ URI: "https://github.com/tektoncd/catalog.git", } requesterUnsigned := bytesToRequester(unsignedTaskBytes, matchPolicyRefSource) @@ -908,7 +803,7 @@ func TestGetTaskFunc_V1beta1Task_VerifyError(t *testing.T) { if err != nil { t.Fatal("fail to marshal task", err) } - noMatchPolicyRefSource := &v1beta1.RefSource{ + noMatchPolicyRefSource := &v1.RefSource{ URI: "abc.com", } requesterUnmatched := bytesToRequester(signedTaskBytes, noMatchPolicyRefSource) @@ -921,13 +816,13 @@ func TestGetTaskFunc_V1beta1Task_VerifyError(t *testing.T) { } requesterModified := bytesToRequester(modifiedTaskBytes, matchPolicyRefSource) - taskRef := &v1beta1.TaskRef{ResolverRef: v1beta1.ResolverRef{Resolver: "git"}} + taskRef := &v1.TaskRef{ResolverRef: v1.ResolverRef{Resolver: "git"}} testcases := []struct { name string requester *test.Requester verificationNoMatchPolicy string - expected *v1beta1.Task + expected *v1.Task expectedErr error expectedVerificationResultType trustedresources.VerificationResultType }{{ @@ -984,9 +879,9 @@ func TestGetTaskFunc_V1beta1Task_VerifyError(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { ctx = test.SetupTrustedResourceConfig(ctx, tc.verificationNoMatchPolicy) - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.TaskRunSpec{ + Spec: v1.TaskRunSpec{ TaskRef: taskRef, ServiceAccountName: "default", }, @@ -1023,7 +918,7 @@ func TestGetTaskFunc_V1Task_VerifyNoError(t *testing.T) { if err != nil { t.Fatal("fail to marshal task", err) } - noMatchPolicyRefSource := &v1beta1.RefSource{ + noMatchPolicyRefSource := &v1.RefSource{ URI: "abc.com", } requesterUnmatched := bytesToRequester(unsignedTaskBytes, noMatchPolicyRefSource) @@ -1046,17 +941,17 @@ func TestGetTaskFunc_V1Task_VerifyNoError(t *testing.T) { if err != nil { t.Fatal("fail to marshal task", err) } - matchPolicyRefSource := &v1beta1.RefSource{ + matchPolicyRefSource := &v1.RefSource{ URI: " https://github.com/tektoncd/catalog.git", } requesterMatched := bytesToRequester(signedTaskBytes, matchPolicyRefSource) - warnPolicyRefSource := &v1beta1.RefSource{ + warnPolicyRefSource := &v1.RefSource{ URI: " warnVP", } requesterUnsignedMatched := bytesToRequester(unsignedTaskBytes, warnPolicyRefSource) - taskRef := &v1beta1.TaskRef{ResolverRef: v1beta1.ResolverRef{Resolver: "git"}} + taskRef := &v1.TaskRef{ResolverRef: v1.ResolverRef{Resolver: "git"}} testcases := []struct { name string @@ -1064,14 +959,14 @@ func TestGetTaskFunc_V1Task_VerifyNoError(t *testing.T) { verificationNoMatchPolicy string policies []*v1alpha1.VerificationPolicy expected runtime.Object - expectedRefSource *v1beta1.RefSource + expectedRefSource *v1.RefSource expectedVerificationResult *trustedresources.VerificationResult }{{ name: "signed task with matching policy pass verification with enforce no match policy", requester: requesterMatched, verificationNoMatchPolicy: config.FailNoMatchPolicy, policies: vps, - expected: v1beta1SignedTask, + expected: signedV1Task, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -1079,7 +974,7 @@ func TestGetTaskFunc_V1Task_VerifyNoError(t *testing.T) { requester: requesterMatched, verificationNoMatchPolicy: config.WarnNoMatchPolicy, policies: vps, - expected: v1beta1SignedTask, + expected: signedV1Task, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -1087,7 +982,7 @@ func TestGetTaskFunc_V1Task_VerifyNoError(t *testing.T) { requester: requesterMatched, verificationNoMatchPolicy: config.IgnoreNoMatchPolicy, policies: vps, - expected: v1beta1SignedTask, + expected: signedV1Task, expectedRefSource: matchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationPass}, }, { @@ -1095,7 +990,7 @@ func TestGetTaskFunc_V1Task_VerifyNoError(t *testing.T) { requester: requesterUnmatched, verificationNoMatchPolicy: config.WarnNoMatchPolicy, policies: vps, - expected: v1beta1UnsignedTask, + expected: &unsignedV1Task, expectedRefSource: noMatchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationWarn, Err: trustedresources.ErrNoMatchedPolicies}, }, { @@ -1103,7 +998,7 @@ func TestGetTaskFunc_V1Task_VerifyNoError(t *testing.T) { requester: requesterUnsignedMatched, verificationNoMatchPolicy: config.FailNoMatchPolicy, policies: vps, - expected: v1beta1UnsignedTask, + expected: &unsignedV1Task, expectedRefSource: warnPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationWarn, Err: trustedresources.ErrResourceVerificationFailed}, }, { @@ -1111,7 +1006,7 @@ func TestGetTaskFunc_V1Task_VerifyNoError(t *testing.T) { requester: requesterUnmatched, verificationNoMatchPolicy: config.IgnoreNoMatchPolicy, policies: vps, - expected: v1beta1UnsignedTask, + expected: &unsignedV1Task, expectedRefSource: noMatchPolicyRefSource, expectedVerificationResult: &trustedresources.VerificationResult{VerificationResultType: trustedresources.VerificationSkip}, }, @@ -1119,9 +1014,9 @@ func TestGetTaskFunc_V1Task_VerifyNoError(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { ctx = test.SetupTrustedResourceConfig(ctx, tc.verificationNoMatchPolicy) - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.TaskRunSpec{ + Spec: v1.TaskRunSpec{ TaskRef: taskRef, ServiceAccountName: "default", }, @@ -1139,7 +1034,7 @@ func TestGetTaskFunc_V1Task_VerifyNoError(t *testing.T) { } if d := cmp.Diff(tc.expectedRefSource, gotRefSource); d != "" { - t.Errorf("configSources did not match: %s", diff.PrintWantGot(d)) + t.Errorf("refSources did not match: %s", diff.PrintWantGot(d)) } if d := cmp.Diff(gotVerificationResult, tc.expectedVerificationResult, verificationResultCmp); d != "" { t.Errorf("VerificationResult did not match:%s", diff.PrintWantGot(d)) @@ -1157,7 +1052,7 @@ func TestGetTaskFunc_V1Task_VerifyError(t *testing.T) { if err != nil { t.Fatal("fail to marshal task", err) } - matchPolicyRefSource := &v1beta1.RefSource{ + matchPolicyRefSource := &v1.RefSource{ URI: "https://github.com/tektoncd/catalog.git", } @@ -1171,7 +1066,7 @@ func TestGetTaskFunc_V1Task_VerifyError(t *testing.T) { if err != nil { t.Fatal("fail to marshal task", err) } - noMatchPolicyRefSource := &v1beta1.RefSource{ + noMatchPolicyRefSource := &v1.RefSource{ URI: "abc.com", } requesterUnmatched := bytesToRequester(signedTaskBytes, noMatchPolicyRefSource) @@ -1184,13 +1079,13 @@ func TestGetTaskFunc_V1Task_VerifyError(t *testing.T) { } requesterModified := bytesToRequester(modifiedTaskBytes, matchPolicyRefSource) - taskRef := &v1beta1.TaskRef{ResolverRef: v1beta1.ResolverRef{Resolver: "git"}} + taskRef := &v1.TaskRef{ResolverRef: v1.ResolverRef{Resolver: "git"}} testcases := []struct { name string requester *test.Requester verificationNoMatchPolicy string - expected *v1beta1.Task + expected *v1.Task expectedErr error expectedVerificationResult *trustedresources.VerificationResult }{{ @@ -1245,9 +1140,9 @@ func TestGetTaskFunc_V1Task_VerifyError(t *testing.T) { for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { ctx = test.SetupTrustedResourceConfig(ctx, tc.verificationNoMatchPolicy) - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.TaskRunSpec{ + Spec: v1.TaskRunSpec{ TaskRef: taskRef, ServiceAccountName: "default", }, @@ -1277,23 +1172,12 @@ func TestGetTaskFunc_GetFuncError(t *testing.T) { requesterUnsigned := test.NewRequester(resolvedUnsigned, nil) resolvedUnsigned.DataErr = fmt.Errorf("resolution error") - trBundleError := &v1beta1.TaskRun{ + trResolutionError := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{ - Name: "taskName", - Bundle: "bundle", - }, - ServiceAccountName: "default", - }, - } - - trResolutionError := &v1beta1.TaskRun{ - ObjectMeta: metav1.ObjectMeta{Namespace: "trusted-resources"}, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{ + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{ Name: "taskName", - ResolverRef: v1beta1.ResolverRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", }, }, @@ -1304,15 +1188,9 @@ func TestGetTaskFunc_GetFuncError(t *testing.T) { testcases := []struct { name string requester *test.Requester - taskrun v1beta1.TaskRun + taskrun v1.TaskRun expectedErr error }{ - { - name: "get error when oci bundle return error", - requester: requesterUnsigned, - taskrun: *trBundleError, - expectedErr: fmt.Errorf(`failed to get keychain: serviceaccounts "default" not found`), - }, { name: "get error when remote resolution return error", requester: requesterUnsigned, @@ -1384,13 +1262,13 @@ spec: - name: foo ` -func bytesToRequester(data []byte, source *v1beta1.RefSource) *test.Requester { +func bytesToRequester(data []byte, source *v1.RefSource) *test.Requester { resolved := test.NewResolvedResource(data, nil, source, nil) requester := test.NewRequester(resolved, nil) return requester } -func getSignedV1Task(unsigned *pipelinev1.Task, signer signature.Signer, name string) (*pipelinev1.Task, error) { +func getSignedV1Task(unsigned *v1.Task, signer signature.Signer, name string) (*v1.Task, error) { signed := unsigned.DeepCopy() signed.Name = name if signed.Annotations == nil { diff --git a/pkg/reconciler/taskrun/resources/taskspec.go b/pkg/reconciler/taskrun/resources/taskspec.go index 68a19da38b5..3bf08f923dc 100644 --- a/pkg/reconciler/taskrun/resources/taskspec.go +++ b/pkg/reconciler/taskrun/resources/taskspec.go @@ -21,7 +21,7 @@ import ( "errors" "fmt" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" resolutionutil "github.com/tektoncd/pipeline/pkg/internal/resolution" "github.com/tektoncd/pipeline/pkg/trustedresources" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -31,26 +31,26 @@ import ( // the TaskRun. type ResolvedTask struct { TaskName string - Kind v1beta1.TaskKind - TaskSpec *v1beta1.TaskSpec + Kind v1.TaskKind + TaskSpec *v1.TaskSpec // VerificationResult is the result from trusted resources if the feature is enabled. VerificationResult *trustedresources.VerificationResult } // GetTask is a function used to retrieve Tasks. // VerificationResult is the result from trusted resources if the feature is enabled. -type GetTask func(context.Context, string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) +type GetTask func(context.Context, string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) // GetTaskRun is a function used to retrieve TaskRuns -type GetTaskRun func(string) (*v1beta1.TaskRun, error) +type GetTaskRun func(string) (*v1.TaskRun, error) // GetTaskData will retrieve the Task metadata and Spec associated with the // provided TaskRun. This can come from a reference Task or from the TaskRun's // metadata and embedded TaskSpec. -func GetTaskData(ctx context.Context, taskRun *v1beta1.TaskRun, getTask GetTask) (*resolutionutil.ResolvedObjectMeta, *v1beta1.TaskSpec, error) { +func GetTaskData(ctx context.Context, taskRun *v1.TaskRun, getTask GetTask) (*resolutionutil.ResolvedObjectMeta, *v1.TaskSpec, error) { taskMeta := metav1.ObjectMeta{} - taskSpec := v1beta1.TaskSpec{} - var refSource *v1beta1.RefSource + taskSpec := v1.TaskSpec{} + var refSource *v1.RefSource var verificationResult *trustedresources.VerificationResult switch { case taskRun.Spec.TaskRef != nil && taskRun.Spec.TaskRef.Name != "": @@ -59,8 +59,8 @@ func GetTaskData(ctx context.Context, taskRun *v1beta1.TaskRun, getTask GetTask) if err != nil { return nil, nil, fmt.Errorf("error when listing tasks for taskRun %s: %w", taskRun.Name, err) } - taskMeta = t.TaskMetadata() - taskSpec = t.TaskSpec() + taskMeta = t.ObjectMeta + taskSpec = t.Spec refSource = source verificationResult = vr case taskRun.Spec.TaskSpec != nil: @@ -76,8 +76,8 @@ func GetTaskData(ctx context.Context, taskRun *v1beta1.TaskRun, getTask GetTask) case task == nil: return nil, nil, errors.New("resolution of remote resource completed successfully but no task was returned") default: - taskMeta = task.TaskMetadata() - taskSpec = task.TaskSpec() + taskMeta = task.ObjectMeta + taskSpec = task.Spec } refSource = source verificationResult = vr diff --git a/pkg/reconciler/taskrun/resources/taskspec_test.go b/pkg/reconciler/taskrun/resources/taskspec_test.go index 4da99be276a..f3456002e53 100644 --- a/pkg/reconciler/taskrun/resources/taskspec_test.go +++ b/pkg/reconciler/taskrun/resources/taskspec_test.go @@ -23,7 +23,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" "github.com/tektoncd/pipeline/pkg/trustedresources" "github.com/tektoncd/pipeline/test/diff" @@ -31,28 +31,28 @@ import ( ) func TestGetTaskSpec_Ref(t *testing.T) { - task := &v1beta1.Task{ + task := &v1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "orchestrate", }, - Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + Spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", }}, }, } - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mytaskrun", }, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{ + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{ Name: "orchestrate", }, }, } - gt := func(ctx context.Context, n string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + gt := func(ctx context.Context, n string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return task, sampleRefSource.DeepCopy(), nil, nil } resolvedObjectMeta, taskSpec, err := resources.GetTaskData(context.Background(), tr, gt) @@ -74,19 +74,19 @@ func TestGetTaskSpec_Ref(t *testing.T) { } func TestGetTaskSpec_Embedded(t *testing.T) { - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mytaskrun", }, - Spec: v1beta1.TaskRunSpec{ - TaskSpec: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + Spec: v1.TaskRunSpec{ + TaskSpec: &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", }}, }, }, } - gt := func(ctx context.Context, n string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + gt := func(ctx context.Context, n string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return nil, nil, nil, errors.New("shouldn't be called") } resolvedObjectMeta, taskSpec, err := resources.GetTaskData(context.Background(), tr, gt) @@ -110,12 +110,12 @@ func TestGetTaskSpec_Embedded(t *testing.T) { } func TestGetTaskSpec_Invalid(t *testing.T) { - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mytaskrun", }, } - gt := func(ctx context.Context, n string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + gt := func(ctx context.Context, n string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return nil, nil, nil, errors.New("shouldn't be called") } _, _, err := resources.GetTaskData(context.Background(), tr, gt) @@ -125,17 +125,17 @@ func TestGetTaskSpec_Invalid(t *testing.T) { } func TestGetTaskSpec_Error(t *testing.T) { - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mytaskrun", }, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{ + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{ Name: "orchestrate", }, }, } - gt := func(ctx context.Context, n string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + gt := func(ctx context.Context, n string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return nil, nil, nil, errors.New("something went wrong") } _, _, err := resources.GetTaskData(context.Background(), tr, gt) @@ -145,18 +145,18 @@ func TestGetTaskSpec_Error(t *testing.T) { } func TestGetTaskData_ResolutionSuccess(t *testing.T) { - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mytaskrun", }, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ Resolver: "foo", - Params: v1beta1.Params{{ + Params: []v1.Param{{ Name: "bar", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "baz", }, }}, @@ -167,16 +167,16 @@ func TestGetTaskData_ResolutionSuccess(t *testing.T) { sourceMeta := metav1.ObjectMeta{ Name: "task", } - sourceSpec := v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + sourceSpec := v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `echo "hello world!"`, }}, } - getTask := func(ctx context.Context, n string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { - return &v1beta1.Task{ + getTask := func(ctx context.Context, n string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { + return &v1.Task{ ObjectMeta: *sourceMeta.DeepCopy(), Spec: *sourceSpec.DeepCopy(), }, sampleRefSource.DeepCopy(), nil, nil @@ -200,19 +200,19 @@ func TestGetTaskData_ResolutionSuccess(t *testing.T) { } func TestGetPipelineData_ResolutionError(t *testing.T) { - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mytaskrun", }, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", }, }, }, } - getTask := func(ctx context.Context, n string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + getTask := func(ctx context.Context, n string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return nil, nil, nil, errors.New("something went wrong") } ctx := context.Background() @@ -223,19 +223,19 @@ func TestGetPipelineData_ResolutionError(t *testing.T) { } func TestGetTaskData_ResolvedNilTask(t *testing.T) { - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mytaskrun", }, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ Resolver: "git", }, }, }, } - getTask := func(ctx context.Context, n string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { + getTask := func(ctx context.Context, n string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { return nil, nil, nil, nil } ctx := context.Background() @@ -246,18 +246,18 @@ func TestGetTaskData_ResolvedNilTask(t *testing.T) { } func TestGetTaskData_VerificationResult(t *testing.T) { - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "mytaskrun", }, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{ - ResolverRef: v1beta1.ResolverRef{ + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{ + ResolverRef: v1.ResolverRef{ Resolver: "foo", - Params: v1beta1.Params{{ + Params: v1.Params{{ Name: "bar", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "baz", }, }}, @@ -268,8 +268,8 @@ func TestGetTaskData_VerificationResult(t *testing.T) { sourceMeta := metav1.ObjectMeta{ Name: "task", } - sourceSpec := v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + sourceSpec := v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", Image: "ubuntu", Script: `echo "hello world!"`, @@ -280,8 +280,8 @@ func TestGetTaskData_VerificationResult(t *testing.T) { VerificationResultType: trustedresources.VerificationError, Err: trustedresources.ErrResourceVerificationFailed, } - getTask := func(ctx context.Context, n string) (*v1beta1.Task, *v1beta1.RefSource, *trustedresources.VerificationResult, error) { - return &v1beta1.Task{ + getTask := func(ctx context.Context, n string) (*v1.Task, *v1.RefSource, *trustedresources.VerificationResult, error) { + return &v1.Task{ ObjectMeta: *sourceMeta.DeepCopy(), Spec: *sourceSpec.DeepCopy(), }, nil, verificationResult, nil diff --git a/pkg/reconciler/taskrun/resources/validate_params.go b/pkg/reconciler/taskrun/resources/validate_params.go index 372163cec04..345fe724164 100644 --- a/pkg/reconciler/taskrun/resources/validate_params.go +++ b/pkg/reconciler/taskrun/resources/validate_params.go @@ -3,7 +3,7 @@ package resources import ( "fmt" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/substitution" "k8s.io/apimachinery/pkg/util/sets" ) @@ -13,7 +13,7 @@ import ( // e.g. if a param reference of $(params.array-param[2]) and the array param is of length 2. // - `params` are params from taskrun. // - `ts` contains params declarations and references to array params. -func ValidateParamArrayIndex(ts *v1beta1.TaskSpec, params v1beta1.Params) error { +func ValidateParamArrayIndex(ts *v1.TaskSpec, params v1.Params) error { return ValidateOutOfBoundArrayParams(ts.Params, params, ts.GetIndexingReferencesToArrayParams()) } @@ -21,7 +21,7 @@ func ValidateParamArrayIndex(ts *v1beta1.TaskSpec, params v1beta1.Params) error // based on the param declarations, the parameters passed in at runtime, and the indexing references // to array params from a task or pipeline spec. // Example of arrayIndexingReferences: ["$(params.a-array-param[1])", "$(params.b-array-param[2])"] -func ValidateOutOfBoundArrayParams(declarations v1beta1.ParamSpecs, params v1beta1.Params, arrayIndexingReferences sets.String) error { +func ValidateOutOfBoundArrayParams(declarations v1.ParamSpecs, params v1.Params, arrayIndexingReferences sets.String) error { arrayParamLengths := declarations.ExtractDefaultParamArrayLengths() for k, v := range params.ExtractParamArrayLengths() { arrayParamLengths[k] = v diff --git a/pkg/reconciler/taskrun/resources/validate_params_test.go b/pkg/reconciler/taskrun/resources/validate_params_test.go index 3e471fa204d..f3b5aca6156 100644 --- a/pkg/reconciler/taskrun/resources/validate_params_test.go +++ b/pkg/reconciler/taskrun/resources/validate_params_test.go @@ -6,7 +6,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" "github.com/tektoncd/pipeline/test/diff" corev1 "k8s.io/api/core/v1" @@ -24,21 +24,21 @@ func TestValidateParamArrayIndex(t *testing.T) { tcs := []struct { name string - params v1beta1.Params - taskspec *v1beta1.TaskSpec + params v1.Params + taskspec *v1.TaskSpec expectedError error }{{ name: "steps reference invalid", - params: v1beta1.Params{{ + params: v1.Params{{ Name: "array-params", - Value: *v1beta1.NewStructuredValues("bar", "foo"), + Value: *v1.NewStructuredValues("bar", "foo"), }}, - taskspec: &v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + taskspec: &v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "array-params", - Default: v1beta1.NewStructuredValues("bar", "foo"), + Default: v1.NewStructuredValues("bar", "foo"), }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "$(params.array-params[10])", Image: "$(params.array-params[11])", Command: []string{"$(params.array-params[12])"}, @@ -85,30 +85,30 @@ func TestValidateParamArrayIndex(t *testing.T) { expectedError: fmt.Errorf("non-existent param references:[%v]", strings.Join(stepsInvalidReferences, " ")), }, { name: "stepTemplate reference invalid", - params: v1beta1.Params{{ + params: v1.Params{{ Name: "array-params", - Value: *v1beta1.NewStructuredValues("bar", "foo"), + Value: *v1.NewStructuredValues("bar", "foo"), }}, - taskspec: &v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + taskspec: &v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "array-params", - Default: v1beta1.NewStructuredValues("bar", "foo"), + Default: v1.NewStructuredValues("bar", "foo"), }}, - StepTemplate: &v1beta1.StepTemplate{ + StepTemplate: &v1.StepTemplate{ Image: "$(params.array-params[3])", }, }, expectedError: fmt.Errorf("non-existent param references:[%v]", "$(params.array-params[3])"), }, { name: "volumes reference invalid", - params: v1beta1.Params{{ + params: v1.Params{{ Name: "array-params", - Value: *v1beta1.NewStructuredValues("bar", "foo"), + Value: *v1.NewStructuredValues("bar", "foo"), }}, - taskspec: &v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + taskspec: &v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "array-params", - Default: v1beta1.NewStructuredValues("bar", "foo"), + Default: v1.NewStructuredValues("bar", "foo"), }}, Volumes: []corev1.Volume{{ Name: "$(params.array-params[10])", @@ -163,32 +163,32 @@ func TestValidateParamArrayIndex(t *testing.T) { expectedError: fmt.Errorf("non-existent param references:[%v]", strings.Join(volumesInvalidReferences, " ")), }, { name: "workspaces reference invalid", - params: v1beta1.Params{{ + params: v1.Params{{ Name: "array-params", - Value: *v1beta1.NewStructuredValues("bar", "foo"), + Value: *v1.NewStructuredValues("bar", "foo"), }}, - taskspec: &v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + taskspec: &v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "array-params", - Default: v1beta1.NewStructuredValues("bar", "foo"), + Default: v1.NewStructuredValues("bar", "foo"), }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ MountPath: "$(params.array-params[3])", }}, }, expectedError: fmt.Errorf("non-existent param references:[%v]", "$(params.array-params[3])"), }, { name: "sidecar reference invalid", - params: v1beta1.Params{{ + params: v1.Params{{ Name: "array-params", - Value: *v1beta1.NewStructuredValues("bar", "foo"), + Value: *v1.NewStructuredValues("bar", "foo"), }}, - taskspec: &v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + taskspec: &v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "array-params", - Default: v1beta1.NewStructuredValues("bar", "foo"), + Default: v1.NewStructuredValues("bar", "foo"), }}, - Sidecars: []v1beta1.Sidecar{{ + Sidecars: []v1.Sidecar{{ Script: "$(params.array-params[3])", }, }, diff --git a/pkg/reconciler/taskrun/taskrun.go b/pkg/reconciler/taskrun/taskrun.go index 99a4c0048ab..3a0301836da 100644 --- a/pkg/reconciler/taskrun/taskrun.go +++ b/pkg/reconciler/taskrun/taskrun.go @@ -29,11 +29,11 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" "github.com/tektoncd/pipeline/pkg/apis/pipeline/pod" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" clientset "github.com/tektoncd/pipeline/pkg/client/clientset/versioned" - taskrunreconciler "github.com/tektoncd/pipeline/pkg/client/injection/reconciler/pipeline/v1beta1/taskrun" + taskrunreconciler "github.com/tektoncd/pipeline/pkg/client/injection/reconciler/pipeline/v1/taskrun" + listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1" alphalisters "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1alpha1" - listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/internal/affinityassistant" "github.com/tektoncd/pipeline/pkg/internal/computeresources" resolutionutil "github.com/tektoncd/pipeline/pkg/internal/resolution" @@ -100,7 +100,7 @@ var ( // ReconcileKind compares the actual state with the desired, and attempts to // converge the two. It then updates the Status block of the Task Run // resource with the current status of the resource. -func (c *Reconciler) ReconcileKind(ctx context.Context, tr *v1beta1.TaskRun) pkgreconciler.Event { +func (c *Reconciler) ReconcileKind(ctx context.Context, tr *v1.TaskRun) pkgreconciler.Event { logger := logging.FromContext(ctx) ctx = cloudevent.ToContext(ctx, c.cloudEventClient) ctx = initTracing(ctx, c.tracerProvider, tr) @@ -150,7 +150,7 @@ func (c *Reconciler) ReconcileKind(ctx context.Context, tr *v1beta1.TaskRun) pkg // If the TaskRun is cancelled, kill resources and update status if tr.IsCancelled() { message := fmt.Sprintf("TaskRun %q was cancelled. %s", tr.Name, tr.Spec.StatusMessage) - err := c.failTaskRun(ctx, tr, v1beta1.TaskRunReasonCancelled, message) + err := c.failTaskRun(ctx, tr, v1.TaskRunReasonCancelled, message) return c.finishReconcileUpdateEmitEvents(ctx, tr, before, err) } @@ -158,7 +158,7 @@ func (c *Reconciler) ReconcileKind(ctx context.Context, tr *v1beta1.TaskRun) pkg // accordingly. if tr.HasTimedOut(ctx, c.Clock) { message := fmt.Sprintf("TaskRun %q failed to finish within %q", tr.Name, tr.GetTimeout(ctx)) - err := c.failTaskRun(ctx, tr, v1beta1.TaskRunReasonTimedOut, message) + err := c.failTaskRun(ctx, tr, v1.TaskRunReasonTimedOut, message) return c.finishReconcileUpdateEmitEvents(ctx, tr, before, err) } @@ -190,7 +190,7 @@ func (c *Reconciler) ReconcileKind(ctx context.Context, tr *v1beta1.TaskRun) pkg if errors.Is(err, sidecarlogresults.ErrSizeExceeded) { cfg := config.FromContextOrDefaults(ctx) message := fmt.Sprintf("TaskRun %q failed: results exceeded size limit %d bytes", tr.Name, cfg.FeatureFlags.MaxResultSize) - err := c.failTaskRun(ctx, tr, v1beta1.TaskRunReasonResultLargerThanAllowedLimit, message) + err := c.failTaskRun(ctx, tr, v1.TaskRunReasonResultLargerThanAllowedLimit, message) return c.finishReconcileUpdateEmitEvents(ctx, tr, before, err) } } @@ -209,25 +209,25 @@ func (c *Reconciler) ReconcileKind(ctx context.Context, tr *v1beta1.TaskRun) pkg return nil } -func (c *Reconciler) checkPodFailed(tr *v1beta1.TaskRun) (bool, v1beta1.TaskRunReason, string) { +func (c *Reconciler) checkPodFailed(tr *v1.TaskRun) (bool, v1.TaskRunReason, string) { for _, step := range tr.Status.Steps { if step.Waiting != nil && step.Waiting.Reason == "ImagePullBackOff" { image := step.ImageID message := fmt.Sprintf(`The step %q in TaskRun %q failed to pull the image %q. The pod errored with the message: "%s."`, step.Name, tr.Name, image, step.Waiting.Message) - return true, v1beta1.TaskRunReasonImagePullFailed, message + return true, v1.TaskRunReasonImagePullFailed, message } } for _, sidecar := range tr.Status.Sidecars { if sidecar.Waiting != nil && sidecar.Waiting.Reason == "ImagePullBackOff" { image := sidecar.ImageID message := fmt.Sprintf(`The sidecar %q in TaskRun %q failed to pull the image %q. The pod errored with the message: "%s."`, sidecar.Name, tr.Name, image, sidecar.Waiting.Message) - return true, v1beta1.TaskRunReasonImagePullFailed, message + return true, v1.TaskRunReasonImagePullFailed, message } } return false, "", "" } -func (c *Reconciler) durationAndCountMetrics(ctx context.Context, tr *v1beta1.TaskRun, beforeCondition *apis.Condition) { +func (c *Reconciler) durationAndCountMetrics(ctx context.Context, tr *v1.TaskRun, beforeCondition *apis.Condition) { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "durationAndCountMetrics") defer span.End() logger := logging.FromContext(ctx) @@ -238,7 +238,7 @@ func (c *Reconciler) durationAndCountMetrics(ctx context.Context, tr *v1beta1.Ta } } -func (c *Reconciler) stopSidecars(ctx context.Context, tr *v1beta1.TaskRun) error { +func (c *Reconciler) stopSidecars(ctx context.Context, tr *v1.TaskRun) error { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "stopSidecars") defer span.End() logger := logging.FromContext(ctx) @@ -250,8 +250,8 @@ func (c *Reconciler) stopSidecars(ctx context.Context, tr *v1beta1.TaskRun) erro // do not continue if the TaskRun was canceled or timed out as this caused the pod to be deleted in failTaskRun condition := tr.Status.GetCondition(apis.ConditionSucceeded) if condition != nil { - reason := v1beta1.TaskRunReason(condition.Reason) - if reason == v1beta1.TaskRunReasonCancelled || reason == v1beta1.TaskRunReasonTimedOut { + reason := v1.TaskRunReason(condition.Reason) + if reason == v1.TaskRunReasonCancelled || reason == v1.TaskRunReasonTimedOut { return nil } } @@ -270,12 +270,12 @@ func (c *Reconciler) stopSidecars(ctx context.Context, tr *v1beta1.TaskRun) erro return controller.NewPermanentError(err) } else if err != nil { logger.Errorf("Error stopping sidecars for TaskRun %q: %v", tr.Name, err) - tr.Status.MarkResourceFailed(v1beta1.TaskRunReasonStopSidecarFailed, err) + tr.Status.MarkResourceFailed(v1.TaskRunReasonStopSidecarFailed, err) } return nil } -func (c *Reconciler) finishReconcileUpdateEmitEvents(ctx context.Context, tr *v1beta1.TaskRun, beforeCondition *apis.Condition, previousError error) error { +func (c *Reconciler) finishReconcileUpdateEmitEvents(ctx context.Context, tr *v1.TaskRun, beforeCondition *apis.Condition, previousError error) error { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "finishReconcileUpdateEmitEvents") defer span.End() logger := logging.FromContext(ctx) @@ -309,7 +309,7 @@ func (c *Reconciler) finishReconcileUpdateEmitEvents(ctx context.Context, tr *v1 // `prepare` returns spec and resources. In future we might store // them in the TaskRun.Status so we don't need to re-run `prepare` at every // reconcile (see https://github.com/tektoncd/pipeline/issues/2473). -func (c *Reconciler) prepare(ctx context.Context, tr *v1beta1.TaskRun) (*v1beta1.TaskSpec, *resources.ResolvedTask, error) { +func (c *Reconciler) prepare(ctx context.Context, tr *v1.TaskRun) (*v1.TaskSpec, *resources.ResolvedTask, error) { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "prepare") defer span.End() logger := logging.FromContext(ctx) @@ -326,7 +326,7 @@ func (c *Reconciler) prepare(ctx context.Context, tr *v1beta1.TaskRun) (*v1beta1 switch { case errors.Is(err, remote.ErrRequestInProgress): message := fmt.Sprintf("TaskRun %s/%s awaiting remote resource", tr.Namespace, tr.Name) - tr.Status.MarkResourceOngoing(v1beta1.TaskRunReasonResolvingTaskRef, message) + tr.Status.MarkResourceOngoing(v1.TaskRunReasonResolvingTaskRef, message) return nil, nil, err case err != nil: logger.Errorf("Failed to determine Task spec to use for taskrun %s: %v", tr.Name, err) @@ -381,7 +381,7 @@ func (c *Reconciler) prepare(ctx context.Context, tr *v1beta1.TaskRun) (*v1beta1 return nil, nil, controller.NewPermanentError(err) } - if err := ValidateResolvedTask(ctx, tr.Spec.Params, &v1beta1.Matrix{}, rtr); err != nil { + if err := ValidateResolvedTask(ctx, tr.Spec.Params, &v1.Matrix{}, rtr); err != nil { logger.Errorf("TaskRun %q resources are invalid: %v", tr.Name, err) tr.Status.MarkResourceFailed(podconvert.ReasonFailedValidation, err) return nil, nil, controller.NewPermanentError(err) @@ -399,13 +399,13 @@ func (c *Reconciler) prepare(ctx context.Context, tr *v1beta1.TaskRun) (*v1beta1 return nil, nil, controller.NewPermanentError(err) } - var workspaceDeclarations []v1beta1.WorkspaceDeclaration + var workspaceDeclarations []v1.WorkspaceDeclaration // Propagating workspaces allows users to skip declarations // In order to validate the workspace bindings we create declarations based on // the workspaces provided in the task run spec. We only allow this feature for embedded taskSpec. if tr.Spec.TaskSpec != nil { for _, ws := range tr.Spec.Workspaces { - wspaceDeclaration := v1beta1.WorkspaceDeclaration{Name: ws.Name} + wspaceDeclaration := v1.WorkspaceDeclaration{Name: ws.Name} workspaceDeclarations = append(workspaceDeclarations, wspaceDeclaration) } workspaceDeclarations = append(workspaceDeclarations, taskSpec.Workspaces...) @@ -440,7 +440,7 @@ func (c *Reconciler) prepare(ctx context.Context, tr *v1beta1.TaskRun) (*v1beta1 // It reports errors back to Reconcile, it updates the taskrun status in case of // error but it does not sync updates back to etcd. It does not emit events. // `reconcile` consumes spec and resources returned by `prepare` -func (c *Reconciler) reconcile(ctx context.Context, tr *v1beta1.TaskRun, rtr *resources.ResolvedTask) error { +func (c *Reconciler) reconcile(ctx context.Context, tr *v1.TaskRun, rtr *resources.ResolvedTask) error { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "reconcile") defer span.End() @@ -548,20 +548,20 @@ func (c *Reconciler) reconcile(ctx context.Context, tr *v1beta1.TaskRun, rtr *re return nil } -func (c *Reconciler) updateTaskRunWithDefaultWorkspaces(ctx context.Context, tr *v1beta1.TaskRun, taskSpec *v1beta1.TaskSpec) error { +func (c *Reconciler) updateTaskRunWithDefaultWorkspaces(ctx context.Context, tr *v1.TaskRun, taskSpec *v1.TaskSpec) error { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "updateTaskRunWithDefaultWorkspaces") defer span.End() configMap := config.FromContextOrDefaults(ctx) defaults := configMap.Defaults if defaults.DefaultTaskRunWorkspaceBinding != "" { - var defaultWS v1beta1.WorkspaceBinding + var defaultWS v1.WorkspaceBinding if err := yaml.Unmarshal([]byte(defaults.DefaultTaskRunWorkspaceBinding), &defaultWS); err != nil { return fmt.Errorf("failed to unmarshal %v", defaults.DefaultTaskRunWorkspaceBinding) } - workspaceBindings := map[string]v1beta1.WorkspaceBinding{} + workspaceBindings := map[string]v1.WorkspaceBinding{} for _, tsWorkspace := range taskSpec.Workspaces { if !tsWorkspace.Optional { - workspaceBindings[tsWorkspace.Name] = v1beta1.WorkspaceBinding{ + workspaceBindings[tsWorkspace.Name] = v1.WorkspaceBinding{ Name: tsWorkspace.Name, SubPath: defaultWS.SubPath, VolumeClaimTemplate: defaultWS.VolumeClaimTemplate, @@ -577,7 +577,7 @@ func (c *Reconciler) updateTaskRunWithDefaultWorkspaces(ctx context.Context, tr workspaceBindings[trWorkspace.Name] = trWorkspace } - tr.Spec.Workspaces = []v1beta1.WorkspaceBinding{} + tr.Spec.Workspaces = []v1.WorkspaceBinding{} for _, wsBinding := range workspaceBindings { tr.Spec.Workspaces = append(tr.Spec.Workspaces, wsBinding) } @@ -585,7 +585,7 @@ func (c *Reconciler) updateTaskRunWithDefaultWorkspaces(ctx context.Context, tr return nil } -func (c *Reconciler) updateLabelsAndAnnotations(ctx context.Context, tr *v1beta1.TaskRun) (*v1beta1.TaskRun, error) { +func (c *Reconciler) updateLabelsAndAnnotations(ctx context.Context, tr *v1.TaskRun) (*v1.TaskRun, error) { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "updateLabelsAndAnnotations") defer span.End() // Ensure the TaskRun is properly decorated with the version of the Tekton controller processing it. @@ -605,12 +605,12 @@ func (c *Reconciler) updateLabelsAndAnnotations(ctx context.Context, tr *v1beta1 newTr = newTr.DeepCopy() newTr.Labels = kmap.Union(newTr.Labels, tr.Labels) newTr.Annotations = kmap.Union(kmap.ExcludeKeys(newTr.Annotations, tknreconciler.KubectlLastAppliedAnnotationKey), tr.Annotations) - return c.PipelineClientSet.TektonV1beta1().TaskRuns(tr.Namespace).Update(ctx, newTr, metav1.UpdateOptions{}) + return c.PipelineClientSet.TektonV1().TaskRuns(tr.Namespace).Update(ctx, newTr, metav1.UpdateOptions{}) } return newTr, nil } -func (c *Reconciler) handlePodCreationError(tr *v1beta1.TaskRun, err error) error { +func (c *Reconciler) handlePodCreationError(tr *v1.TaskRun, err error) error { switch { case isResourceQuotaConflictError(err): // Requeue if it runs into ResourceQuotaConflictError Error i.e https://github.com/kubernetes/kubernetes/issues/67761 @@ -648,7 +648,7 @@ func (c *Reconciler) handlePodCreationError(tr *v1beta1.TaskRun, err error) erro // If a pod is associated to the TaskRun, it stops it // failTaskRun function may return an error in case the pod could not be deleted // failTaskRun may update the local TaskRun status, but it won't push the updates to etcd -func (c *Reconciler) failTaskRun(ctx context.Context, tr *v1beta1.TaskRun, reason v1beta1.TaskRunReason, message string) error { +func (c *Reconciler) failTaskRun(ctx context.Context, tr *v1.TaskRun, reason v1.TaskRunReason, message string) error { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "failTaskRun") defer span.End() logger := logging.FromContext(ctx) @@ -704,14 +704,14 @@ func (c *Reconciler) failTaskRun(ctx context.Context, tr *v1beta1.TaskRun, reaso // createPod creates a Pod based on the Task's configuration, with pvcName as a volumeMount // TODO(dibyom): Refactor resource setup/substitution logic to its own function in the resources package -func (c *Reconciler) createPod(ctx context.Context, ts *v1beta1.TaskSpec, tr *v1beta1.TaskRun, rtr *resources.ResolvedTask, workspaceVolumes map[string]corev1.Volume) (*corev1.Pod, error) { +func (c *Reconciler) createPod(ctx context.Context, ts *v1.TaskSpec, tr *v1.TaskRun, rtr *resources.ResolvedTask, workspaceVolumes map[string]corev1.Volume) (*corev1.Pod, error) { ctx, span := c.tracerProvider.Tracer(TracerName).Start(ctx, "createPod") defer span.End() logger := logging.FromContext(ctx) // By this time, params and workspaces should be propagated down so we can // validate that all parameter variables and workspaces used in the TaskSpec are declared by the Task. - if validateErr := v1beta1.ValidateUsageOfDeclaredParameters(ctx, ts.Steps, ts.Params); validateErr != nil { + if validateErr := v1.ValidateUsageOfDeclaredParameters(ctx, ts.Steps, ts.Params); validateErr != nil { logger.Errorf("Failed to create a pod for taskrun: %s due to task validation error %v", tr.Name, validateErr) return nil, validateErr } @@ -766,9 +766,9 @@ func (c *Reconciler) createPod(ctx context.Context, ts *v1beta1.TaskSpec, tr *v1 } // applyParamsContextsResultsAndWorkspaces applies paramater, context, results and workspace substitutions to the TaskSpec. -func applyParamsContextsResultsAndWorkspaces(ctx context.Context, tr *v1beta1.TaskRun, rtr *resources.ResolvedTask, workspaceVolumes map[string]corev1.Volume) (*v1beta1.TaskSpec, error) { +func applyParamsContextsResultsAndWorkspaces(ctx context.Context, tr *v1.TaskRun, rtr *resources.ResolvedTask, workspaceVolumes map[string]corev1.Volume) (*v1.TaskSpec, error) { ts := rtr.TaskSpec.DeepCopy() - var defaults []v1beta1.ParamSpec + var defaults []v1.ParamSpec if len(ts.Params) > 0 { defaults = append(defaults, ts.Params...) } @@ -800,7 +800,7 @@ func applyParamsContextsResultsAndWorkspaces(ctx context.Context, tr *v1beta1.Ta } } if !skip { - ts.Workspaces = append(ts.Workspaces, v1beta1.WorkspaceDeclaration{Name: trw.Name}) + ts.Workspaces = append(ts.Workspaces, v1.WorkspaceDeclaration{Name: trw.Name}) } } ts = resources.ApplyWorkspaces(ctx, ts, ts.Workspaces, tr.Spec.Workspaces, workspaceVolumes) @@ -823,8 +823,8 @@ func isPodAdmissionFailed(err error) bool { // updateStoppedSidecarStatus updates SidecarStatus for sidecars that were // terminated by nop image -func updateStoppedSidecarStatus(pod *corev1.Pod, tr *v1beta1.TaskRun) error { - tr.Status.Sidecars = []v1beta1.SidecarState{} +func updateStoppedSidecarStatus(pod *corev1.Pod, tr *v1.TaskRun) error { + tr.Status.Sidecars = []v1.SidecarState{} for _, s := range pod.Status.ContainerStatuses { if !podconvert.IsContainerStep(s.Name) { var sidecarState corev1.ContainerState @@ -846,10 +846,10 @@ func updateStoppedSidecarStatus(pod *corev1.Pod, tr *v1beta1.TaskRun) error { sidecarState = s.State } - tr.Status.Sidecars = append(tr.Status.Sidecars, v1beta1.SidecarState{ + tr.Status.Sidecars = append(tr.Status.Sidecars, v1.SidecarState{ ContainerState: *sidecarState.DeepCopy(), Name: podconvert.TrimSidecarPrefix(s.Name), - ContainerName: s.Name, + Container: s.Name, ImageID: s.ImageID, }) } @@ -858,8 +858,8 @@ func updateStoppedSidecarStatus(pod *corev1.Pod, tr *v1beta1.TaskRun) error { } // applyVolumeClaimTemplates and return WorkspaceBindings were templates is translated to PersistentVolumeClaims -func applyVolumeClaimTemplates(workspaceBindings []v1beta1.WorkspaceBinding, owner metav1.OwnerReference) []v1beta1.WorkspaceBinding { - taskRunWorkspaceBindings := make([]v1beta1.WorkspaceBinding, 0, len(workspaceBindings)) +func applyVolumeClaimTemplates(workspaceBindings []v1.WorkspaceBinding, owner metav1.OwnerReference) []v1.WorkspaceBinding { + taskRunWorkspaceBindings := make([]v1.WorkspaceBinding, 0, len(workspaceBindings)) for _, wb := range workspaceBindings { if wb.VolumeClaimTemplate == nil { taskRunWorkspaceBindings = append(taskRunWorkspaceBindings, wb) @@ -867,7 +867,7 @@ func applyVolumeClaimTemplates(workspaceBindings []v1beta1.WorkspaceBinding, own } // apply template - b := v1beta1.WorkspaceBinding{ + b := v1.WorkspaceBinding{ Name: wb.Name, SubPath: wb.SubPath, PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ @@ -879,7 +879,7 @@ func applyVolumeClaimTemplates(workspaceBindings []v1beta1.WorkspaceBinding, own return taskRunWorkspaceBindings } -func storeTaskSpecAndMergeMeta(ctx context.Context, tr *v1beta1.TaskRun, ts *v1beta1.TaskSpec, meta *resolutionutil.ResolvedObjectMeta) error { +func storeTaskSpecAndMergeMeta(ctx context.Context, tr *v1.TaskRun, ts *v1.TaskSpec, meta *resolutionutil.ResolvedObjectMeta) error { // Only store the TaskSpec once, if it has never been set before. if tr.Status.TaskSpec == nil { tr.Status.TaskSpec = ts @@ -903,7 +903,7 @@ func storeTaskSpecAndMergeMeta(ctx context.Context, tr *v1beta1.TaskRun, ts *v1b cfg := config.FromContextOrDefaults(ctx) if cfg.FeatureFlags.EnableProvenanceInStatus { if tr.Status.Provenance == nil { - tr.Status.Provenance = &v1beta1.Provenance{} + tr.Status.Provenance = &v1.Provenance{} } // Store FeatureFlags in the Provenance. tr.Status.Provenance.FeatureFlags = cfg.FeatureFlags @@ -912,9 +912,6 @@ func storeTaskSpecAndMergeMeta(ctx context.Context, tr *v1beta1.TaskRun, ts *v1b if meta != nil && meta.RefSource != nil && tr.Status.Provenance.RefSource == nil { tr.Status.Provenance.RefSource = meta.RefSource } - if meta != nil && meta.RefSource != nil && tr.Status.Provenance.ConfigSource == nil { - tr.Status.Provenance.ConfigSource = (*v1beta1.ConfigSource)(meta.RefSource) - } } return nil @@ -922,7 +919,7 @@ func storeTaskSpecAndMergeMeta(ctx context.Context, tr *v1beta1.TaskRun, ts *v1b // willOverwritePodSetAffinity returns a bool indicating whether the // affinity for pods will be overwritten with affinity assistant. -func willOverwritePodSetAffinity(taskRun *v1beta1.TaskRun) bool { +func willOverwritePodSetAffinity(taskRun *v1.TaskRun) bool { var podTemplate pod.Template if taskRun.Spec.PodTemplate != nil { podTemplate = *taskRun.Spec.PodTemplate @@ -945,8 +942,8 @@ func isResourceQuotaConflictError(err error) bool { } // retryTaskRun archives taskRun.Status to taskRun.Status.RetriesStatus, and set -// taskRun status to Unknown with Reason v1beta1.TaskRunReasonToBeRetried. -func retryTaskRun(tr *v1beta1.TaskRun, message string) { +// taskRun status to Unknown with Reason v1.TaskRunReasonToBeRetried. +func retryTaskRun(tr *v1.TaskRun, message string) { newStatus := tr.Status.DeepCopy() newStatus.RetriesStatus = nil tr.Status.RetriesStatus = append(tr.Status.RetriesStatus, *newStatus) @@ -954,5 +951,5 @@ func retryTaskRun(tr *v1beta1.TaskRun, message string) { tr.Status.CompletionTime = nil tr.Status.PodName = "" taskRunCondSet := apis.NewBatchConditionSet() - taskRunCondSet.Manage(&tr.Status).MarkUnknown(apis.ConditionSucceeded, v1beta1.TaskRunReasonToBeRetried.String(), message) + taskRunCondSet.Manage(&tr.Status).MarkUnknown(apis.ConditionSucceeded, v1.TaskRunReasonToBeRetried.String(), message) } diff --git a/pkg/reconciler/taskrun/taskrun_test.go b/pkg/reconciler/taskrun/taskrun_test.go index 9f47f46ad14..392a5fe8684 100644 --- a/pkg/reconciler/taskrun/taskrun_test.go +++ b/pkg/reconciler/taskrun/taskrun_test.go @@ -40,7 +40,7 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" "github.com/tektoncd/pipeline/pkg/apis/pipeline/pod" - pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" resolutionv1beta1 "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" @@ -62,7 +62,6 @@ import ( "github.com/tektoncd/pipeline/test/parse" "go.opentelemetry.io/otel/trace" corev1 "k8s.io/api/core/v1" - v1 "k8s.io/api/core/v1" k8sapierrors "k8s.io/apimachinery/pkg/api/errors" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -87,7 +86,7 @@ import ( const ( entrypointLocation = "/tekton/bin/entrypoint" workspaceDir = "/workspace" - currentAPIVersion = "tekton.dev/v1beta1" + currentAPIVersion = "tekton.dev/v1" ) var ( @@ -106,11 +105,11 @@ var ( }, cmp.Comparer(func(name1, name2 string) bool { return name1[:len(name1)-5] == name2[:len(name2)-5] })) - ignoreStartTime = cmpopts.IgnoreFields(v1beta1.TaskRunStatusFields{}, "StartTime") - ignoreCompletionTime = cmpopts.IgnoreFields(v1beta1.TaskRunStatusFields{}, "CompletionTime") + ignoreStartTime = cmpopts.IgnoreFields(v1.TaskRunStatusFields{}, "StartTime") + ignoreCompletionTime = cmpopts.IgnoreFields(v1.TaskRunStatusFields{}, "CompletionTime") ignoreObjectMeta = cmpopts.IgnoreFields(metav1.ObjectMeta{}, "Labels", "ResourceVersion", "Annotations") - ignoreStatusTaskSpec = cmpopts.IgnoreFields(v1beta1.TaskRunStatusFields{}, "TaskSpec") - ignoreTaskRunStatusFields = cmpopts.IgnoreFields(v1beta1.TaskRunStatusFields{}, "Steps", "Sidecars") + ignoreStatusTaskSpec = cmpopts.IgnoreFields(v1.TaskRunStatusFields{}, "TaskSpec") + ignoreTaskRunStatusFields = cmpopts.IgnoreFields(v1.TaskRunStatusFields{}, "Steps", "Sidecars") resourceQuantityCmp = cmp.Comparer(func(x, y resource.Quantity) bool { return x.Cmp(y) == 0 @@ -120,38 +119,38 @@ var ( volumeSort = cmpopts.SortSlices(func(i, j corev1.Volume) bool { return i.Name < j.Name }) volumeMountSort = cmpopts.SortSlices(func(i, j corev1.VolumeMount) bool { return i.Name < j.Name }) - simpleStep = v1beta1.Step{ + simpleStep = v1.Step{ Name: "simple-step", Image: "foo", Command: []string{"/mycmd"}, } - simpleTask = &v1beta1.Task{ + simpleTask = &v1.Task{ ObjectMeta: objectMeta("test-task", "foo"), - Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{simpleStep}, + Spec: v1.TaskSpec{ + Steps: []v1.Step{simpleStep}, }, } - simpleTypedTask = &v1beta1.Task{ + simpleTypedTask = &v1.Task{ ObjectMeta: objectMeta("test-task", "foo"), TypeMeta: metav1.TypeMeta{ - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", Kind: "Task", }, - Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{simpleStep}, + Spec: v1.TaskSpec{ + Steps: []v1.Step{simpleStep}, }, } - resultsTask = &v1beta1.Task{ + resultsTask = &v1.Task{ ObjectMeta: objectMeta("test-results-task", "foo"), - Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{simpleStep}, - Results: []v1beta1.TaskResult{{ + Spec: v1.TaskSpec{ + Steps: []v1.Step{simpleStep}, + Results: []v1.TaskResult{{ Name: "aResult", - Type: v1beta1.ResultsTypeArray, + Type: v1.ResultsTypeArray, }, { Name: "objectResult", - Type: v1beta1.ResultsTypeObject, - Properties: map[string]v1beta1.PropertySpec{"url": {Type: "string"}, "commit": {Type: "string"}}, + Type: v1.ResultsTypeObject, + Properties: map[string]v1.PropertySpec{"url": {Type: "string"}, "commit": {Type: "string"}}, }, }, }, @@ -160,22 +159,26 @@ var ( clustertask = &v1beta1.ClusterTask{ ObjectMeta: metav1.ObjectMeta{Name: "test-cluster-task"}, Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{simpleStep}, + Steps: []v1beta1.Step{{ + Name: "simple-step", + Image: "foo", + Command: []string{"/mycmd"}, + }}, }, } - taskSidecar = &v1beta1.Task{ + taskSidecar = &v1.Task{ ObjectMeta: objectMeta("test-task-sidecar", "foo"), - Spec: v1beta1.TaskSpec{ - Sidecars: []v1beta1.Sidecar{{ - Name: "sidecar", + Spec: v1.TaskSpec{ + Sidecars: []v1.Sidecar{{ + Name: "sidecar1", Image: "image-id", }}, }, } - taskMultipleSidecars = &v1beta1.Task{ + taskMultipleSidecars = &v1.Task{ ObjectMeta: objectMeta("test-task-sidecar", "foo"), - Spec: v1beta1.TaskSpec{ - Sidecars: []v1beta1.Sidecar{ + Spec: v1.TaskSpec{ + Sidecars: []v1.Sidecar{ { Name: "sidecar", Image: "image-id", @@ -188,10 +191,10 @@ var ( }, } - saTask = &v1beta1.Task{ + saTask = &v1.Task{ ObjectMeta: objectMeta("test-with-sa", "foo"), - Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + Spec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "sa-step", Image: "foo", Command: []string{"/mycmd"}, @@ -199,30 +202,30 @@ var ( }, } - templatedTask = &v1beta1.Task{ + templatedTask = &v1.Task{ ObjectMeta: objectMeta("test-task-with-substitution", "foo"), - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{ { Name: "myarg", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, { Name: "myarghasdefault", - Type: v1beta1.ParamTypeString, - Default: v1beta1.NewStructuredValues("dont see me"), + Type: v1.ParamTypeString, + Default: v1.NewStructuredValues("dont see me"), }, { Name: "myarghasdefault2", - Type: v1beta1.ParamTypeString, - Default: v1beta1.NewStructuredValues("thedefault"), + Type: v1.ParamTypeString, + Default: v1.NewStructuredValues("thedefault"), }, { Name: "configmapname", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, }, - Steps: []v1beta1.Step{ + Steps: []v1.Step{ { Image: "myimage", Name: "mycontainer", @@ -350,7 +353,7 @@ func init() { os.Setenv("KO_DATA_PATH", "./testdata/") } -func getRunName(tr *v1beta1.TaskRun) string { +func getRunName(tr *v1.TaskRun) string { return strings.Join([]string{tr.Namespace, tr.Name}, "/") } @@ -390,7 +393,7 @@ func initializeTaskRunControllerAssets(t *testing.T, d test.Data, opts pipeline. } func TestReconcile_ExplicitDefaultSA(t *testing.T) { - taskRunSuccess := parse.MustParseV1beta1TaskRun(t, ` + taskRunSuccess := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-success namespace: foo @@ -399,7 +402,7 @@ spec: apiVersion: a1 name: test-task `) - taskRunWithSaSuccess := parse.MustParseV1beta1TaskRun(t, ` + taskRunWithSaSuccess := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-with-sa-run-success namespace: foo @@ -409,11 +412,11 @@ spec: apiVersion: a1 name: test-with-sa `) - taskruns := []*v1beta1.TaskRun{taskRunSuccess, taskRunWithSaSuccess} + taskruns := []*v1.TaskRun{taskRunSuccess, taskRunWithSaSuccess} defaultSAName := "pipelines" d := test.Data{ TaskRuns: taskruns, - Tasks: []*v1beta1.Task{simpleTask, saTask}, + Tasks: []*v1.Task{simpleTask, saTask}, ConfigMaps: []*corev1.ConfigMap{ { ObjectMeta: metav1.ObjectMeta{Name: config.GetDefaultsConfigName(), Namespace: system.Namespace()}, @@ -427,7 +430,7 @@ spec: } for _, tc := range []struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun wantPod *corev1.Pod }{{ name: "success", @@ -471,7 +474,7 @@ spec: t.Errorf("Expected actions to be logged in the kubeclient, got none") } - tr, err := clients.Pipeline.TektonV1beta1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) + tr, err := clients.Pipeline.TektonV1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -479,8 +482,8 @@ spec: if condition == nil || condition.Status != corev1.ConditionUnknown { t.Errorf("Expected invalid TaskRun to have in progress status, but had %v", condition) } - if condition != nil && condition.Reason != v1beta1.TaskRunReasonRunning.String() { - t.Errorf("Expected reason %q but was %s", v1beta1.TaskRunReasonRunning.String(), condition.Reason) + if condition != nil && condition.Reason != v1.TaskRunReasonRunning.String() { + t.Errorf("Expected reason %q but was %s", v1.TaskRunReasonRunning.String(), condition.Reason) } if tr.Status.PodName == "" { @@ -509,7 +512,7 @@ spec: // TestReconcile_CloudEvents runs reconcile with a cloud event sink configured // to ensure that events are sent in different cases func TestReconcile_CloudEvents(t *testing.T) { - task := parse.MustParseV1beta1Task(t, ` + task := parse.MustParseV1Task(t, ` metadata: name: test-task namespace: foo @@ -523,7 +526,7 @@ spec: image: foo name: simple-step `) - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-not-started namespace: foo @@ -533,8 +536,8 @@ spec: name: test-task `) d := test.Data{ - Tasks: []*v1beta1.Task{task}, - TaskRuns: []*v1beta1.TaskRun{taskRun}, + Tasks: []*v1.Task{task}, + TaskRuns: []*v1.TaskRun{taskRun}, } d.ConfigMaps = []*corev1.ConfigMap{ @@ -576,7 +579,7 @@ spec: t.Errorf("Expected actions to be logged in the kubeclient, got none") } - tr, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + tr, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -584,8 +587,8 @@ spec: if condition == nil || condition.Status != corev1.ConditionUnknown { t.Errorf("Expected fresh TaskRun to have in progress status, but had %v", condition) } - if condition != nil && condition.Reason != v1beta1.TaskRunReasonRunning.String() { - t.Errorf("Expected reason %q but was %s", v1beta1.TaskRunReasonRunning.String(), condition.Reason) + if condition != nil && condition.Reason != v1.TaskRunReasonRunning.String() { + t.Errorf("Expected reason %q but was %s", v1.TaskRunReasonRunning.String(), condition.Reason) } err = k8sevent.CheckEventsOrdered(t, testAssets.Recorder.Events, "reconcile-cloud-events", wantEvents) @@ -602,7 +605,7 @@ spec: } func TestReconcile(t *testing.T) { - taskRunSuccess := parse.MustParseV1beta1TaskRun(t, ` + taskRunSuccess := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-success namespace: foo @@ -611,7 +614,7 @@ spec: apiVersion: a1 name: test-task `) - taskRunWithSaSuccess := parse.MustParseV1beta1TaskRun(t, ` + taskRunWithSaSuccess := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-with-sa-run-success namespace: foo @@ -621,7 +624,7 @@ spec: apiVersion: a1 name: test-with-sa `) - taskRunSubstitution := parse.MustParseV1beta1TaskRun(t, ` + taskRunSubstitution := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-substitution namespace: foo @@ -637,7 +640,7 @@ spec: apiVersion: a1 name: test-task-with-substitution `) - taskRunWithTaskSpec := parse.MustParseV1beta1TaskRun(t, ` + taskRunWithTaskSpec := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-with-taskspec namespace: foo @@ -658,7 +661,7 @@ spec: name: mycontainer `) - taskRunWithClusterTask := parse.MustParseV1beta1TaskRun(t, ` + taskRunWithClusterTask := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-with-cluster-task namespace: foo @@ -668,7 +671,7 @@ spec: name: test-cluster-task `) - taskRunWithLabels := parse.MustParseV1beta1TaskRun(t, ` + taskRunWithLabels := parse.MustParseV1TaskRun(t, ` metadata: labels: TaskRunLabel: TaskRunValue @@ -680,7 +683,7 @@ spec: name: test-task `) - taskRunWithAnnotations := parse.MustParseV1beta1TaskRun(t, ` + taskRunWithAnnotations := parse.MustParseV1TaskRun(t, ` metadata: annotations: TaskRunAnnotation: TaskRunValue @@ -691,7 +694,7 @@ spec: name: test-task `) - taskRunWithPod := parse.MustParseV1beta1TaskRun(t, ` + taskRunWithPod := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-with-pod namespace: foo @@ -702,7 +705,7 @@ status: podName: some-pod-abcdethat-no-longer-exists `) - taskRunWithCredentialsVariable := parse.MustParseV1beta1TaskRun(t, ` + taskRunWithCredentialsVariable := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-with-credentials-variable namespace: foo @@ -729,7 +732,7 @@ spec: t.Fatalf("failed to upload image with simple task: %s", err.Error()) } - taskRunBundle := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRunBundle := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: test-taskrun-bundle namespace: foo @@ -739,7 +742,7 @@ spec: name: test-task `, ref)) - taskruns := []*v1beta1.TaskRun{ + taskruns := []*v1.TaskRun{ taskRunSuccess, taskRunWithSaSuccess, taskRunSubstitution, taskRunWithTaskSpec, taskRunWithClusterTask, taskRunWithLabels, taskRunWithAnnotations, taskRunWithPod, @@ -748,12 +751,12 @@ spec: d := test.Data{ TaskRuns: taskruns, - Tasks: []*v1beta1.Task{simpleTask, saTask, templatedTask}, + Tasks: []*v1.Task{simpleTask, saTask, templatedTask}, ClusterTasks: []*v1beta1.ClusterTask{clustertask}, } for _, tc := range []struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun wantPod *corev1.Pod wantEvents []string }{{ @@ -896,7 +899,7 @@ spec: t.Errorf("Expected actions to be logged in the kubeclient, got none") } - tr, err := clients.Pipeline.TektonV1beta1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) + tr, err := clients.Pipeline.TektonV1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -904,8 +907,8 @@ spec: if condition == nil || condition.Status != corev1.ConditionUnknown { t.Errorf("Expected invalid TaskRun to have in progress status, but had %v", condition) } - if condition != nil && condition.Reason != v1beta1.TaskRunReasonRunning.String() { - t.Errorf("Expected reason %q but was %s", v1beta1.TaskRunReasonRunning.String(), condition.Reason) + if condition != nil && condition.Reason != v1.TaskRunReasonRunning.String() { + t.Errorf("Expected reason %q but was %s", v1.TaskRunReasonRunning.String(), condition.Reason) } if tr.Status.PodName == "" { @@ -939,7 +942,7 @@ spec: func TestAlphaReconcile(t *testing.T) { names.TestingSeed() - taskRunWithOutputConfig := parse.MustParseV1beta1TaskRun(t, ` + taskRunWithOutputConfig := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-with-output-config namespace: foo @@ -954,7 +957,7 @@ spec: path: stdout.txt `) - taskRunWithOutputConfigAndWorkspace := parse.MustParseV1beta1TaskRun(t, ` + taskRunWithOutputConfigAndWorkspace := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-with-output-config-ws namespace: foo @@ -974,7 +977,7 @@ spec: path: stdout.txt `) - taskruns := []*v1beta1.TaskRun{ + taskruns := []*v1.TaskRun{ taskRunWithOutputConfig, taskRunWithOutputConfigAndWorkspace, } @@ -987,12 +990,12 @@ spec: d := test.Data{ ConfigMaps: cms, TaskRuns: taskruns, - Tasks: []*v1beta1.Task{simpleTask, saTask, templatedTask}, + Tasks: []*v1.Task{simpleTask, saTask, templatedTask}, ClusterTasks: []*v1beta1.ClusterTask{clustertask}, } for _, tc := range []struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun wantPod *corev1.Pod wantEvents []string }{{ @@ -1050,7 +1053,7 @@ spec: t.Errorf("Expected actions to be logged in the kubeclient, got none") } - tr, err := clients.Pipeline.TektonV1beta1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) + tr, err := clients.Pipeline.TektonV1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -1058,8 +1061,8 @@ spec: if condition == nil || condition.Status != corev1.ConditionUnknown { t.Errorf("Expected invalid TaskRun to have in progress status, but had %v", condition) } - if condition != nil && condition.Reason != v1beta1.TaskRunReasonRunning.String() { - t.Errorf("Expected reason %q but was %s", v1beta1.TaskRunReasonRunning.String(), condition.Reason) + if condition != nil && condition.Reason != v1.TaskRunReasonRunning.String() { + t.Errorf("Expected reason %q but was %s", v1.TaskRunReasonRunning.String(), condition.Reason) } if tr.Status.PodName == "" { @@ -1103,7 +1106,7 @@ func addVolumeMounts(p *corev1.Pod, vms []corev1.VolumeMount) *corev1.Pod { // that when the request is successfully resolved the TaskRun begins running. func TestReconcileWithResolver(t *testing.T) { resolverName := "foobar" - tr := parse.MustParseV1beta1TaskRun(t, ` + tr := parse.MustParseV1TaskRun(t, ` metadata: name: tr namespace: default @@ -1114,7 +1117,7 @@ spec: `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{tr}, + TaskRuns: []*v1.TaskRun{tr}, ServiceAccounts: []*corev1.ServiceAccount{{ ObjectMeta: metav1.ObjectMeta{Name: tr.Spec.ServiceAccountName, Namespace: "foo"}, }}, @@ -1159,7 +1162,7 @@ spec: // Mock a successful resolution var taskBytes = []byte(` kind: Task - apiVersion: tekton.dev/v1beta1 + apiVersion: tekton.dev/v1 metadata: name: foo spec: @@ -1185,7 +1188,7 @@ spec: } } - updatedTR, err := clients.Pipeline.TektonV1beta1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) + updatedTR, err := clients.Pipeline.TektonV1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -1193,8 +1196,8 @@ spec: if condition == nil || condition.Status != corev1.ConditionUnknown { t.Errorf("Expected fresh TaskRun to have in progress status, but had %v", condition) } - if condition != nil && condition.Reason != v1beta1.TaskRunReasonRunning.String() { - t.Errorf("Expected reason %q but was %s", v1beta1.TaskRunReasonRunning.String(), condition.Reason) + if condition != nil && condition.Reason != v1.TaskRunReasonRunning.String() { + t.Errorf("Expected reason %q but was %s", v1.TaskRunReasonRunning.String(), condition.Reason) } } @@ -1203,7 +1206,7 @@ spec: // that when the request fails, the TaskRun fails. func TestReconcileWithFailingResolver(t *testing.T) { resolverName := "foobar" - tr := parse.MustParseV1beta1TaskRun(t, ` + tr := parse.MustParseV1TaskRun(t, ` metadata: name: tr namespace: default @@ -1214,7 +1217,7 @@ spec: `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{tr}, + TaskRuns: []*v1.TaskRun{tr}, ServiceAccounts: []*corev1.ServiceAccount{{ ObjectMeta: metav1.ObjectMeta{Name: tr.Spec.ServiceAccountName, Namespace: "foo"}, }}, @@ -1267,7 +1270,7 @@ spec: t.Fatalf("expected an error") } - updatedTR, err := clients.Pipeline.TektonV1beta1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) + updatedTR, err := clients.Pipeline.TektonV1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -1281,7 +1284,7 @@ spec: } func TestReconcile_SetsStartTime(t *testing.T) { - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun namespace: foo @@ -1290,8 +1293,8 @@ spec: name: test-task `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{simpleTask}, } testAssets, cancel := getTaskRunController(t, d) defer cancel() @@ -1303,7 +1306,7 @@ spec: t.Errorf("expected no error reconciling valid TaskRun but got %v", err) } - newTr, err := testAssets.Clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + newTr, err := testAssets.Clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } @@ -1314,7 +1317,7 @@ spec: func TestReconcile_DoesntChangeStartTime(t *testing.T) { startTime := time.Date(2000, 1, 1, 1, 1, 1, 1, time.UTC) - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun namespace: foo @@ -1326,8 +1329,8 @@ status: `) taskRun.Status.StartTime = &metav1.Time{Time: startTime} d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{simpleTask}, Pods: []*corev1.Pod{{ ObjectMeta: metav1.ObjectMeta{ Namespace: "foo", @@ -1348,7 +1351,7 @@ status: } func TestReconcileInvalidTaskRuns(t *testing.T) { - noTaskRun := parse.MustParseV1beta1TaskRun(t, ` + noTaskRun := parse.MustParseV1TaskRun(t, ` metadata: name: notaskrun namespace: foo @@ -1356,7 +1359,7 @@ spec: taskRef: name: notask `) - withWrongRef := parse.MustParseV1beta1TaskRun(t, ` + withWrongRef := parse.MustParseV1TaskRun(t, ` metadata: name: taskrun-with-wrong-ref namespace: foo @@ -1365,8 +1368,8 @@ spec: kind: ClusterTask name: taskrun-with-wrong-ref `) - taskRuns := []*v1beta1.TaskRun{noTaskRun, withWrongRef} - tasks := []*v1beta1.Task{simpleTask} + taskRuns := []*v1.TaskRun{noTaskRun, withWrongRef} + tasks := []*v1.Task{simpleTask} d := test.Data{ TaskRuns: taskRuns, @@ -1375,7 +1378,7 @@ spec: testcases := []struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun reason string wantEvents []string }{{ @@ -1427,7 +1430,7 @@ spec: t.Errorf(err.Error()) } - newTr, err := testAssets.Clients.Pipeline.TektonV1beta1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) + newTr, err := testAssets.Clients.Pipeline.TektonV1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected TaskRun %s to exist but instead got error when getting it: %v", tc.taskRun.Name, err) } @@ -1445,7 +1448,7 @@ spec: func TestReconcileRetry(t *testing.T) { var ( - toBeCanceledTaskRun = parse.MustParseV1beta1TaskRun(t, ` + toBeCanceledTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-retry-canceled namespace: foo @@ -1462,7 +1465,7 @@ status: type: Succeeded message: "TaskRun \"test-taskrun-run-retry-canceled\" was cancelled. " `) - canceledTaskRun = parse.MustParseV1beta1TaskRun(t, ` + canceledTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-retry-canceled namespace: foo @@ -1480,7 +1483,7 @@ status: type: Succeeded message: "TaskRun \"test-taskrun-run-retry-canceled\" was cancelled. " `) - toBeTimedOutTaskRun = parse.MustParseV1beta1TaskRun(t, ` + toBeTimedOutTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-retry-timedout namespace: foo @@ -1497,7 +1500,7 @@ status: type: Succeeded message: TaskRun "test-taskrun-run-retry-timedout" failed to finish within "10s" `) - timedOutTaskRun = parse.MustParseV1beta1TaskRun(t, ` + timedOutTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-retry-timedout namespace: foo @@ -1521,7 +1524,7 @@ status: startTime: "2021-12-31T00:00:00Z" completionTime: "2022-01-01T00:00:00Z" `) - toFailOnPodFailureTaskRun = parse.MustParseV1beta1TaskRun(t, ` + toFailOnPodFailureTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-retry-pod-failure namespace: foo @@ -1538,7 +1541,7 @@ status: waiting: reason: "ImagePullBackOff" `) - failedOnPodFailureTaskRun = parse.MustParseV1beta1TaskRun(t, ` + failedOnPodFailureTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-retry-pod-failure namespace: foo @@ -1584,7 +1587,7 @@ status: Reason: "PodFailed", }}}, } - toFailOnPrepareTaskRun = parse.MustParseV1beta1TaskRun(t, ` + toFailOnPrepareTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-retry-prepare-failure namespace: foo @@ -1600,7 +1603,7 @@ status: type: Succeeded lastTransitionTime: "2022-01-01T00:00:00Z" `) - failedOnPrepareTaskRun = parse.MustParseV1beta1TaskRun(t, ` + failedOnPrepareTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-retry-prepare-failure namespace: foo @@ -1624,7 +1627,7 @@ status: completionTime: "2022-01-01T00:00:00Z" `) prepareError = fmt.Errorf("1 error occurred:\n\t* error when listing tasks for taskRun test-taskrun-run-retry-prepare-failure: tasks.tekton.dev \"test-task\" not found") - toFailOnReconcileFailureTaskRun = parse.MustParseV1beta1TaskRun(t, ` + toFailOnReconcileFailureTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-results-type-mismatched namespace: foo @@ -1634,12 +1637,12 @@ spec: name: test-results-task status: startTime: "2021-12-31T23:59:59Z" - taskResults: + results: - name: aResult type: string value: aResultValue `) - failedOnReconcileFailureTaskRun = parse.MustParseV1beta1TaskRun(t, ` + failedOnReconcileFailureTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-results-type-mismatched namespace: foo @@ -1685,7 +1688,7 @@ status: MaxResultSize: 4096 `) reconciliatonError = fmt.Errorf("1 error occurred:\n\t* Provided results don't match declared results; may be invalid JSON or missing result declaration: \"aResult\": task result is expected to be \"array\" type but was initialized to a different type \"string\"") - toBeRetriedTaskRun = parse.MustParseV1beta1TaskRun(t, ` + toBeRetriedTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-to-be-retried namespace: foo @@ -1704,7 +1707,7 @@ status: status: "False" type: Succeeded `) - retriedTaskRun = parse.MustParseV1beta1TaskRun(t, ` + retriedTaskRun = parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-to-be-retried namespace: foo @@ -1740,18 +1743,18 @@ status: for _, tc := range []struct { name string testData test.Data - task *v1beta1.Task - tr *v1beta1.TaskRun + task *v1.Task + tr *v1.TaskRun pod *corev1.Pod - wantTr *v1beta1.TaskRun + wantTr *v1.TaskRun wantReconcileError error wantCompletionTime bool wantStartTime bool }{{ name: "No Retry on Cancellation", testData: test.Data{ - TaskRuns: []*v1beta1.TaskRun{toBeCanceledTaskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{toBeCanceledTaskRun}, + Tasks: []*v1.Task{simpleTask}, }, tr: toBeCanceledTaskRun, wantTr: canceledTaskRun, @@ -1760,8 +1763,8 @@ status: }, { name: "Retry on TimedOut", testData: test.Data{ - TaskRuns: []*v1beta1.TaskRun{toBeTimedOutTaskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{toBeTimedOutTaskRun}, + Tasks: []*v1.Task{simpleTask}, }, tr: toBeTimedOutTaskRun, wantTr: timedOutTaskRun, @@ -1769,8 +1772,8 @@ status: }, { name: "Retry on TaskRun Pod Failure", testData: test.Data{ - TaskRuns: []*v1beta1.TaskRun{toFailOnPodFailureTaskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{toFailOnPodFailureTaskRun}, + Tasks: []*v1.Task{simpleTask}, Pods: []*corev1.Pod{failedPod}, }, tr: toFailOnPodFailureTaskRun, @@ -1779,7 +1782,7 @@ status: }, { name: "Retry on TaskRun Prepare Failure", testData: test.Data{ - TaskRuns: []*v1beta1.TaskRun{toFailOnPrepareTaskRun}, + TaskRuns: []*v1.TaskRun{toFailOnPrepareTaskRun}, }, tr: toFailOnPrepareTaskRun, wantTr: failedOnPrepareTaskRun, @@ -1788,8 +1791,8 @@ status: }, { name: "Retry on TaskRun Reconciliation Failure", testData: test.Data{ - TaskRuns: []*v1beta1.TaskRun{toFailOnReconcileFailureTaskRun}, - Tasks: []*v1beta1.Task{resultsTask}, + TaskRuns: []*v1.TaskRun{toFailOnReconcileFailureTaskRun}, + Tasks: []*v1.Task{resultsTask}, ConfigMaps: []*corev1.ConfigMap{{ ObjectMeta: metav1.ObjectMeta{Namespace: system.Namespace(), Name: config.GetFeatureFlagsConfigName()}, Data: map[string]string{ @@ -1804,8 +1807,8 @@ status: }, { name: "Start a ToBeRetried TaskRun", testData: test.Data{ - TaskRuns: []*v1beta1.TaskRun{toBeRetriedTaskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{toBeRetriedTaskRun}, + Tasks: []*v1.Task{simpleTask}, }, tr: toBeRetriedTaskRun, wantTr: retriedTaskRun, @@ -1827,7 +1830,7 @@ status: } } - reconciledTaskRun, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").Get(testAssets.Ctx, tc.tr.Name, metav1.GetOptions{}) + reconciledTaskRun, err := clients.Pipeline.TektonV1().TaskRuns("foo").Get(testAssets.Ctx, tc.tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("got %v; want nil", err) } @@ -1861,7 +1864,7 @@ status: } func TestReconcileGetTaskError(t *testing.T) { - tr := parse.MustParseV1beta1TaskRun(t, ` + tr := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-success namespace: foo @@ -1870,8 +1873,8 @@ spec: name: test-task `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{tr}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{tr}, + Tasks: []*v1.Task{simpleTask}, ClusterTasks: []*v1beta1.ClusterTask{}, } testAssets, cancel := getTaskRunController(t, d) @@ -1882,7 +1885,7 @@ spec: failingReactorActivated := true clients.Pipeline.PrependReactor("*", "tasks", func(action ktesting.Action) (handled bool, ret runtime.Object, err error) { - return failingReactorActivated, &v1beta1.Task{}, errors.New("etcdserver: leader changed") + return failingReactorActivated, &v1.Task{}, errors.New("etcdserver: leader changed") }) err := c.Reconciler.Reconcile(testAssets.Ctx, getRunName(tr)) if err == nil { @@ -1899,7 +1902,7 @@ spec: t.Errorf("unexpected error in TaskRun reconciliation: %v", err) } } - reconciledRun, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) + reconciledRun, err := clients.Pipeline.TektonV1().TaskRuns("foo").Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Somehow had error getting reconciled run out of fake client: %s", err) } @@ -1910,7 +1913,7 @@ spec: } func TestReconcileTaskRunWithPermanentError(t *testing.T) { - noTaskRun := parse.MustParseV1beta1TaskRun(t, ` + noTaskRun := parse.MustParseV1TaskRun(t, ` metadata: name: notaskrun namespace: foo @@ -1927,7 +1930,7 @@ status: startTime: "2022-01-01T00:00:00Z" `) - taskRuns := []*v1beta1.TaskRun{noTaskRun} + taskRuns := []*v1.TaskRun{noTaskRun} d := test.Data{ TaskRuns: taskRuns, } @@ -1952,7 +1955,7 @@ status: " got %d. Actions: %#v", len(actions), actions) } - newTr, err := clients.Pipeline.TektonV1beta1().TaskRuns(noTaskRun.Namespace).Get(context.Background(), noTaskRun.Name, metav1.GetOptions{}) + newTr, err := clients.Pipeline.TektonV1().TaskRuns(noTaskRun.Namespace).Get(context.Background(), noTaskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected TaskRun %s to exist but instead got error when getting it: %v", noTaskRun.Name, err) } @@ -1968,7 +1971,7 @@ status: } func TestReconcilePodFetchError(t *testing.T) { - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-success namespace: foo @@ -1979,8 +1982,8 @@ status: podName: will-not-be-found `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{simpleTask}, } testAssets, cancel := getTaskRunController(t, d) @@ -1997,7 +2000,7 @@ status: } } -func makePod(taskRun *v1beta1.TaskRun, task *v1beta1.Task) (*corev1.Pod, error) { +func makePod(taskRun *v1.TaskRun, task *v1.Task) (*corev1.Pod, error) { // TODO(jasonhall): This avoids a circular dependency where // getTaskRunController takes a test.Data which must be populated with // a pod created from MakePod which requires a (fake) Kube client. When @@ -2027,7 +2030,7 @@ func makePod(taskRun *v1beta1.TaskRun, task *v1beta1.Task) (*corev1.Pod, error) func TestReconcilePodUpdateStatus(t *testing.T) { const taskLabel = "test-task" - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-success namespace: foo @@ -2043,8 +2046,8 @@ status: t.Fatalf("MakePod: %v", err) } d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{simpleTask}, Pods: []*corev1.Pod{pod}, } @@ -2058,14 +2061,14 @@ status: } else if ok, _ := controller.IsRequeueKey(err); !ok { t.Fatalf("Unexpected error when Reconcile() : %v", err) } - newTr, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + newTr, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } if d := cmp.Diff(&apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionUnknown, - Reason: v1beta1.TaskRunReasonRunning.String(), + Reason: v1.TaskRunReasonRunning.String(), Message: "Not all Steps in the Task have finished executing", }, newTr.Status.GetCondition(apis.ConditionSucceeded), ignoreLastTransitionTime); d != "" { t.Fatalf("Did not get expected condition %s", diff.PrintWantGot(d)) @@ -2097,14 +2100,14 @@ status: t.Fatalf("Unexpected error when Reconcile(): %v", err) } - newTr, err = clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + newTr, err = clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Unexpected error fetching taskrun: %v", err) } if d := cmp.Diff(&apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, - Reason: v1beta1.TaskRunReasonSuccessful.String(), + Reason: v1.TaskRunReasonSuccessful.String(), Message: "All Steps have completed executing", }, newTr.Status.GetCondition(apis.ConditionSucceeded), ignoreLastTransitionTime); d != "" { t.Errorf("Did not get expected condition %s", diff.PrintWantGot(d)) @@ -2122,7 +2125,7 @@ status: } func TestReconcileOnCompletedTaskRun(t *testing.T) { - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-success namespace: foo @@ -2138,10 +2141,10 @@ status: startTime: "2021-12-31T23:59:45Z" `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{ + TaskRuns: []*v1.TaskRun{ taskRun, }, - Tasks: []*v1beta1.Task{simpleTask}, + Tasks: []*v1.Task{simpleTask}, } testAssets, cancel := getTaskRunController(t, d) @@ -2152,7 +2155,7 @@ status: if err := c.Reconciler.Reconcile(testAssets.Ctx, getRunName(taskRun)); err != nil { t.Fatalf("Unexpected error when reconciling completed TaskRun : %v", err) } - newTr, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + newTr, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected completed TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } @@ -2162,7 +2165,7 @@ status: } func TestReconcileOnCancelledTaskRun(t *testing.T) { - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-cancelled namespace: foo @@ -2182,8 +2185,8 @@ status: t.Fatalf("MakePod: %v", err) } d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{simpleTask}, Pods: []*corev1.Pod{pod}, } @@ -2195,7 +2198,7 @@ status: if err := c.Reconciler.Reconcile(testAssets.Ctx, getRunName(taskRun)); err != nil { t.Fatalf("Unexpected error when reconciling completed TaskRun : %v", err) } - newTr, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + newTr, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected completed TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } @@ -2221,8 +2224,8 @@ status: // reconcile the completed TaskRun again without the pod as that was deleted d = test.Data{ - TaskRuns: []*v1beta1.TaskRun{newTr}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{newTr}, + Tasks: []*v1.Task{simpleTask}, } testAssets, cancel = getTaskRunController(t, d) @@ -2235,7 +2238,7 @@ status: } func TestReconcileOnTimedOutTaskRun(t *testing.T) { - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-timedout namespace: foo @@ -2255,8 +2258,8 @@ status: t.Fatalf("MakePod: %v", err) } d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{simpleTask}, Pods: []*corev1.Pod{pod}, } @@ -2268,7 +2271,7 @@ status: if err := c.Reconciler.Reconcile(testAssets.Ctx, getRunName(taskRun)); err != nil { t.Fatalf("Unexpected error when reconciling completed TaskRun : %v", err) } - newTr, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + newTr, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected completed TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } @@ -2276,7 +2279,7 @@ status: expectedStatus := &apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, - Reason: v1beta1.TaskRunReasonCancelled.String(), + Reason: v1.TaskRunReasonCancelled.String(), Message: `TaskRun "test-taskrun-run-timedout" was cancelled. TaskRun cancelled as pipeline has been cancelled.`, } if d := cmp.Diff(expectedStatus, newTr.Status.GetCondition(apis.ConditionSucceeded), ignoreLastTransitionTime); d != "" { @@ -2294,8 +2297,8 @@ status: // reconcile the completed TaskRun again without the pod as that was deleted d = test.Data{ - TaskRuns: []*v1beta1.TaskRun{newTr}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{newTr}, + Tasks: []*v1.Task{simpleTask}, } testAssets, cancel = getTaskRunController(t, d) @@ -2308,7 +2311,7 @@ status: } func TestReconcilePodFailuresStepImagePullFailed(t *testing.T) { - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-imagepull-fail namespace: foo @@ -2340,7 +2343,7 @@ status: `Warning Failed The step "unnamed-0" in TaskRun "test-imagepull-fail" failed to pull the image "whatever". The pod errored with the message: "Back-off pulling image "whatever".`, } d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, + TaskRuns: []*v1.TaskRun{taskRun}, } testAssets, cancel := getTaskRunController(t, d) defer cancel() @@ -2350,7 +2353,7 @@ status: if err := c.Reconciler.Reconcile(testAssets.Ctx, getRunName(taskRun)); err != nil { t.Fatalf("Unexpected error when reconciling completed TaskRun : %v", err) } - newTr, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + newTr, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected completed TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } @@ -2365,7 +2368,7 @@ status: } func TestReconcilePodFailuresSidecarImagePullFailed(t *testing.T) { - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-imagepull-fail namespace: foo @@ -2412,7 +2415,7 @@ status: `Warning Failed The sidecar "unnamed-1" in TaskRun "test-imagepull-fail" failed to pull the image "whatever". The pod errored with the message: "Back-off pulling image "whatever".`, } d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, + TaskRuns: []*v1.TaskRun{taskRun}, } testAssets, cancel := getTaskRunController(t, d) defer cancel() @@ -2422,7 +2425,7 @@ status: if err := c.Reconciler.Reconcile(testAssets.Ctx, getRunName(taskRun)); err != nil { t.Fatalf("Unexpected error when reconciling completed TaskRun : %v", err) } - newTr, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + newTr, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected completed TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } @@ -2439,7 +2442,7 @@ status: func TestReconcileTimeouts(t *testing.T) { type testCase struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun expectedStatus *apis.Condition wantEvents []string } @@ -2447,7 +2450,7 @@ func TestReconcileTimeouts(t *testing.T) { testcases := []testCase{ { name: "taskrun with timeout", - taskRun: parse.MustParseV1beta1TaskRun(t, ` + taskRun: parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-timeout namespace: foo @@ -2473,7 +2476,7 @@ status: }, }, { name: "taskrun with default timeout", - taskRun: parse.MustParseV1beta1TaskRun(t, ` + taskRun: parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-default-timeout-60-minutes namespace: foo @@ -2497,7 +2500,7 @@ status: }, }, { name: "task run with nil timeout uses default", - taskRun: parse.MustParseV1beta1TaskRun(t, ` + taskRun: parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-nil-timeout-default-60-minutes namespace: foo @@ -2526,8 +2529,8 @@ status: for _, tc := range testcases { t.Run(tc.name, func(t *testing.T) { d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{tc.taskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{tc.taskRun}, + Tasks: []*v1.Task{simpleTask}, } testAssets, cancel := getTaskRunController(t, d) defer cancel() @@ -2537,7 +2540,7 @@ status: if err := c.Reconciler.Reconcile(testAssets.Ctx, getRunName(tc.taskRun)); err != nil { t.Fatalf("Unexpected error when reconciling completed TaskRun : %v", err) } - newTr, err := clients.Pipeline.TektonV1beta1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) + newTr, err := clients.Pipeline.TektonV1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected completed TaskRun %s to exist but instead got error when getting it: %v", tc.taskRun.Name, err) } @@ -2554,7 +2557,7 @@ status: } func TestPropagatedWorkspaces(t *testing.T) { - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-propagating-workspaces namespace: foo @@ -2572,7 +2575,7 @@ spec: name: tr-workspace `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, + TaskRuns: []*v1.TaskRun{taskRun}, } testAssets, cancel := getTaskRunController(t, d) defer cancel() @@ -2581,9 +2584,9 @@ spec: if err := c.Reconciler.Reconcile(testAssets.Ctx, getRunName(taskRun)); err == nil { t.Fatalf("Could not reconcile the taskrun: %v", err) } - getTaskRun, _ := testAssets.Clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + getTaskRun, _ := testAssets.Clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) - want := []v1beta1.WorkspaceDeclaration{{ + want := []v1.WorkspaceDeclaration{{ Name: "tr-workspace", }} if c := cmp.Diff(want, getTaskRun.Status.TaskSpec.Workspaces); c != "" { @@ -2595,7 +2598,7 @@ func TestExpandMountPath(t *testing.T) { expectedMountPath := "/temppath/replaced" expectedReplacedArgs := fmt.Sprintf("replacedArgs - %s", expectedMountPath) // The task's Workspace has a parameter variable - simpleTask := parse.MustParseV1beta1Task(t, ` + simpleTask := parse.MustParseV1Task(t, ` metadata: name: test-task namespace: foo @@ -2619,7 +2622,7 @@ spec: readOnly: true `) - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-not-started namespace: foo @@ -2634,8 +2637,8 @@ spec: name: tr-workspace `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{simpleTask}, } d.ConfigMaps = []*corev1.ConfigMap{ { @@ -2667,7 +2670,7 @@ spec: rtr := &resources.ResolvedTask{ TaskName: "test-task", Kind: "Task", - TaskSpec: &v1beta1.TaskSpec{Steps: simpleTask.Spec.Steps, Workspaces: simpleTask.Spec.Workspaces}, + TaskSpec: &v1.TaskSpec{Steps: simpleTask.Spec.Steps, Workspaces: simpleTask.Spec.Workspaces}, } ctx := config.EnableAlphaAPIFields(context.Background()) workspaceVolumes := workspace.CreateVolumes(taskRun.Spec.Workspaces) @@ -2694,7 +2697,7 @@ spec: func TestExpandMountPath_DuplicatePaths(t *testing.T) { expectedError := "workspace mount path \"/temppath/duplicate\" must be unique: workspaces[1].mountpath" // The task has two workspaces, with different mount path strings. - simpleTask := parse.MustParseV1beta1Task(t, ` + simpleTask := parse.MustParseV1Task(t, ` metadata: name: test-task namespace: foo @@ -2724,7 +2727,7 @@ spec: `) // The parameter values will cause the two Workspaces to have duplicate mount path values after the parameters are expanded. - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-not-started namespace: foo @@ -2743,8 +2746,8 @@ spec: name: tr-workspace-two `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{simpleTask}, } d.ConfigMaps = []*corev1.ConfigMap{ @@ -2776,7 +2779,7 @@ spec: rtr := &resources.ResolvedTask{ TaskName: "test-task", Kind: "Task", - TaskSpec: &v1beta1.TaskSpec{Steps: simpleTask.Spec.Steps, Workspaces: simpleTask.Spec.Workspaces}, + TaskSpec: &v1.TaskSpec{Steps: simpleTask.Spec.Steps, Workspaces: simpleTask.Spec.Workspaces}, } workspaceVolumes := workspace.CreateVolumes(taskRun.Spec.Workspaces) @@ -2793,7 +2796,7 @@ spec: } func TestHandlePodCreationError(t *testing.T) { - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-pod-creation-failed spec: @@ -2806,8 +2809,8 @@ status: startTime: "2022-01-01T00:00:00Z" `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{simpleTask}, } testAssets, cancel := getTaskRunController(t, d) defer cancel() @@ -2898,7 +2901,7 @@ status: } func TestReconcile_Single_SidecarState(t *testing.T) { runningState := corev1.ContainerStateRunning{StartedAt: metav1.Time{Time: now}} - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-sidecars spec: @@ -2914,8 +2917,8 @@ status: `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{taskSidecar}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{taskSidecar}, } testAssets, cancel := getTaskRunController(t, d) @@ -2926,15 +2929,15 @@ status: t.Errorf("expected no error reconciling valid TaskRun but got %v", err) } - getTaskRun, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + getTaskRun, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected completed TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } - expected := v1beta1.SidecarState{ - Name: "sidecar", - ImageID: "image-id", - ContainerName: "sidecar-sidecar", + expected := v1.SidecarState{ + Name: "sidecar", + ImageID: "image-id", + Container: "sidecar-sidecar", ContainerState: corev1.ContainerState{ Running: &runningState, }, @@ -2948,7 +2951,7 @@ status: func TestReconcile_Multiple_SidecarStates(t *testing.T) { runningState := corev1.ContainerStateRunning{StartedAt: metav1.Time{Time: now}} waitingState := corev1.ContainerStateWaiting{Reason: "PodInitializing"} - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-sidecars spec: @@ -2969,8 +2972,8 @@ status: `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{taskMultipleSidecars}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{taskMultipleSidecars}, } testAssets, cancel := getTaskRunController(t, d) @@ -2981,24 +2984,24 @@ status: t.Errorf("expected no error reconciling valid TaskRun but got %v", err) } - getTaskRun, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + getTaskRun, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected completed TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } - expected := []v1beta1.SidecarState{ + expected := []v1.SidecarState{ { - Name: "sidecar1", - ImageID: "image-id", - ContainerName: "sidecar-sidecar1", + Name: "sidecar1", + ImageID: "image-id", + Container: "sidecar-sidecar1", ContainerState: corev1.ContainerState{ Running: &runningState, }, }, { - Name: "sidecar2", - ImageID: "image-id", - ContainerName: "sidecar-sidecar2", + Name: "sidecar2", + ImageID: "image-id", + Container: "sidecar-sidecar2", ContainerState: corev1.ContainerState{ Waiting: &waitingState, }, @@ -3015,7 +3018,7 @@ status: // TestReconcileWorkspaceMissing tests a reconcile of a TaskRun that does // not include a Workspace that the Task is expecting. func TestReconcileWorkspaceMissing(t *testing.T) { - taskWithWorkspace := parse.MustParseV1beta1Task(t, ` + taskWithWorkspace := parse.MustParseV1Task(t, ` metadata: name: test-task-with-workspace namespace: foo @@ -3025,7 +3028,7 @@ spec: name: ws1 readOnly: true `) - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-missing-workspace namespace: foo @@ -3035,8 +3038,8 @@ spec: name: test-task-with-workspace `) d := test.Data{ - Tasks: []*v1beta1.Task{taskWithWorkspace}, - TaskRuns: []*v1beta1.TaskRun{taskRun}, + Tasks: []*v1.Task{taskWithWorkspace}, + TaskRuns: []*v1.TaskRun{taskRun}, ClusterTasks: nil, } testAssets, cancel := getTaskRunController(t, d) @@ -3051,7 +3054,7 @@ spec: t.Fatalf("Expected to see a permanent error when reconciling invalid TaskRun, got %s instead", err) } - tr, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + tr, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } @@ -3070,7 +3073,7 @@ spec: // TestReconcileValidDefaultWorkspace tests a reconcile of a TaskRun that does // not include a Workspace that the Task is expecting and it uses the default Workspace instead. func TestReconcileValidDefaultWorkspace(t *testing.T) { - taskWithWorkspace := parse.MustParseV1beta1Task(t, ` + taskWithWorkspace := parse.MustParseV1Task(t, ` metadata: name: test-task-with-workspace namespace: foo @@ -3085,7 +3088,7 @@ spec: name: ws1 readOnly: true `) - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-default-workspace namespace: foo @@ -3095,8 +3098,8 @@ spec: name: test-task-with-workspace `) d := test.Data{ - Tasks: []*v1beta1.Task{taskWithWorkspace}, - TaskRuns: []*v1beta1.TaskRun{taskRun}, + Tasks: []*v1.Task{taskWithWorkspace}, + TaskRuns: []*v1.TaskRun{taskRun}, ClusterTasks: nil, } @@ -3118,7 +3121,7 @@ spec: t.Errorf("Expected no error reconciling valid TaskRun but got %v", err) } - tr, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + tr, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Expected TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } @@ -3134,7 +3137,7 @@ spec: // not include a Workspace that the Task is expecting, and gets an error updating // the TaskRun with an invalid default workspace. func TestReconcileInvalidDefaultWorkspace(t *testing.T) { - taskWithWorkspace := parse.MustParseV1beta1Task(t, ` + taskWithWorkspace := parse.MustParseV1Task(t, ` metadata: name: test-task-with-workspace namespace: foo @@ -3149,7 +3152,7 @@ spec: name: ws1 readOnly: true `) - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-default-workspace namespace: foo @@ -3159,8 +3162,8 @@ spec: name: test-task-with-workspace `) d := test.Data{ - Tasks: []*v1beta1.Task{taskWithWorkspace}, - TaskRuns: []*v1beta1.TaskRun{taskRun}, + Tasks: []*v1.Task{taskWithWorkspace}, + TaskRuns: []*v1.TaskRun{taskRun}, ClusterTasks: nil, } @@ -3195,7 +3198,7 @@ spec: // injected in place of the omitted optional workspace. func TestReconcileValidDefaultWorkspaceOmittedOptionalWorkspace(t *testing.T) { optionalWorkspaceMountPath := "/foo/bar/baz" - taskWithOptionalWorkspace := parse.MustParseV1beta1Task(t, ` + taskWithOptionalWorkspace := parse.MustParseV1Task(t, ` metadata: name: test-task-with-optional-workspace namespace: default @@ -3210,7 +3213,7 @@ spec: name: optional-ws optional: true `) - taskRunOmittingWorkspace := parse.MustParseV1beta1TaskRun(t, ` + taskRunOmittingWorkspace := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun namespace: default @@ -3220,8 +3223,8 @@ spec: `) d := test.Data{ - Tasks: []*v1beta1.Task{taskWithOptionalWorkspace}, - TaskRuns: []*v1beta1.TaskRun{taskRunOmittingWorkspace}, + Tasks: []*v1.Task{taskWithOptionalWorkspace}, + TaskRuns: []*v1.TaskRun{taskRunOmittingWorkspace}, } d.ConfigMaps = append(d.ConfigMaps, &corev1.ConfigMap{ @@ -3242,7 +3245,7 @@ spec: t.Errorf("Unexpected reconcile error for TaskRun %q: %v", taskRunOmittingWorkspace.Name, err) } - tr, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRunOmittingWorkspace.Namespace).Get(testAssets.Ctx, taskRunOmittingWorkspace.Name, metav1.GetOptions{}) + tr, err := clients.Pipeline.TektonV1().TaskRuns(taskRunOmittingWorkspace.Namespace).Get(testAssets.Ctx, taskRunOmittingWorkspace.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Error getting TaskRun %q: %v", taskRunOmittingWorkspace.Name, err) } @@ -3270,7 +3273,7 @@ spec: // Affinity Assistant is validated and that the validation fails for a TaskRun that is incompatible with // Affinity Assistant; e.g. using more than one PVC-backed workspace. func TestReconcileWithWorkspacesIncompatibleWithAffinityAssistant(t *testing.T) { - taskWithTwoWorkspaces := parse.MustParseV1beta1Task(t, ` + taskWithTwoWorkspaces := parse.MustParseV1Task(t, ` metadata: name: test-task-two-workspaces namespace: foo @@ -3282,7 +3285,7 @@ spec: - description: another workspace name: ws2 `) - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: annotations: pipeline.tekton.dev/affinity-assistant: dummy-affinity-assistant @@ -3303,8 +3306,8 @@ spec: `) d := test.Data{ - Tasks: []*v1beta1.Task{taskWithTwoWorkspaces}, - TaskRuns: []*v1beta1.TaskRun{taskRun}, + Tasks: []*v1.Task{taskWithTwoWorkspaces}, + TaskRuns: []*v1.TaskRun{taskRun}, ClusterTasks: nil, } testAssets, cancel := getTaskRunController(t, d) @@ -3313,12 +3316,12 @@ spec: createServiceAccount(t, testAssets, "default", "foo") _ = testAssets.Controller.Reconciler.Reconcile(testAssets.Ctx, getRunName(taskRun)) - _, err := clients.Pipeline.TektonV1beta1().Tasks(taskRun.Namespace).Get(testAssets.Ctx, taskWithTwoWorkspaces.Name, metav1.GetOptions{}) + _, err := clients.Pipeline.TektonV1().Tasks(taskRun.Namespace).Get(testAssets.Ctx, taskWithTwoWorkspaces.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("krux: %v", err) } - ttt, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + ttt, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("expected TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } @@ -3337,7 +3340,7 @@ spec: // TestReconcileWorkspaceWithVolumeClaimTemplate tests a reconcile of a TaskRun that has // a Workspace with VolumeClaimTemplate and check that it is translated to a created PersistentVolumeClaim. func TestReconcileWorkspaceWithVolumeClaimTemplate(t *testing.T) { - taskWithWorkspace := parse.MustParseV1beta1Task(t, ` + taskWithWorkspace := parse.MustParseV1Task(t, ` metadata: name: test-task-with-workspace namespace: foo @@ -3352,7 +3355,7 @@ spec: name: ws1 readOnly: true `) - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-missing-workspace namespace: foo @@ -3368,8 +3371,8 @@ spec: name: mypvc `) d := test.Data{ - Tasks: []*v1beta1.Task{taskWithWorkspace}, - TaskRuns: []*v1beta1.TaskRun{taskRun}, + Tasks: []*v1.Task{taskWithWorkspace}, + TaskRuns: []*v1.TaskRun{taskRun}, ClusterTasks: nil, } testAssets, cancel := getTaskRunController(t, d) @@ -3383,7 +3386,7 @@ spec: t.Errorf("expected no error reconciling valid TaskRun but got %v", err) } - ttt, err := clients.Pipeline.TektonV1beta1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) + ttt, err := clients.Pipeline.TektonV1().TaskRuns(taskRun.Namespace).Get(testAssets.Ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("expected TaskRun %s to exist but instead got error when getting it: %v", taskRun.Name, err) } @@ -3403,15 +3406,15 @@ spec: func TestFailTaskRun(t *testing.T) { testCases := []struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun pod *corev1.Pod - reason v1beta1.TaskRunReason + reason v1.TaskRunReason message string expectedStatus apis.Condition - expectedStepStates []v1beta1.StepState + expectedStepStates []v1.StepState }{{ name: "no-pod-scheduled", - taskRun: parse.MustParseV1beta1TaskRun(t, ` + taskRun: parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-failed namespace: foo @@ -3435,7 +3438,7 @@ status: }, }, { name: "pod-scheduled", - taskRun: parse.MustParseV1beta1TaskRun(t, ` + taskRun: parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-failed namespace: foo @@ -3463,7 +3466,7 @@ status: }, }, { name: "step-status-update-cancel", - taskRun: parse.MustParseV1beta1TaskRun(t, ` + taskRun: parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-cancel namespace: foo @@ -3485,27 +3488,27 @@ status: Namespace: "foo", Name: "foo-is-bar", }}, - reason: v1beta1.TaskRunReasonCancelled, + reason: v1.TaskRunReasonCancelled, message: "TaskRun test-taskrun-run-cancel was cancelled. Test cancellation message.", expectedStatus: apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, - Reason: v1beta1.TaskRunReasonCancelled.String(), + Reason: v1.TaskRunReasonCancelled.String(), Message: "TaskRun test-taskrun-run-cancel was cancelled. Test cancellation message.", }, - expectedStepStates: []v1beta1.StepState{ + expectedStepStates: []v1.StepState{ { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 1, - Reason: v1beta1.TaskRunReasonCancelled.String(), + Reason: v1.TaskRunReasonCancelled.String(), }, }, }, }, }, { name: "step-status-update-timeout", - taskRun: parse.MustParseV1beta1TaskRun(t, ` + taskRun: parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-timeout namespace: foo @@ -3526,27 +3529,27 @@ status: Namespace: "foo", Name: "foo-is-bar", }}, - reason: v1beta1.TaskRunReasonTimedOut, + reason: v1.TaskRunReasonTimedOut, message: "TaskRun test-taskrun-run-timeout failed to finish within 10s", expectedStatus: apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, - Reason: v1beta1.TaskRunReasonTimedOut.String(), + Reason: v1.TaskRunReasonTimedOut.String(), Message: "TaskRun test-taskrun-run-timeout failed to finish within 10s", }, - expectedStepStates: []v1beta1.StepState{ + expectedStepStates: []v1.StepState{ { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 1, - Reason: v1beta1.TaskRunReasonTimedOut.String(), + Reason: v1.TaskRunReasonTimedOut.String(), }, }, }, }, }, { name: "step-status-update-multiple-steps", - taskRun: parse.MustParseV1beta1TaskRun(t, ` + taskRun: parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-timeout-multiple-steps namespace: foo @@ -3574,15 +3577,15 @@ status: Namespace: "foo", Name: "foo-is-bar", }}, - reason: v1beta1.TaskRunReasonTimedOut, + reason: v1.TaskRunReasonTimedOut, message: "TaskRun test-taskrun-run-timeout-multiple-steps failed to finish within 10s", expectedStatus: apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, - Reason: v1beta1.TaskRunReasonTimedOut.String(), + Reason: v1.TaskRunReasonTimedOut.String(), Message: "TaskRun test-taskrun-run-timeout-multiple-steps failed to finish within 10s", }, - expectedStepStates: []v1beta1.StepState{ + expectedStepStates: []v1.StepState{ { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ @@ -3595,7 +3598,7 @@ status: ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 1, - Reason: v1beta1.TaskRunReasonTimedOut.String(), + Reason: v1.TaskRunReasonTimedOut.String(), }, }, }, @@ -3603,14 +3606,14 @@ status: ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 1, - Reason: v1beta1.TaskRunReasonTimedOut.String(), + Reason: v1.TaskRunReasonTimedOut.String(), }, }, }, }, }, { name: "step-status-update-multiple-steps-waiting-state", - taskRun: parse.MustParseV1beta1TaskRun(t, ` + taskRun: parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-timeout-multiple-steps-waiting namespace: foo @@ -3635,20 +3638,20 @@ status: Namespace: "foo", Name: "foo-is-bar", }}, - reason: v1beta1.TaskRunReasonTimedOut, + reason: v1.TaskRunReasonTimedOut, message: "TaskRun test-taskrun-run-timeout-multiple-steps-waiting failed to finish within 10s", expectedStatus: apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, - Reason: v1beta1.TaskRunReasonTimedOut.String(), + Reason: v1.TaskRunReasonTimedOut.String(), Message: "TaskRun test-taskrun-run-timeout-multiple-steps-waiting failed to finish within 10s", }, - expectedStepStates: []v1beta1.StepState{ + expectedStepStates: []v1.StepState{ { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 1, - Reason: v1beta1.TaskRunReasonTimedOut.String(), + Reason: v1.TaskRunReasonTimedOut.String(), }, }, }, @@ -3656,7 +3659,7 @@ status: ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 1, - Reason: v1beta1.TaskRunReasonTimedOut.String(), + Reason: v1.TaskRunReasonTimedOut.String(), }, }, }, @@ -3664,14 +3667,14 @@ status: ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 1, - Reason: v1beta1.TaskRunReasonTimedOut.String(), + Reason: v1.TaskRunReasonTimedOut.String(), }, }, }, }, }, { name: "step-status-update-with-multiple-steps-and-some-continue-on-error", - taskRun: parse.MustParseV1beta1TaskRun(t, ` + taskRun: parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-run-ignore-step-error namespace: foo @@ -3696,15 +3699,15 @@ status: Namespace: "foo", Name: "foo-is-bar", }}, - reason: v1beta1.TaskRunReasonTimedOut, + reason: v1.TaskRunReasonTimedOut, message: "TaskRun test-taskrun-run-timeout-multiple-steps failed to finish within 10s", expectedStatus: apis.Condition{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, - Reason: v1beta1.TaskRunReasonTimedOut.String(), + Reason: v1.TaskRunReasonTimedOut.String(), Message: "TaskRun test-taskrun-run-timeout-multiple-steps failed to finish within 10s", }, - expectedStepStates: []v1beta1.StepState{ + expectedStepStates: []v1.StepState{ { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ @@ -3717,7 +3720,7 @@ status: ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 1, - Reason: v1beta1.TaskRunReasonTimedOut.String(), + Reason: v1.TaskRunReasonTimedOut.String(), }, }, }, @@ -3727,7 +3730,7 @@ status: for _, tc := range testCases { t.Run(tc.name, func(t *testing.T) { d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{tc.taskRun}, + TaskRuns: []*v1.TaskRun{tc.taskRun}, } if tc.pod != nil { d.Pods = []*corev1.Pod{tc.pod} @@ -3768,8 +3771,8 @@ status: } } -func Test_storeTaskSpecAndRefSource(t *testing.T) { - tr := parse.MustParseV1beta1TaskRun(t, ` +func Test_storeTaskSpecAndConfigSource(t *testing.T) { + tr := parse.MustParseV1TaskRun(t, ` metadata: annotations: io.annotation: value @@ -3781,7 +3784,7 @@ spec: name: foo-task `) - refSource := &v1beta1.RefSource{ + refSource := &v1.RefSource{ URI: "https://abc.com.git", Digest: map[string]string{ "sha1": "xyz", @@ -3789,20 +3792,19 @@ spec: EntryPoint: "foo/bar", } - ts := v1beta1.TaskSpec{ + ts := v1.TaskSpec{ Description: "foo-task", } - ts1 := v1beta1.TaskSpec{ + ts1 := v1.TaskSpec{ Description: "bar-task", } want := tr.DeepCopy() - want.Status = v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + want.Status = v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ TaskSpec: ts.DeepCopy(), - Provenance: &v1beta1.Provenance{ + Provenance: &v1.Provenance{ RefSource: refSource.DeepCopy(), - ConfigSource: (*v1beta1.ConfigSource)(refSource.DeepCopy()), FeatureFlags: config.DefaultFeatureFlags.DeepCopy(), }, }, @@ -3810,7 +3812,7 @@ spec: want.ObjectMeta.Labels["tekton.dev/task"] = tr.ObjectMeta.Name type args struct { - taskSpec *v1beta1.TaskSpec + taskSpec *v1.TaskSpec resolvedObjectMeta *resolutionutil.ResolvedObjectMeta } @@ -3818,7 +3820,7 @@ spec: name string reconcile1Args *args reconcile2Args *args - wantTaskRun *v1beta1.TaskRun + wantTaskRun *v1.TaskRun }{ { name: "spec and refSource are available in the same reconcile", @@ -3882,14 +3884,14 @@ func Test_storeTaskSpec_metadata(t *testing.T) { wantedlabels := map[string]string{"lbl1": "value1", "lbl2": "value2", "lbl3": "value3"} wantedannotations := map[string]string{"io.annotation.1": "value1", "io.annotation.2": "value2", "io.annotation.3": "value3"} - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Name: "foo", Labels: taskrunlabels, Annotations: taskrunannotations}, } resolvedMeta := resolutionutil.ResolvedObjectMeta{ ObjectMeta: &metav1.ObjectMeta{Labels: tasklabels, Annotations: taskannotations}, } - if err := storeTaskSpecAndMergeMeta(context.Background(), tr, &v1beta1.TaskSpec{}, &resolvedMeta); err != nil { + if err := storeTaskSpecAndMergeMeta(context.Background(), tr, &v1.TaskSpec{}, &resolvedMeta); err != nil { t.Errorf("storeTaskSpecAndMergeMeta error = %v", err) } if d := cmp.Diff(tr.ObjectMeta.Labels, wantedlabels); d != "" { @@ -3946,8 +3948,8 @@ func TestWillOverwritePodAffinity(t *testing.T) { for _, tc := range tcs { t.Run(tc.name, func(t *testing.T) { - tr := &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ + tr := &v1.TaskRun{ + Spec: v1.TaskRunSpec{ PodTemplate: &pod.Template{}, }, ObjectMeta: metav1.ObjectMeta{ @@ -3966,7 +3968,7 @@ func TestWillOverwritePodAffinity(t *testing.T) { } func TestPodAdoption(t *testing.T) { - tr := parse.MustParseV1beta1TaskRun(t, ` + tr := parse.MustParseV1TaskRun(t, ` metadata: labels: mylabel: myvalue @@ -3982,7 +3984,7 @@ spec: `) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{tr}, + TaskRuns: []*v1.TaskRun{tr}, } testAssets, cancel := getTaskRunController(t, d) defer cancel() @@ -3998,7 +4000,7 @@ spec: } // Get the updated TaskRun. - reconciledRun, err := clients.Pipeline.TektonV1beta1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) + reconciledRun, err := clients.Pipeline.TektonV1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Error getting updated TaskRun: %v", err) } @@ -4012,7 +4014,7 @@ spec: // Add a label to the TaskRun. This tests a scenario in issue 3656 which could prevent the reconciler // from finding a Pod when the pod name is missing from the status. reconciledRun.ObjectMeta.Labels["bah"] = "humbug" - reconciledRun, err = clients.Pipeline.TektonV1beta1().TaskRuns(tr.Namespace).Update(testAssets.Ctx, reconciledRun, metav1.UpdateOptions{}) + reconciledRun, err = clients.Pipeline.TektonV1().TaskRuns(tr.Namespace).Update(testAssets.Ctx, reconciledRun, metav1.UpdateOptions{}) if err != nil { t.Fatalf("Unexpected error when updating status: %v", err) } @@ -4020,8 +4022,8 @@ spec: // The label update triggers another reconcile. Depending on timing, the TaskRun passed to the reconcile may or may not // have the updated status with the name of the created pod. Clear the status because we want to test the case where the // status does not have the pod name. - reconciledRun.Status = v1beta1.TaskRunStatus{} - if _, err := clients.Pipeline.TektonV1beta1().TaskRuns("foo").UpdateStatus(testAssets.Ctx, reconciledRun, metav1.UpdateOptions{}); err != nil { + reconciledRun.Status = v1.TaskRunStatus{} + if _, err := clients.Pipeline.TektonV1().TaskRuns("foo").UpdateStatus(testAssets.Ctx, reconciledRun, metav1.UpdateOptions{}); err != nil { t.Fatalf("Unexpected error when updating status: %v", err) } @@ -4033,7 +4035,7 @@ spec: } // Get the updated TaskRun. - reconciledRun, err = clients.Pipeline.TektonV1beta1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) + reconciledRun, err = clients.Pipeline.TektonV1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Error getting updated TaskRun after second reconcile: %v", err) } @@ -4045,7 +4047,7 @@ spec: } func TestStopSidecars_ClientGetPodForTaskSpecWithSidecars(t *testing.T) { - tr := parse.MustParseV1beta1TaskRun(t, ` + tr := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun namespace: foo @@ -4069,7 +4071,7 @@ status: d := test.Data{ Pods: []*corev1.Pod{pod}, - TaskRuns: []*v1beta1.TaskRun{tr}, + TaskRuns: []*v1.TaskRun{tr}, } testAssets, cancel := getTaskRunController(t, d) @@ -4097,7 +4099,7 @@ status: } func TestStopSidecars_WithInjectedSidecarsNoTaskSpecSidecars(t *testing.T) { - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-injected-sidecars namespace: foo @@ -4135,11 +4137,11 @@ status: ContainerStatuses: []corev1.ContainerStatus{ { Name: "step-do-something", - State: v1.ContainerState{Terminated: &corev1.ContainerStateTerminated{}}, + State: corev1.ContainerState{Terminated: &corev1.ContainerStateTerminated{}}, }, { Name: "injected-sidecar", - State: v1.ContainerState{Running: &corev1.ContainerStateRunning{}}, + State: corev1.ContainerState{Running: &corev1.ContainerStateRunning{}}, }, }, }, @@ -4147,8 +4149,8 @@ status: d := test.Data{ Pods: []*corev1.Pod{pod}, - TaskRuns: []*v1beta1.TaskRun{taskRun}, - Tasks: []*v1beta1.Task{simpleTask}, + TaskRuns: []*v1.TaskRun{taskRun}, + Tasks: []*v1.Task{simpleTask}, } testAssets, cancel := getTaskRunController(t, d) @@ -4181,17 +4183,17 @@ status: func Test_validateTaskSpecRequestResources_ValidResources(t *testing.T) { tcs := []struct { name string - taskSpec *v1beta1.TaskSpec + taskSpec *v1.TaskSpec }{{ name: "no requested resources", - taskSpec: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{ + taskSpec: &v1.TaskSpec{ + Steps: []v1.Step{ { Image: "image", Command: []string{"cmd"}, }}, - StepTemplate: &v1beta1.StepTemplate{ - Resources: corev1.ResourceRequirements{ + StepTemplate: &v1.StepTemplate{ + ComputeResources: corev1.ResourceRequirements{ Limits: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("4"), corev1.ResourceMemory: resource.MustParse("8Gi"), @@ -4201,11 +4203,11 @@ func Test_validateTaskSpecRequestResources_ValidResources(t *testing.T) { }, }, { name: "no limit configured", - taskSpec: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + taskSpec: &v1.TaskSpec{ + Steps: []v1.Step{{ Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("4Gi"), @@ -4215,11 +4217,11 @@ func Test_validateTaskSpecRequestResources_ValidResources(t *testing.T) { }, }, { name: "request less or equal than step limit but larger than steptemplate limit", - taskSpec: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + taskSpec: &v1.TaskSpec{ + Steps: []v1.Step{{ Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("4Gi"), @@ -4230,8 +4232,8 @@ func Test_validateTaskSpecRequestResources_ValidResources(t *testing.T) { }, }, }}, - StepTemplate: &v1beta1.StepTemplate{ - Resources: corev1.ResourceRequirements{ + StepTemplate: &v1.StepTemplate{ + ComputeResources: corev1.ResourceRequirements{ Limits: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("4"), corev1.ResourceMemory: resource.MustParse("4Gi"), @@ -4241,11 +4243,11 @@ func Test_validateTaskSpecRequestResources_ValidResources(t *testing.T) { }, }, { name: "request less or equal than step limit", - taskSpec: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + taskSpec: &v1.TaskSpec{ + Steps: []v1.Step{{ Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("4Gi"), @@ -4259,19 +4261,19 @@ func Test_validateTaskSpecRequestResources_ValidResources(t *testing.T) { }, }, { name: "request less or equal than steptemplate limit", - taskSpec: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + taskSpec: &v1.TaskSpec{ + Steps: []v1.Step{{ Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("4Gi"), }, }, }}, - StepTemplate: &v1beta1.StepTemplate{ - Resources: corev1.ResourceRequirements{ + StepTemplate: &v1.StepTemplate{ + ComputeResources: corev1.ResourceRequirements{ Limits: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("8Gi"), @@ -4293,14 +4295,14 @@ func Test_validateTaskSpecRequestResources_ValidResources(t *testing.T) { func Test_validateTaskSpecRequestResources_InvalidResources(t *testing.T) { tcs := []struct { name string - taskSpec *v1beta1.TaskSpec + taskSpec *v1.TaskSpec }{{ name: "step request larger than step limit", - taskSpec: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + taskSpec: &v1.TaskSpec{ + Steps: []v1.Step{{ Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("8Gi"), @@ -4313,19 +4315,19 @@ func Test_validateTaskSpecRequestResources_InvalidResources(t *testing.T) { }}}, }, { name: "step request larger than steptemplate limit", - taskSpec: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + taskSpec: &v1.TaskSpec{ + Steps: []v1.Step{{ Image: "image", Command: []string{"cmd"}, - Resources: corev1.ResourceRequirements{ + ComputeResources: corev1.ResourceRequirements{ Requests: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("8Gi"), }, }, }}, - StepTemplate: &v1beta1.StepTemplate{ - Resources: corev1.ResourceRequirements{ + StepTemplate: &v1.StepTemplate{ + ComputeResources: corev1.ResourceRequirements{ Limits: corev1.ResourceList{ corev1.ResourceCPU: resource.MustParse("8"), corev1.ResourceMemory: resource.MustParse("4Gi"), @@ -4540,7 +4542,7 @@ func objectMeta(name, ns string) metav1.ObjectMeta { } func TestReconcile_validateLargerResultsSidecarLogs_invalid(t *testing.T) { - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-larger-results-sidecar-logs namespace: foo @@ -4562,13 +4564,13 @@ status: name: mycontainer `) - taskruns := []*v1beta1.TaskRun{ + taskruns := []*v1.TaskRun{ taskRun, } for _, tc := range []struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun maxResultSize string expectError bool reason string @@ -4588,7 +4590,7 @@ status: t.Run(tc.name, func(t *testing.T) { d := test.Data{ TaskRuns: taskruns, - Tasks: []*v1beta1.Task{}, + Tasks: []*v1.Task{}, ConfigMaps: []*corev1.ConfigMap{{ ObjectMeta: metav1.ObjectMeta{Namespace: system.Namespace(), Name: config.GetFeatureFlagsConfigName()}, Data: map[string]string{ @@ -4600,7 +4602,7 @@ status: testAssets, cancel := getTaskRunController(t, d) defer cancel() clientset := fakekubeclientset.NewSimpleClientset() - pod := &v1.Pod{ + pod := &corev1.Pod{ TypeMeta: metav1.TypeMeta{ Kind: "Pod", APIVersion: "v1", @@ -4609,15 +4611,15 @@ status: Name: "test-taskrun-larger-results-sidecar-logs-pod", Namespace: "foo", }, - Spec: v1.PodSpec{ - Containers: []v1.Container{ + Spec: corev1.PodSpec{ + Containers: []corev1.Container{ { Name: "sidecar-tekton-log-results", Image: "image", }, }, }, - Status: v1.PodStatus{ + Status: corev1.PodStatus{ Phase: corev1.PodRunning, }, } @@ -4635,7 +4637,7 @@ status: t.Error("expected to get an error but did not") } - tr, err := testAssets.Clients.Pipeline.TektonV1beta1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) + tr, err := testAssets.Clients.Pipeline.TektonV1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -4648,7 +4650,7 @@ status: } func TestReconcile_validateTaskRunResults_valid(t *testing.T) { - taskRunResultsTypeMatched := parse.MustParseV1beta1TaskRun(t, ` + taskRunResultsTypeMatched := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-results-type-valid namespace: foo @@ -4662,7 +4664,7 @@ status: value: aResultValue `) - taskRunResultsObjectValid := parse.MustParseV1beta1TaskRun(t, ` + taskRunResultsObjectValid := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-results-object-valid namespace: foo @@ -4678,13 +4680,13 @@ status: commit: xyz `) - taskruns := []*v1beta1.TaskRun{ + taskruns := []*v1.TaskRun{ taskRunResultsTypeMatched, taskRunResultsObjectValid, } d := test.Data{ TaskRuns: taskruns, - Tasks: []*v1beta1.Task{resultsTask}, + Tasks: []*v1.Task{resultsTask}, ConfigMaps: []*corev1.ConfigMap{{ ObjectMeta: metav1.ObjectMeta{Namespace: system.Namespace(), Name: config.GetFeatureFlagsConfigName()}, Data: map[string]string{ @@ -4694,7 +4696,7 @@ status: } for _, tc := range []struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun }{{ name: "taskrun results type valid", taskRun: taskRunResultsTypeMatched, @@ -4714,7 +4716,7 @@ status: t.Errorf("Error reconciling TaskRun. Got error %v", err) } - tr, err := testAssets.Clients.Pipeline.TektonV1beta1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) + tr, err := testAssets.Clients.Pipeline.TektonV1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -4727,7 +4729,7 @@ status: } func TestReconcile_validateTaskRunResults_invalid(t *testing.T) { - taskRunResultsTypeMismatched := parse.MustParseV1beta1TaskRun(t, ` + taskRunResultsTypeMismatched := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-results-type-mismatched namespace: foo @@ -4735,7 +4737,7 @@ spec: taskRef: name: test-results-task status: - taskResults: + results: - name: aResult type: string value: aResultValue @@ -4744,7 +4746,7 @@ status: value: objectResultValue `) - taskRunResultsObjectMissKey := parse.MustParseV1beta1TaskRun(t, ` + taskRunResultsObjectMissKey := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-results-object-miss-key namespace: foo @@ -4752,7 +4754,7 @@ spec: taskRef: name: test-results-task status: - taskResults: + results: - name: aResult type: array value: @@ -4764,13 +4766,13 @@ status: url: abc `) - taskruns := []*v1beta1.TaskRun{ + taskruns := []*v1.TaskRun{ taskRunResultsTypeMismatched, taskRunResultsObjectMissKey, } d := test.Data{ TaskRuns: taskruns, - Tasks: []*v1beta1.Task{resultsTask}, + Tasks: []*v1.Task{resultsTask}, ConfigMaps: []*corev1.ConfigMap{{ ObjectMeta: metav1.ObjectMeta{Namespace: system.Namespace(), Name: config.GetFeatureFlagsConfigName()}, Data: map[string]string{ @@ -4780,10 +4782,10 @@ status: } for _, tc := range []struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun wantFailedReason string expectedError error - expectedResults []v1beta1.TaskRunResult + expectedResults []v1.TaskRunResult }{{ name: "taskrun results type mismatched", taskRun: taskRunResultsTypeMismatched, @@ -4795,15 +4797,15 @@ status: taskRun: taskRunResultsObjectMissKey, wantFailedReason: podconvert.ReasonFailedValidation, expectedError: fmt.Errorf("1 error occurred:\n\t* missing keys for these results which are required in TaskResult's properties map[objectResult:[commit]]"), - expectedResults: []v1beta1.TaskRunResult{ + expectedResults: []v1.TaskRunResult{ { Name: "aResult", Type: "array", - Value: *v1beta1.NewArrayOrString("1", "2"), + Value: *v1.NewStructuredValues("1", "2"), }, { Name: "objectResult", Type: "object", - Value: *v1beta1.NewObject(map[string]string{"url": "abc"}), + Value: *v1.NewObject(map[string]string{"url": "abc"}), }}, }} { t.Run(tc.name, func(t *testing.T) { @@ -4815,11 +4817,11 @@ status: if d := cmp.Diff(strings.TrimSuffix(err.Error(), "\n\n"), tc.expectedError.Error()); d != "" { t.Errorf("Expected: %v, but Got: %v", tc.expectedError, err) } - tr, err := testAssets.Clients.Pipeline.TektonV1beta1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) + tr, err := testAssets.Clients.Pipeline.TektonV1().TaskRuns(tc.taskRun.Namespace).Get(testAssets.Ctx, tc.taskRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } - if d := cmp.Diff(tr.Status.TaskRunResults, tc.expectedResults); d != "" { + if d := cmp.Diff(tr.Status.Results, tc.expectedResults); d != "" { t.Errorf("got unexpected results %s", diff.PrintWantGot(d)) } condition := tr.Status.GetCondition(apis.ConditionSucceeded) @@ -4831,7 +4833,7 @@ status: } func TestReconcile_ReplacementsInStatusTaskSpec(t *testing.T) { - task := parse.MustParseV1beta1Task(t, ` + task := parse.MustParseV1Task(t, ` metadata: name: test-task-with-replacements namespace: foo @@ -4845,7 +4847,7 @@ spec: image: myimage name: mycontainer `) - tr := parse.MustParseV1beta1TaskRun(t, ` + tr := parse.MustParseV1TaskRun(t, ` metadata: name: test-taskrun-with-replacements namespace: foo @@ -4859,13 +4861,13 @@ status: podName: the-pod `) - expectedStatusSpec := &v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + expectedStatusSpec := &v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "myarg", - Default: v1beta1.NewStructuredValues("mydefault"), - Type: v1beta1.ParamTypeString, + Default: v1.NewStructuredValues("mydefault"), + Type: v1.ParamTypeString, }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Script: "echo foo", Image: "myimage", Name: "mycontainer", @@ -4873,8 +4875,8 @@ status: } d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{tr}, - Tasks: []*v1beta1.Task{task}, + TaskRuns: []*v1.TaskRun{tr}, + Tasks: []*v1.Task{task}, Pods: []*corev1.Pod{{ ObjectMeta: metav1.ObjectMeta{ Namespace: "foo", @@ -4891,7 +4893,7 @@ status: t.Errorf("expected no error. Got error %v", err) } - updatedTR, err := testAssets.Clients.Pipeline.TektonV1beta1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) + updatedTR, err := testAssets.Clients.Pipeline.TektonV1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -4946,7 +4948,7 @@ spec: Resources: []v1alpha1.ResourcePattern{{Pattern: ".*"}}, Mode: v1alpha1.ModeWarn, }}} - tr := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + tr := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: test-taskrun namespace: foo @@ -4977,7 +4979,7 @@ status: } testCases := []struct { name string - task []*v1beta1.Task + task []*v1.Task noMatchPolicy string verificationPolicies []*v1alpha1.VerificationPolicy wantTrustedResourcesCondition *apis.Condition @@ -5015,7 +5017,7 @@ status: } rr := getResolvedResolutionRequest(t, resolverName, signedTaskBytes, tr.Namespace, tr.Name) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{tr}, + TaskRuns: []*v1.TaskRun{tr}, ConfigMaps: cms, VerificationPolicies: tc.verificationPolicies, ResolutionRequests: []*resolutionv1beta1.ResolutionRequest{&rr}, @@ -5029,7 +5031,7 @@ status: if ok, _ := controller.IsRequeueKey(err); !ok { t.Errorf("Error reconciling TaskRun. Got error %v", err) } - reconciledRun, err := testAssets.Clients.Pipeline.TektonV1beta1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) + reconciledRun, err := testAssets.Clients.Pipeline.TektonV1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -5094,7 +5096,7 @@ spec: }, }, } - tr := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + tr := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: test-taskrun namespace: foo @@ -5126,7 +5128,7 @@ status: t.Run(tc.name, func(t *testing.T) { rr := getResolvedResolutionRequest(t, resolverName, tc.taskBytes, tr.Namespace, tr.Name) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{tr}, + TaskRuns: []*v1.TaskRun{tr}, ConfigMaps: cms, VerificationPolicies: vps, ResolutionRequests: []*resolutionv1beta1.ResolutionRequest{&rr}, @@ -5140,7 +5142,7 @@ status: if !errors.Is(err, trustedresources.ErrResourceVerificationFailed) { t.Errorf("Reconcile got %v but want %v", err, trustedresources.ErrResourceVerificationFailed) } - reconciledRun, err := testAssets.Clients.Pipeline.TektonV1beta1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) + reconciledRun, err := testAssets.Clients.Pipeline.TektonV1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -5201,7 +5203,7 @@ spec: Resources: []v1alpha1.ResourcePattern{{Pattern: ".*"}}, Mode: v1alpha1.ModeWarn, }}} - tr := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + tr := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: test-taskrun namespace: foo @@ -5270,7 +5272,7 @@ status: } rr := getResolvedResolutionRequest(t, resolverName, signedTaskBytes, tr.Namespace, tr.Name) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{tr}, + TaskRuns: []*v1.TaskRun{tr}, ConfigMaps: cms, VerificationPolicies: tc.verificationPolicies, ResolutionRequests: []*resolutionv1beta1.ResolutionRequest{&rr}, @@ -5284,7 +5286,7 @@ status: if ok, _ := controller.IsRequeueKey(err); !ok { t.Errorf("Error reconciling TaskRun. Got error %v", err) } - reconciledRun, err := testAssets.Clients.Pipeline.TektonV1beta1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) + reconciledRun, err := testAssets.Clients.Pipeline.TektonV1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -5349,7 +5351,7 @@ spec: }, }, } - tr := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + tr := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: test-taskrun namespace: foo @@ -5381,7 +5383,7 @@ status: t.Run(tc.name, func(t *testing.T) { rr := getResolvedResolutionRequest(t, resolverName, tc.taskBytes, tr.Namespace, tr.Name) d := test.Data{ - TaskRuns: []*v1beta1.TaskRun{tr}, + TaskRuns: []*v1.TaskRun{tr}, ConfigMaps: cms, VerificationPolicies: vps, ResolutionRequests: []*resolutionv1beta1.ResolutionRequest{&rr}, @@ -5395,7 +5397,7 @@ status: if !errors.Is(err, trustedresources.ErrResourceVerificationFailed) { t.Errorf("Reconcile got %v but want %v", err, trustedresources.ErrResourceVerificationFailed) } - reconciledRun, err := testAssets.Clients.Pipeline.TektonV1beta1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) + reconciledRun, err := testAssets.Clients.Pipeline.TektonV1().TaskRuns(tr.Namespace).Get(testAssets.Ctx, tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("getting updated taskrun: %v", err) } @@ -5431,7 +5433,7 @@ func getResolvedResolutionRequest(t *testing.T, resolverName string, resourceByt return rr } -func getSignedV1Task(unsigned *pipelinev1.Task, signer signature.Signer, name string) (*pipelinev1.Task, error) { +func getSignedV1Task(unsigned *v1.Task, signer signature.Signer, name string) (*v1.Task, error) { signed := unsigned.DeepCopy() signed.Name = name if signed.Annotations == nil { diff --git a/pkg/reconciler/taskrun/tracing.go b/pkg/reconciler/taskrun/tracing.go index 881631d945e..d5e26a3a984 100644 --- a/pkg/reconciler/taskrun/tracing.go +++ b/pkg/reconciler/taskrun/tracing.go @@ -20,7 +20,7 @@ import ( "context" "encoding/json" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/attribute" "go.opentelemetry.io/otel/propagation" @@ -37,7 +37,7 @@ const ( // initialize tracing by creating the root span and injecting the // spanContext is propogated through annotations in the CR -func initTracing(ctx context.Context, tracerProvider trace.TracerProvider, tr *v1beta1.TaskRun) context.Context { +func initTracing(ctx context.Context, tracerProvider trace.TracerProvider, tr *v1.TaskRun) context.Context { logger := logging.FromContext(ctx) pro := otel.GetTextMapPropagator() diff --git a/pkg/reconciler/taskrun/tracing_test.go b/pkg/reconciler/taskrun/tracing_test.go index 0da9e81049b..d2381abfd95 100644 --- a/pkg/reconciler/taskrun/tracing_test.go +++ b/pkg/reconciler/taskrun/tracing_test.go @@ -17,7 +17,7 @@ import ( "context" "testing" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "go.opentelemetry.io/otel" "go.opentelemetry.io/otel/propagation" tracesdk "go.opentelemetry.io/otel/sdk/trace" @@ -30,14 +30,14 @@ func TestInitTracing(t *testing.T) { testcases := []struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun tracerProvider trace.TracerProvider expectSpanContextStatus bool expectValidSpanContext bool parentTraceID string }{{ name: "with-tracerprovider-no-parent-trace", - taskRun: &v1beta1.TaskRun{ + taskRun: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "test", Namespace: "testns", @@ -48,7 +48,7 @@ func TestInitTracing(t *testing.T) { expectValidSpanContext: true, }, { name: "with-tracerprovider-with-parent-trace", - taskRun: &v1beta1.TaskRun{ + taskRun: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "test", Namespace: "testns", @@ -63,7 +63,7 @@ func TestInitTracing(t *testing.T) { parentTraceID: "00-0f57e147e992b304d977436289d10628-73d5909e31793992-01", }, { name: "without-tracerprovider", - taskRun: &v1beta1.TaskRun{ + taskRun: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "test", Namespace: "testns", @@ -74,7 +74,7 @@ func TestInitTracing(t *testing.T) { expectValidSpanContext: false, }, { name: "without-tracerprovider-existing-annotations", - taskRun: &v1beta1.TaskRun{ + taskRun: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "test", Namespace: "testns", diff --git a/pkg/reconciler/taskrun/validate_taskrun.go b/pkg/reconciler/taskrun/validate_taskrun.go index 6bde1224874..505fc8e6c81 100644 --- a/pkg/reconciler/taskrun/validate_taskrun.go +++ b/pkg/reconciler/taskrun/validate_taskrun.go @@ -23,7 +23,7 @@ import ( "strings" "github.com/hashicorp/go-multierror" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/list" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" @@ -32,7 +32,7 @@ import ( // validateParams validates that all Pipeline Task, Matrix.Params and Matrix.Include parameters all have values, match the specified // type and object params have all the keys required -func validateParams(ctx context.Context, paramSpecs []v1beta1.ParamSpec, params v1beta1.Params, matrixParams v1beta1.Params) error { +func validateParams(ctx context.Context, paramSpecs []v1.ParamSpec, params v1.Params, matrixParams v1.Params) error { if paramSpecs == nil { return nil } @@ -53,9 +53,9 @@ func validateParams(ctx context.Context, paramSpecs []v1beta1.ParamSpec, params } // neededParamsNamesAndTypes returns the needed parameter names and types based on the paramSpec -func neededParamsNamesAndTypes(paramSpecs []v1beta1.ParamSpec) (sets.String, map[string]v1beta1.ParamType) { +func neededParamsNamesAndTypes(paramSpecs []v1.ParamSpec) (sets.String, map[string]v1.ParamType) { neededParamsNames := sets.String{} - neededParamsTypes := make(map[string]v1beta1.ParamType) + neededParamsTypes := make(map[string]v1.ParamType) for _, inputResourceParam := range paramSpecs { neededParamsNames.Insert(inputResourceParam.Name) neededParamsTypes[inputResourceParam.Name] = inputResourceParam.Type @@ -65,7 +65,7 @@ func neededParamsNamesAndTypes(paramSpecs []v1beta1.ParamSpec) (sets.String, map // missingParamsNames returns a slice of missing parameter names that have not been declared with a default value // in the paramSpec -func missingParamsNames(neededParams sets.String, providedParams sets.String, paramSpecs []v1beta1.ParamSpec) []string { +func missingParamsNames(neededParams sets.String, providedParams sets.String, paramSpecs []v1.ParamSpec) []string { missingParamsNames := neededParams.Difference(providedParams) var missingParamsNamesWithNoDefaults []string for _, inputResourceParam := range paramSpecs { @@ -75,7 +75,7 @@ func missingParamsNames(neededParams sets.String, providedParams sets.String, pa } return missingParamsNamesWithNoDefaults } -func wrongTypeParamsNames(params []v1beta1.Param, matrix v1beta1.Params, neededParamsTypes map[string]v1beta1.ParamType) []string { +func wrongTypeParamsNames(params []v1.Param, matrix v1.Params, neededParamsTypes map[string]v1.ParamType) []string { // TODO(#4723): validate that $(task.taskname.result.resultname) is invalid for array and object type. // It should be used to refer string and need to add [*] to refer to array or object. var wrongTypeParamNames []string @@ -89,7 +89,7 @@ func wrongTypeParamsNames(params []v1beta1.Param, matrix v1beta1.Params, neededP // to pass array result to array param, yet in yaml format this will be // unmarshalled to string for ParamValues. So we need to check and skip this validation. // Please refer issue #4879 for more details and examples. - if param.Value.Type == v1beta1.ParamTypeString && (neededParamsTypes[param.Name] == v1beta1.ParamTypeArray || neededParamsTypes[param.Name] == v1beta1.ParamTypeObject) && v1beta1.VariableSubstitutionRegex.MatchString(param.Value.StringVal) { + if param.Value.Type == v1.ParamTypeString && (neededParamsTypes[param.Name] == v1.ParamTypeArray || neededParamsTypes[param.Name] == v1.ParamTypeObject) && v1.VariableSubstitutionRegex.MatchString(param.Value.StringVal) { continue } if param.Value.Type != neededParamsTypes[param.Name] { @@ -103,7 +103,7 @@ func wrongTypeParamsNames(params []v1beta1.Param, matrix v1beta1.Params, neededP continue } // Matrix param replacements must be of type String - if neededParamsTypes[param.Name] != v1beta1.ParamTypeString { + if neededParamsTypes[param.Name] != v1.ParamTypeString { wrongTypeParamNames = append(wrongTypeParamNames, param.Name) } } @@ -111,12 +111,12 @@ func wrongTypeParamsNames(params []v1beta1.Param, matrix v1beta1.Params, neededP } // MissingKeysObjectParamNames checks if all required keys of object type param definitions are provided in params or param definitions' defaults. -func MissingKeysObjectParamNames(paramSpecs []v1beta1.ParamSpec, params v1beta1.Params) map[string][]string { +func MissingKeysObjectParamNames(paramSpecs []v1.ParamSpec, params v1.Params) map[string][]string { neededKeys := make(map[string][]string) providedKeys := make(map[string][]string) for _, spec := range paramSpecs { - if spec.Type == v1beta1.ParamTypeObject { + if spec.Type == v1.ParamTypeObject { // collect required keys from properties section for key := range spec.Properties { neededKeys[spec.Name] = append(neededKeys[spec.Name], key) @@ -133,7 +133,7 @@ func MissingKeysObjectParamNames(paramSpecs []v1beta1.ParamSpec, params v1beta1. // collect provided keys from run level value for _, p := range params { - if p.Value.Type == v1beta1.ParamTypeObject { + if p.Value.Type == v1.ParamTypeObject { for key := range p.Value.ObjectVal { providedKeys[p.Name] = append(providedKeys[p.Name], key) } @@ -163,8 +163,8 @@ func findMissingKeys(neededKeys, providedKeys map[string][]string) map[string][] // ValidateResolvedTask validates that all parameters declared in the TaskSpec are present in the taskrun // It also validates that all parameters have values, parameter types match the specified type and // object params have all the keys required -func ValidateResolvedTask(ctx context.Context, params v1beta1.Params, matrix *v1beta1.Matrix, rtr *resources.ResolvedTask) error { - var paramSpecs v1beta1.ParamSpecs +func ValidateResolvedTask(ctx context.Context, params []v1.Param, matrix *v1.Matrix, rtr *resources.ResolvedTask) error { + var paramSpecs v1.ParamSpecs if rtr != nil { paramSpecs = rtr.TaskSpec.Params } @@ -174,18 +174,18 @@ func ValidateResolvedTask(ctx context.Context, params v1beta1.Params, matrix *v1 return nil } -func validateTaskSpecRequestResources(taskSpec *v1beta1.TaskSpec) error { +func validateTaskSpecRequestResources(taskSpec *v1.TaskSpec) error { if taskSpec != nil { for _, step := range taskSpec.Steps { - for k, request := range step.Resources.Requests { + for k, request := range step.ComputeResources.Requests { // First validate the limit in step - if limit, ok := step.Resources.Limits[k]; ok { + if limit, ok := step.ComputeResources.Limits[k]; ok { if (&limit).Cmp(request) == -1 { return fmt.Errorf("Invalid request resource value: %v must be less or equal to limit %v", request.String(), limit.String()) } } else if taskSpec.StepTemplate != nil { // If step doesn't configure the limit, validate the limit in stepTemplate - if limit, ok := taskSpec.StepTemplate.Resources.Limits[k]; ok { + if limit, ok := taskSpec.StepTemplate.ComputeResources.Limits[k]; ok { if (&limit).Cmp(request) == -1 { return fmt.Errorf("Invalid request resource value: %v must be less or equal to limit %v", request.String(), limit.String()) } @@ -199,19 +199,19 @@ func validateTaskSpecRequestResources(taskSpec *v1beta1.TaskSpec) error { } // validateOverrides validates that all stepOverrides map to valid steps, and likewise for sidecarOverrides -func validateOverrides(ts *v1beta1.TaskSpec, trs *v1beta1.TaskRunSpec) error { +func validateOverrides(ts *v1.TaskSpec, trs *v1.TaskRunSpec) error { stepErr := validateStepOverrides(ts, trs) sidecarErr := validateSidecarOverrides(ts, trs) return multierror.Append(stepErr, sidecarErr).ErrorOrNil() } -func validateStepOverrides(ts *v1beta1.TaskSpec, trs *v1beta1.TaskRunSpec) error { +func validateStepOverrides(ts *v1.TaskSpec, trs *v1.TaskRunSpec) error { var err error stepNames := sets.NewString() for _, step := range ts.Steps { stepNames.Insert(step.Name) } - for _, stepOverride := range trs.StepOverrides { + for _, stepOverride := range trs.StepSpecs { if !stepNames.Has(stepOverride.Name) { err = multierror.Append(err, fmt.Errorf("invalid StepOverride: No Step named %s", stepOverride.Name)) } @@ -219,13 +219,13 @@ func validateStepOverrides(ts *v1beta1.TaskSpec, trs *v1beta1.TaskRunSpec) error return err } -func validateSidecarOverrides(ts *v1beta1.TaskSpec, trs *v1beta1.TaskRunSpec) error { +func validateSidecarOverrides(ts *v1.TaskSpec, trs *v1.TaskRunSpec) error { var err error sidecarNames := sets.NewString() for _, sidecar := range ts.Sidecars { sidecarNames.Insert(sidecar.Name) } - for _, sidecarOverride := range trs.SidecarOverrides { + for _, sidecarOverride := range trs.SidecarSpecs { if !sidecarNames.Has(sidecarOverride.Name) { err = multierror.Append(err, fmt.Errorf("invalid SidecarOverride: No Sidecar named %s", sidecarOverride.Name)) } @@ -234,8 +234,8 @@ func validateSidecarOverrides(ts *v1beta1.TaskSpec, trs *v1beta1.TaskRunSpec) er } // validateResults checks the emitted results type and object properties against the ones defined in spec. -func validateTaskRunResults(tr *v1beta1.TaskRun, resolvedTaskSpec *v1beta1.TaskSpec) error { - specResults := []v1beta1.TaskResult{} +func validateTaskRunResults(tr *v1.TaskRun, resolvedTaskSpec *v1.TaskSpec) error { + specResults := []v1.TaskResult{} if tr.Spec.TaskSpec != nil { specResults = append(specResults, tr.Spec.TaskSpec.Results...) } @@ -262,10 +262,10 @@ func validateTaskRunResults(tr *v1beta1.TaskRun, resolvedTaskSpec *v1beta1.TaskS } // mismatchedTypesResults checks and returns all the mismatched types of emitted results against specified results. -func mismatchedTypesResults(tr *v1beta1.TaskRun, specResults []v1beta1.TaskResult) map[string]string { +func mismatchedTypesResults(tr *v1.TaskRun, specResults []v1.TaskResult) map[string]string { neededTypes := make(map[string]string) mismatchedTypes := make(map[string]string) - var filteredResults []v1beta1.TaskRunResult + var filteredResults []v1.TaskRunResult // collect needed types for results for _, r := range specResults { neededTypes[r.Name] = string(r.Type) @@ -273,7 +273,7 @@ func mismatchedTypesResults(tr *v1beta1.TaskRun, specResults []v1beta1.TaskResul // collect mismatched types for results, and correct results in filteredResults // TODO(#6097): Validate if the emitted results are defined in taskspec - for _, trr := range tr.Status.TaskRunResults { + for _, trr := range tr.Status.Results { needed, ok := neededTypes[trr.Name] if ok && needed != string(trr.Type) { mismatchedTypes[trr.Name] = fmt.Sprintf("task result is expected to be \"%v\" type but was initialized to a different type \"%v\"", needed, trr.Type) @@ -282,17 +282,17 @@ func mismatchedTypesResults(tr *v1beta1.TaskRun, specResults []v1beta1.TaskResul } } // remove the mismatched results - tr.Status.TaskRunResults = filteredResults + tr.Status.Results = filteredResults return mismatchedTypes } // missingKeysofObjectResults checks and returns the missing keys of object results. -func missingKeysofObjectResults(tr *v1beta1.TaskRun, specResults []v1beta1.TaskResult) map[string][]string { +func missingKeysofObjectResults(tr *v1.TaskRun, specResults []v1.TaskResult) map[string][]string { neededKeys := make(map[string][]string) providedKeys := make(map[string][]string) // collect needed keys for object results for _, r := range specResults { - if string(r.Type) == string(v1beta1.ParamTypeObject) { + if string(r.Type) == string(v1.ParamTypeObject) { for key := range r.Properties { neededKeys[r.Name] = append(neededKeys[r.Name], key) } @@ -300,8 +300,8 @@ func missingKeysofObjectResults(tr *v1beta1.TaskRun, specResults []v1beta1.TaskR } // collect provided keys for object results - for _, trr := range tr.Status.TaskRunResults { - if trr.Value.Type == v1beta1.ParamTypeObject { + for _, trr := range tr.Status.Results { + if trr.Value.Type == v1.ParamTypeObject { for key := range trr.Value.ObjectVal { providedKeys[trr.Name] = append(providedKeys[trr.Name], key) } diff --git a/pkg/reconciler/taskrun/validate_taskrun_test.go b/pkg/reconciler/taskrun/validate_taskrun_test.go index 06b4e61c80a..1ab71eb49de 100644 --- a/pkg/reconciler/taskrun/validate_taskrun_test.go +++ b/pkg/reconciler/taskrun/validate_taskrun_test.go @@ -23,56 +23,56 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "github.com/google/go-cmp/cmp" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/reconciler/taskrun/resources" "github.com/tektoncd/pipeline/test/diff" ) func TestValidateResolvedTask_ValidParams(t *testing.T) { ctx := context.Background() - task := &v1beta1.Task{ + task := &v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + Spec: v1.TaskSpec{ + Steps: []v1.Step{{ Image: "myimage", Command: []string{"mycmd"}, }}, - Params: []v1beta1.ParamSpec{ + Params: []v1.ParamSpec{ { Name: "foo", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, { Name: "bar", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, { Name: "zoo", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, { Name: "matrixParam", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, { Name: "include", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }, { Name: "arrayResultRef", - Type: v1beta1.ParamTypeArray, + Type: v1.ParamTypeArray, }, { Name: "myObjWithoutDefault", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {}, "key2": {}, }, }, { Name: "myObjWithDefault", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {}, "key2": {}, "key3": {}, }, - Default: &v1beta1.ParamValue{ - Type: v1beta1.ParamTypeObject, + Default: &v1.ParamValue{ + Type: v1.ParamTypeObject, ObjectVal: map[string]string{ "key1": "val1-default", "key2": "val2-default", // key2 is also provided and will be overridden by taskrun @@ -86,40 +86,40 @@ func TestValidateResolvedTask_ValidParams(t *testing.T) { rtr := &resources.ResolvedTask{ TaskSpec: &task.Spec, } - p := v1beta1.Params{{ + p := v1.Params{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("somethinggood"), + Value: *v1.NewStructuredValues("somethinggood"), }, { Name: "bar", - Value: *v1beta1.NewStructuredValues("somethinggood"), + Value: *v1.NewStructuredValues("somethinggood"), }, { Name: "arrayResultRef", - Value: *v1beta1.NewStructuredValues("$(results.resultname[*])"), + Value: *v1.NewStructuredValues("$(results.resultname[*])"), }, { Name: "myObjWithoutDefault", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "key2": "val2", "extra_key": "val3", }), }, { Name: "myObjWithDefault", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key2": "val2", "key3": "val3", }), }} - m := &v1beta1.Matrix{ - Params: v1beta1.Params{{ + m := &v1.Matrix{ + Params: v1.Params{{ Name: "zoo", - Value: *v1beta1.NewStructuredValues("a", "b", "c"), + Value: *v1.NewStructuredValues("a", "b", "c"), }, { - Name: "matrixParam", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeArray, ArrayVal: []string{}}, + Name: "matrixParam", Value: v1.ParamValue{Type: v1.ParamTypeArray, ArrayVal: []string{}}, }}, - Include: []v1beta1.IncludeParams{{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ - Name: "include", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeString, StringVal: "string-1"}, + Params: v1.Params{{ + Name: "include", Value: v1.ParamValue{Type: v1.ParamTypeString, StringVal: "string-1"}, }}, }}, } @@ -131,87 +131,87 @@ func TestValidateResolvedTask_ExtraValidParams(t *testing.T) { ctx := context.Background() tcs := []struct { name string - task v1beta1.Task - params v1beta1.Params - matrix *v1beta1.Matrix + task v1.Task + params v1.Params + matrix *v1.Matrix }{{ name: "extra-str-param", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "foo", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }}, }, }, - params: v1beta1.Params{{ + params: v1.Params{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("string"), + Value: *v1.NewStructuredValues("string"), }, { Name: "extrastr", - Value: *v1beta1.NewStructuredValues("extra"), + Value: *v1.NewStructuredValues("extra"), }}, }, { name: "extra-arr-param", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "foo", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }}, }, }, - params: v1beta1.Params{{ + params: v1.Params{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("string"), + Value: *v1.NewStructuredValues("string"), }, { Name: "extraArr", - Value: *v1beta1.NewStructuredValues("extra", "arr"), + Value: *v1.NewStructuredValues("extra", "arr"), }}, }, { name: "extra-obj-param", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "foo", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }}, }, }, - params: v1beta1.Params{{ + params: v1.Params{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("string"), + Value: *v1.NewStructuredValues("string"), }, { Name: "myObjWithDefault", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key2": "val2", "key3": "val3", }), }}, }, { name: "extra-param-matrix", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "include", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }}, }, }, - params: v1beta1.Params{{}}, - matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + params: v1.Params{{}}, + matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "extraArr", - Value: *v1beta1.NewStructuredValues("extra", "arr"), + Value: *v1.NewStructuredValues("extra", "arr"), }}, - Include: []v1beta1.IncludeParams{{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ - Name: "include", Value: *v1beta1.NewStructuredValues("string"), + Params: v1.Params{{ + Name: "include", Value: *v1.NewStructuredValues("string"), }}, }}, }, @@ -232,198 +232,198 @@ func TestValidateResolvedTask_InvalidParams(t *testing.T) { ctx := context.Background() tcs := []struct { name string - task v1beta1.Task - params v1beta1.Params - matrix *v1beta1.Matrix + task v1.Task + params v1.Params + matrix *v1.Matrix wantErr string }{{ name: "missing-params-string", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "foo", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }}, }, }, - params: v1beta1.Params{{ + params: v1.Params{{ Name: "missing", - Value: *v1beta1.NewStructuredValues("somethingfun"), + Value: *v1.NewStructuredValues("somethingfun"), }}, - matrix: &v1beta1.Matrix{}, + matrix: &v1.Matrix{}, wantErr: "invalid input params for task : missing values for these params which have no default values: [foo]", }, { name: "missing-params-arr", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "foo", - Type: v1beta1.ParamTypeArray, + Type: v1.ParamTypeArray, }}, }, }, - params: v1beta1.Params{{ + params: v1.Params{{ Name: "missing", - Value: *v1beta1.NewStructuredValues("array", "param"), + Value: *v1.NewStructuredValues("array", "param"), }}, - matrix: &v1beta1.Matrix{}, + matrix: &v1.Matrix{}, wantErr: "invalid input params for task : missing values for these params which have no default values: [foo]", }, { name: "invalid-string-param", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "foo", - Type: v1beta1.ParamTypeString, + Type: v1.ParamTypeString, }}, }, }, - params: v1beta1.Params{{ + params: v1.Params{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("array", "param"), + Value: *v1.NewStructuredValues("array", "param"), }}, - matrix: &v1beta1.Matrix{}, + matrix: &v1.Matrix{}, wantErr: "invalid input params for task : param types don't match the user-specified type: [foo]", }, { name: "invalid-arr-param", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "foo", - Type: v1beta1.ParamTypeArray, + Type: v1.ParamTypeArray, }}, }, }, - params: v1beta1.Params{{ + params: v1.Params{{ Name: "foo", - Value: *v1beta1.NewStructuredValues("string"), + Value: *v1.NewStructuredValues("string"), }}, - matrix: &v1beta1.Matrix{}, + matrix: &v1.Matrix{}, wantErr: "invalid input params for task : param types don't match the user-specified type: [foo]", }, {name: "missing-param-in-matrix", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "bar", - Type: v1beta1.ParamTypeArray, + Type: v1.ParamTypeArray, }}, }, }, - params: v1beta1.Params{{}}, - matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + params: v1.Params{{}}, + matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "missing", - Value: *v1beta1.NewStructuredValues("foo"), + Value: *v1.NewStructuredValues("foo"), }}}, wantErr: "invalid input params for task : missing values for these params which have no default values: [bar]", }, { name: "missing-param-in-matrix-include", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "bar", - Type: v1beta1.ParamTypeArray, + Type: v1.ParamTypeArray, }}, }, }, - params: v1beta1.Params{{}}, - matrix: &v1beta1.Matrix{ - Include: []v1beta1.IncludeParams{{ + params: v1.Params{{}}, + matrix: &v1.Matrix{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ - Name: "missing", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeString, StringVal: "string"}, + Params: v1.Params{{ + Name: "missing", Value: v1.ParamValue{Type: v1.ParamTypeString, StringVal: "string"}, }}, }}, }, wantErr: "invalid input params for task : missing values for these params which have no default values: [bar]", }, { name: "invalid-arr-in-matrix-param", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "bar", - Type: v1beta1.ParamTypeArray, + Type: v1.ParamTypeArray, }}, }, }, - params: v1beta1.Params{{}}, - matrix: &v1beta1.Matrix{ - Params: v1beta1.Params{{ + params: v1.Params{{}}, + matrix: &v1.Matrix{ + Params: v1.Params{{ Name: "bar", - Value: *v1beta1.NewStructuredValues("foo"), + Value: *v1.NewStructuredValues("foo"), }}}, wantErr: "invalid input params for task : param types don't match the user-specified type: [bar]", }, { name: "invalid-str-in-matrix-include-param", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "bar", - Type: v1beta1.ParamTypeArray, + Type: v1.ParamTypeArray, }}, }, }, - params: v1beta1.Params{{}}, - matrix: &v1beta1.Matrix{ - Include: []v1beta1.IncludeParams{{ + params: v1.Params{{}}, + matrix: &v1.Matrix{ + Include: []v1.IncludeParams{{ Name: "build-1", - Params: v1beta1.Params{{ - Name: "bar", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeString, StringVal: "string"}, + Params: v1.Params{{ + Name: "bar", Value: v1.ParamValue{Type: v1.ParamTypeString, StringVal: "string"}, }}, }}, }, wantErr: "invalid input params for task : param types don't match the user-specified type: [bar]", }, { name: "missing-params-obj", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "foo", - Type: v1beta1.ParamTypeArray, + Type: v1.ParamTypeArray, }}, }, }, - params: v1beta1.Params{{ + params: v1.Params{{ Name: "missing-obj", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "misskey": "val2", }), }}, - matrix: &v1beta1.Matrix{}, + matrix: &v1.Matrix{}, wantErr: "invalid input params for task : missing values for these params which have no default values: [foo]", }, { name: "missing object param keys", - task: v1beta1.Task{ + task: v1.Task{ ObjectMeta: metav1.ObjectMeta{Name: "foo"}, - Spec: v1beta1.TaskSpec{ - Params: []v1beta1.ParamSpec{{ + Spec: v1.TaskSpec{ + Params: []v1.ParamSpec{{ Name: "myObjWithoutDefault", - Type: v1beta1.ParamTypeObject, - Properties: map[string]v1beta1.PropertySpec{ + Type: v1.ParamTypeObject, + Properties: map[string]v1.PropertySpec{ "key1": {}, "key2": {}, }, }}, }, }, - params: v1beta1.Params{{ + params: v1.Params{{ Name: "myObjWithoutDefault", - Value: *v1beta1.NewObject(map[string]string{ + Value: *v1.NewObject(map[string]string{ "key1": "val1", "misskey": "val2", }), }}, - matrix: &v1beta1.Matrix{}, + matrix: &v1.Matrix{}, wantErr: "invalid input params for task : missing keys for these params which are required in ParamSpec's properties map[myObjWithoutDefault:[key2]]", }} for _, tc := range tcs { @@ -442,51 +442,51 @@ func TestValidateResolvedTask_InvalidParams(t *testing.T) { func TestValidateOverrides(t *testing.T) { tcs := []struct { name string - ts *v1beta1.TaskSpec - trs *v1beta1.TaskRunSpec + ts *v1.TaskSpec + trs *v1.TaskRunSpec wantErr bool }{{ name: "valid stepOverrides", - ts: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", }, { Name: "step2", }}, }, - trs: &v1beta1.TaskRunSpec{ - StepOverrides: []v1beta1.TaskRunStepOverride{{ + trs: &v1.TaskRunSpec{ + StepSpecs: []v1.TaskRunStepSpec{{ Name: "step1", }}, }, }, { name: "valid sidecarOverrides", - ts: &v1beta1.TaskSpec{ - Sidecars: []v1beta1.Sidecar{{ + ts: &v1.TaskSpec{ + Sidecars: []v1.Sidecar{{ Name: "step1", }, { Name: "step2", }}, }, - trs: &v1beta1.TaskRunSpec{ - SidecarOverrides: []v1beta1.TaskRunSidecarOverride{{ + trs: &v1.TaskRunSpec{ + SidecarSpecs: []v1.TaskRunSidecarSpec{{ Name: "step1", }}, }, }, { name: "invalid stepOverrides", - ts: &v1beta1.TaskSpec{}, - trs: &v1beta1.TaskRunSpec{ - StepOverrides: []v1beta1.TaskRunStepOverride{{ + ts: &v1.TaskSpec{}, + trs: &v1.TaskRunSpec{ + StepSpecs: []v1.TaskRunStepSpec{{ Name: "step1", }}, }, wantErr: true, }, { name: "invalid sidecarOverrides", - ts: &v1beta1.TaskSpec{}, - trs: &v1beta1.TaskRunSpec{ - SidecarOverrides: []v1beta1.TaskRunSidecarOverride{{ + ts: &v1.TaskSpec{}, + trs: &v1.TaskRunSpec{ + SidecarSpecs: []v1.TaskRunSidecarSpec{{ Name: "step1", }}, }, @@ -505,313 +505,313 @@ func TestValidateOverrides(t *testing.T) { func TestValidateResult(t *testing.T) { tcs := []struct { name string - tr *v1beta1.TaskRun - rtr *v1beta1.TaskSpec + tr *v1.TaskRun + rtr *v1.TaskSpec wantErr bool }{{ name: "valid taskrun spec results", - tr: &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + tr: &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "string-result", - Type: v1beta1.ResultsTypeString, + Type: v1.ResultsTypeString, }, { Name: "array-result", - Type: v1beta1.ResultsTypeArray, + Type: v1.ResultsTypeArray, }, { Name: "object-result", - Type: v1beta1.ResultsTypeObject, - Properties: map[string]v1beta1.PropertySpec{"hello": {Type: "string"}}, + Type: v1.ResultsTypeObject, + Properties: map[string]v1.PropertySpec{"hello": {Type: "string"}}, }, }, }, }, - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{ { Name: "string-result", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("hello"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("hello"), }, { Name: "array-result", - Type: v1beta1.ResultsTypeArray, - Value: *v1beta1.NewStructuredValues("hello", "world"), + Type: v1.ResultsTypeArray, + Value: *v1.NewStructuredValues("hello", "world"), }, { Name: "object-result", - Type: v1beta1.ResultsTypeObject, - Value: *v1beta1.NewObject(map[string]string{"hello": "world"}), + Type: v1.ResultsTypeObject, + Value: *v1.NewObject(map[string]string{"hello": "world"}), }, }, }, }, }, - rtr: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{}, + rtr: &v1.TaskSpec{ + Results: []v1.TaskResult{}, }, wantErr: false, }, { name: "valid taskspec results", - tr: &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + tr: &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "string-result", - Type: v1beta1.ResultsTypeString, + Type: v1.ResultsTypeString, }, { Name: "array-result", - Type: v1beta1.ResultsTypeArray, + Type: v1.ResultsTypeArray, }, { Name: "object-result", - Type: v1beta1.ResultsTypeObject, + Type: v1.ResultsTypeObject, }, }, }, }, - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{ { Name: "string-result", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("hello"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("hello"), }, { Name: "array-result", - Type: v1beta1.ResultsTypeArray, - Value: *v1beta1.NewStructuredValues("hello", "world"), + Type: v1.ResultsTypeArray, + Value: *v1.NewStructuredValues("hello", "world"), }, { Name: "object-result", - Type: v1beta1.ResultsTypeObject, - Value: *v1beta1.NewObject(map[string]string{"hello": "world"}), + Type: v1.ResultsTypeObject, + Value: *v1.NewObject(map[string]string{"hello": "world"}), }, }, }, }, }, - rtr: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{}, + rtr: &v1.TaskSpec{ + Results: []v1.TaskResult{}, }, wantErr: false, }, { name: "invalid taskrun spec results types", - tr: &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + tr: &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "string-result", - Type: v1beta1.ResultsTypeString, + Type: v1.ResultsTypeString, }, { Name: "array-result", - Type: v1beta1.ResultsTypeArray, + Type: v1.ResultsTypeArray, }, { Name: "object-result", - Type: v1beta1.ResultsTypeObject, - Properties: map[string]v1beta1.PropertySpec{"hello": {Type: "string"}}, + Type: v1.ResultsTypeObject, + Properties: map[string]v1.PropertySpec{"hello": {Type: "string"}}, }, }, }, }, - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{ { Name: "string-result", - Type: v1beta1.ResultsTypeArray, - Value: *v1beta1.NewStructuredValues("hello", "world"), + Type: v1.ResultsTypeArray, + Value: *v1.NewStructuredValues("hello", "world"), }, { Name: "array-result", - Type: v1beta1.ResultsTypeObject, - Value: *v1beta1.NewObject(map[string]string{"hello": "world"}), + Type: v1.ResultsTypeObject, + Value: *v1.NewObject(map[string]string{"hello": "world"}), }, { Name: "object-result", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("hello"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("hello"), }, }, }, }, }, - rtr: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{}, + rtr: &v1.TaskSpec{ + Results: []v1.TaskResult{}, }, wantErr: true, }, { name: "invalid taskspec results types", - tr: &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{}, + tr: &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{}, }, }, - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{ { Name: "string-result", - Type: v1beta1.ResultsTypeArray, - Value: *v1beta1.NewStructuredValues("hello", "world"), + Type: v1.ResultsTypeArray, + Value: *v1.NewStructuredValues("hello", "world"), }, { Name: "array-result", - Type: v1beta1.ResultsTypeObject, - Value: *v1beta1.NewObject(map[string]string{"hello": "world"}), + Type: v1.ResultsTypeObject, + Value: *v1.NewObject(map[string]string{"hello": "world"}), }, { Name: "object-result", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("hello"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("hello"), }, }, }, }, }, - rtr: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + rtr: &v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "string-result", - Type: v1beta1.ResultsTypeString, + Type: v1.ResultsTypeString, }, { Name: "array-result", - Type: v1beta1.ResultsTypeArray, + Type: v1.ResultsTypeArray, }, { Name: "object-result", - Type: v1beta1.ResultsTypeObject, - Properties: map[string]v1beta1.PropertySpec{"hello": {Type: "string"}}, + Type: v1.ResultsTypeObject, + Properties: map[string]v1.PropertySpec{"hello": {Type: "string"}}, }, }, }, wantErr: true, }, { name: "invalid taskrun spec results object properties", - tr: &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + tr: &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "object-result", - Type: v1beta1.ResultsTypeObject, - Properties: map[string]v1beta1.PropertySpec{"world": {Type: "string"}}, + Type: v1.ResultsTypeObject, + Properties: map[string]v1.PropertySpec{"world": {Type: "string"}}, }, }, }, }, - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{ { Name: "object-result", - Type: v1beta1.ResultsTypeObject, - Value: *v1beta1.NewObject(map[string]string{"hello": "world"}), + Type: v1.ResultsTypeObject, + Value: *v1.NewObject(map[string]string{"hello": "world"}), }, }, }, }, }, - rtr: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{}, + rtr: &v1.TaskSpec{ + Results: []v1.TaskResult{}, }, wantErr: true, }, { name: "invalid taskspec results object properties", - tr: &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{}, + tr: &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{}, }, }, - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{ { Name: "object-result", - Type: v1beta1.ResultsTypeObject, - Value: *v1beta1.NewObject(map[string]string{"hello": "world"}), + Type: v1.ResultsTypeObject, + Value: *v1.NewObject(map[string]string{"hello": "world"}), }, }, }, }, }, - rtr: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + rtr: &v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "object-result", - Type: v1beta1.ResultsTypeObject, - Properties: map[string]v1beta1.PropertySpec{"world": {Type: "string"}}, + Type: v1.ResultsTypeObject, + Properties: map[string]v1.PropertySpec{"world": {Type: "string"}}, }, }, }, wantErr: true, }, { name: "invalid taskrun spec results types with other valid types", - tr: &v1beta1.TaskRun{ - Spec: v1beta1.TaskRunSpec{ - TaskSpec: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{ + tr: &v1.TaskRun{ + Spec: v1.TaskRunSpec{ + TaskSpec: &v1.TaskSpec{ + Results: []v1.TaskResult{ { Name: "string-result", - Type: v1beta1.ResultsTypeString, + Type: v1.ResultsTypeString, }, { Name: "array-result-1", - Type: v1beta1.ResultsTypeArray, + Type: v1.ResultsTypeArray, }, { Name: "array-result-2", - Type: v1beta1.ResultsTypeArray, + Type: v1.ResultsTypeArray, }, { Name: "object-result", - Type: v1beta1.ResultsTypeObject, - Properties: map[string]v1beta1.PropertySpec{"hello": {Type: "string"}}, + Type: v1.ResultsTypeObject, + Properties: map[string]v1.PropertySpec{"hello": {Type: "string"}}, }, }, }, }, - Status: v1beta1.TaskRunStatus{ - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ - TaskRunResults: []v1beta1.TaskRunResult{ + Status: v1.TaskRunStatus{ + TaskRunStatusFields: v1.TaskRunStatusFields{ + Results: []v1.TaskRunResult{ { Name: "string-result", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues("hello"), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues("hello"), }, { Name: "array-result-1", - Type: v1beta1.ResultsTypeObject, - Value: *v1beta1.NewObject(map[string]string{"hello": "world"}), + Type: v1.ResultsTypeObject, + Value: *v1.NewObject(map[string]string{"hello": "world"}), }, { Name: "array-result-2", - Type: v1beta1.ResultsTypeString, - Value: *v1beta1.NewStructuredValues(""), + Type: v1.ResultsTypeString, + Value: *v1.NewStructuredValues(""), }, { Name: "object-result", - Type: v1beta1.ResultsTypeObject, - Value: *v1beta1.NewObject(map[string]string{"hello": "world"}), + Type: v1.ResultsTypeObject, + Value: *v1.NewObject(map[string]string{"hello": "world"}), }, }, }, }, }, - rtr: &v1beta1.TaskSpec{ - Results: []v1beta1.TaskResult{}, + rtr: &v1.TaskSpec{ + Results: []v1.TaskResult{}, }, wantErr: true, }} diff --git a/pkg/reconciler/testing/logger.go b/pkg/reconciler/testing/logger.go index 057a39bbfbc..7bc1e161c2d 100644 --- a/pkg/reconciler/testing/logger.go +++ b/pkg/reconciler/testing/logger.go @@ -20,7 +20,7 @@ import ( "context" "testing" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/reconciler/events/cloudevent" "go.uber.org/zap" "go.uber.org/zap/zaptest" @@ -75,7 +75,7 @@ func TestLogger(t *testing.T) *zap.SugaredLogger { func setupFakeContextWithLabelKey(t zaptest.TestingT) (context.Context, context.CancelFunc, []controller.Informer) { ctx, c := context.WithCancel(logtesting.TestContextWithLogger(t)) ctx = controller.WithEventRecorder(ctx, record.NewFakeRecorder(1000)) - ctx = filteredinformerfactory.WithSelectors(ctx, v1beta1.ManagedByLabelKey) + ctx = filteredinformerfactory.WithSelectors(ctx, v1.ManagedByLabelKey) ctx, is := injection.Fake.SetupInformers(ctx, &rest.Config{}) return ctx, c, is } @@ -84,7 +84,7 @@ func setupFakeContextWithLabelKey(t zaptest.TestingT) (context.Context, context. // The provided context includes the FilteredInformerFactory LabelKey. func setupDefaultContextWithLabelKey(t zaptest.TestingT) (context.Context, context.CancelFunc, []controller.Informer) { ctx, c := context.WithCancel(logtesting.TestContextWithLogger(t)) - ctx = filteredinformerfactory.WithSelectors(ctx, v1beta1.ManagedByLabelKey) + ctx = filteredinformerfactory.WithSelectors(ctx, v1.ManagedByLabelKey) ctx, is := injection.Default.SetupInformers(ctx, &rest.Config{}) return ctx, c, is } diff --git a/pkg/reconciler/volumeclaim/pvchandler.go b/pkg/reconciler/volumeclaim/pvchandler.go index 37f1a7a513c..6f0a28e6ca7 100644 --- a/pkg/reconciler/volumeclaim/pvchandler.go +++ b/pkg/reconciler/volumeclaim/pvchandler.go @@ -21,7 +21,7 @@ import ( "crypto/sha256" "fmt" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "go.uber.org/zap" corev1 "k8s.io/api/core/v1" apierrors "k8s.io/apimachinery/pkg/api/errors" @@ -38,7 +38,7 @@ const ( // PvcHandler is used to create PVCs for workspaces type PvcHandler interface { - CreatePVCsForWorkspacesWithoutAffinityAssistant(ctx context.Context, wb []v1beta1.WorkspaceBinding, ownerReference metav1.OwnerReference, namespace string) error + CreatePVCsForWorkspacesWithoutAffinityAssistant(ctx context.Context, wb []v1.WorkspaceBinding, ownerReference metav1.OwnerReference, namespace string) error } type defaultPVCHandler struct { @@ -57,7 +57,7 @@ func NewPVCHandler(clientset clientset.Interface, logger *zap.SugaredLogger) Pvc // with that name is created with the provided OwnerReference. // This function is only called when Affinity Assistant is disabled. // When Affinity Assistant is enabled, the PersistentVolumeClaims will be created by the Affinity Assistant StatefulSet VolumeClaimTemplate instead. -func (c *defaultPVCHandler) CreatePVCsForWorkspacesWithoutAffinityAssistant(ctx context.Context, wb []v1beta1.WorkspaceBinding, ownerReference metav1.OwnerReference, namespace string) error { +func (c *defaultPVCHandler) CreatePVCsForWorkspacesWithoutAffinityAssistant(ctx context.Context, wb []v1.WorkspaceBinding, ownerReference metav1.OwnerReference, namespace string) error { var errs []error for _, claim := range getPVCsWithoutAffinityAssistant(wb, ownerReference, namespace) { _, err := c.clientset.CoreV1().PersistentVolumeClaims(claim.Namespace).Get(ctx, claim.Name, metav1.GetOptions{}) @@ -83,7 +83,7 @@ func (c *defaultPVCHandler) CreatePVCsForWorkspacesWithoutAffinityAssistant(ctx return errorutils.NewAggregate(errs) } -func getPVCsWithoutAffinityAssistant(workspaceBindings []v1beta1.WorkspaceBinding, ownerReference metav1.OwnerReference, namespace string) map[string]*corev1.PersistentVolumeClaim { +func getPVCsWithoutAffinityAssistant(workspaceBindings []v1.WorkspaceBinding, ownerReference metav1.OwnerReference, namespace string) map[string]*corev1.PersistentVolumeClaim { claims := make(map[string]*corev1.PersistentVolumeClaim) for _, workspaceBinding := range workspaceBindings { if workspaceBinding.VolumeClaimTemplate == nil { @@ -106,7 +106,7 @@ func getPVCsWithoutAffinityAssistant(workspaceBindings []v1beta1.WorkspaceBindin // We use ownerReference UID over ownerReference name to distinguish runs with the same name. // If the given volumeClaimTemplate name is empty, the prefix "pvc" will be applied to the PersistentVolumeClaim name. // See function `getPersistentVolumeClaimNameWithAffinityAssistant` when the PersistentVolumeClaim is created by Affinity Assistant StatefulSet. -func GetPVCNameWithoutAffinityAssistant(claimName string, wb v1beta1.WorkspaceBinding, owner metav1.OwnerReference) string { +func GetPVCNameWithoutAffinityAssistant(claimName string, wb v1.WorkspaceBinding, owner metav1.OwnerReference) string { if claimName == "" { return fmt.Sprintf("%s-%s", "pvc", getPersistentVolumeClaimIdentity(wb.Name, string(owner.UID))) } diff --git a/pkg/reconciler/volumeclaim/pvchandler_test.go b/pkg/reconciler/volumeclaim/pvchandler_test.go index a0a4192f80e..64c9b78fa2e 100644 --- a/pkg/reconciler/volumeclaim/pvchandler_test.go +++ b/pkg/reconciler/volumeclaim/pvchandler_test.go @@ -21,7 +21,7 @@ import ( "fmt" "testing" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "go.uber.org/zap" corev1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/errors" @@ -50,7 +50,7 @@ func TestCreatePersistentVolumeClaimsForWorkspaces(t *testing.T) { claimName1 := "pvc1" ws1 := "myws1" ownerName := "taskrun1" - workspaces := []v1beta1.WorkspaceBinding{{ + workspaces := []v1.WorkspaceBinding{{ Name: ws1, VolumeClaimTemplate: &corev1.PersistentVolumeClaim{ ObjectMeta: metav1.ObjectMeta{ @@ -130,7 +130,7 @@ func TestCreatePersistentVolumeClaimsForWorkspacesWithoutMetadata(t *testing.T) // workspace with volumeClaimTemplate without metadata workspaceName := "ws-with-volume-claim-template-without-metadata" ownerName := "taskrun1" - workspaces := []v1beta1.WorkspaceBinding{{ + workspaces := []v1.WorkspaceBinding{{ Name: workspaceName, VolumeClaimTemplate: &corev1.PersistentVolumeClaim{ Spec: corev1.PersistentVolumeClaimSpec{}, @@ -171,7 +171,7 @@ func TestCreatePersistentVolumeClaimsForWorkspacesWithoutMetadata(t *testing.T) func TestCreateExistPersistentVolumeClaims(t *testing.T) { workspaceName := "ws-with-volume-claim-template" ownerName := "taskrun1" - workspaces := []v1beta1.WorkspaceBinding{{ + workspaces := []v1.WorkspaceBinding{{ Name: workspaceName, VolumeClaimTemplate: &corev1.PersistentVolumeClaim{ Spec: corev1.PersistentVolumeClaimSpec{}, diff --git a/pkg/remote/oci/resolver.go b/pkg/remote/oci/resolver.go index 38ed4699962..fe44b801222 100644 --- a/pkg/remote/oci/resolver.go +++ b/pkg/remote/oci/resolver.go @@ -29,7 +29,7 @@ import ( imgname "github.com/google/go-containerregistry/pkg/name" v1 "github.com/google/go-containerregistry/pkg/v1" ociremote "github.com/google/go-containerregistry/pkg/v1/remote" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/client/clientset/versioned/scheme" "github.com/tektoncd/pipeline/pkg/remote" "k8s.io/apimachinery/pkg/runtime" @@ -90,7 +90,7 @@ func (o *Resolver) List(ctx context.Context) ([]remote.ResolvedObject, error) { } // Get retrieves a specific object with the given Kind and name -func (o *Resolver) Get(ctx context.Context, kind, name string) (runtime.Object, *v1beta1.RefSource, error) { +func (o *Resolver) Get(ctx context.Context, kind, name string) (runtime.Object, *pipelinev1.RefSource, error) { timeoutCtx, cancel := context.WithTimeout(ctx, o.timeout) defer cancel() img, err := o.retrieveImage(timeoutCtx) diff --git a/pkg/remote/resolution/resolver.go b/pkg/remote/resolution/resolver.go index 10237a978a8..772b39e416a 100644 --- a/pkg/remote/resolution/resolver.go +++ b/pkg/remote/resolution/resolver.go @@ -18,7 +18,7 @@ import ( "errors" "fmt" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/client/clientset/versioned/scheme" "github.com/tektoncd/pipeline/pkg/remote" resolutioncommon "github.com/tektoncd/pipeline/pkg/resolution/common" @@ -35,7 +35,7 @@ type Resolver struct { requester remoteresource.Requester owner kmeta.OwnerRefable resolverName string - params v1beta1.Params + params v1.Params targetName string targetNamespace string } @@ -44,7 +44,7 @@ var _ remote.Resolver = &Resolver{} // NewResolver returns an implementation of remote.Resolver capable // of performing asynchronous remote resolution. -func NewResolver(requester remoteresource.Requester, owner kmeta.OwnerRefable, resolverName string, targetName string, targetNamespace string, params v1beta1.Params) remote.Resolver { +func NewResolver(requester remoteresource.Requester, owner kmeta.OwnerRefable, resolverName string, targetName string, targetNamespace string, params v1.Params) remote.Resolver { return &Resolver{ requester: requester, owner: owner, @@ -56,7 +56,7 @@ func NewResolver(requester remoteresource.Requester, owner kmeta.OwnerRefable, r } // Get implements remote.Resolver. -func (resolver *Resolver) Get(ctx context.Context, _, _ string) (runtime.Object, *v1beta1.RefSource, error) { +func (resolver *Resolver) Get(ctx context.Context, _, _ string) (runtime.Object, *v1.RefSource, error) { resolverName := remoteresource.ResolverName(resolver.resolverName) req, err := buildRequest(resolver.resolverName, resolver.owner, resolver.targetName, resolver.targetNamespace, resolver.params) if err != nil { @@ -88,7 +88,7 @@ func (resolver *Resolver) List(_ context.Context) ([]remote.ResolvedObject, erro return nil, nil } -func buildRequest(resolverName string, owner kmeta.OwnerRefable, name string, namespace string, params v1beta1.Params) (*resolutionRequest, error) { +func buildRequest(resolverName string, owner kmeta.OwnerRefable, name string, namespace string, params v1.Params) (*resolutionRequest, error) { if name == "" { name = owner.GetObjectMeta().GetName() namespace = owner.GetObjectMeta().GetNamespace() diff --git a/pkg/remote/resolver.go b/pkg/remote/resolver.go index 4bfa14cf34c..b533d154169 100644 --- a/pkg/remote/resolver.go +++ b/pkg/remote/resolver.go @@ -16,7 +16,7 @@ package remote import ( "context" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "k8s.io/apimachinery/pkg/runtime" ) @@ -32,5 +32,5 @@ type ResolvedObject struct { // - Get: retrieves a specific object with the given Kind and name, and the refSource identifying where the resource came from. type Resolver interface { List(ctx context.Context) ([]ResolvedObject, error) - Get(ctx context.Context, kind, name string) (runtime.Object, *v1beta1.RefSource, error) + Get(ctx context.Context, kind, name string) (runtime.Object, *v1.RefSource, error) } diff --git a/pkg/resolution/common/interface.go b/pkg/resolution/common/interface.go index b1c07165b35..3d2941c8aed 100644 --- a/pkg/resolution/common/interface.go +++ b/pkg/resolution/common/interface.go @@ -19,7 +19,7 @@ package common import ( "context" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -44,7 +44,7 @@ type Requester interface { type Request interface { Name() string Namespace() string - Params() pipelinev1beta1.Params + Params() pipelinev1.Params } // OwnedRequest is implemented by any type implementing Request that also needs @@ -59,5 +59,5 @@ type OwnedRequest interface { type ResolvedResource interface { Data() ([]byte, error) Annotations() map[string]string - RefSource() *pipelinev1beta1.RefSource + RefSource() *pipelinev1.RefSource } diff --git a/pkg/resolution/resolver/bundle/bundle.go b/pkg/resolution/resolver/bundle/bundle.go index eae07b33e44..590135374d4 100644 --- a/pkg/resolution/resolver/bundle/bundle.go +++ b/pkg/resolution/resolver/bundle/bundle.go @@ -25,8 +25,7 @@ import ( "github.com/google/go-containerregistry/pkg/name" v1 "github.com/google/go-containerregistry/pkg/v1" "github.com/google/go-containerregistry/pkg/v1/remote" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/resolution/resolver/framework" ) @@ -48,7 +47,7 @@ type RequestOptions struct { type ResolvedResource struct { data []byte annotations map[string]string - source *pipelinev1beta1.RefSource + source *pipelinev1.RefSource } var _ framework.ResolvedResource = &ResolvedResource{} @@ -66,7 +65,7 @@ func (br *ResolvedResource) Annotations() map[string]string { // RefSource is the source reference of the remote data that records where the remote // file came from including the url, digest and the entrypoint. -func (br *ResolvedResource) RefSource() *pipelinev1beta1.RefSource { +func (br *ResolvedResource) RefSource() *pipelinev1.RefSource { return br.source } @@ -123,7 +122,7 @@ func GetEntry(ctx context.Context, keychain authn.Keychain, opts RequestOptions) ResolverAnnotationName: lName, ResolverAnnotationAPIVersion: l.Annotations[BundleAnnotationAPIVersion], }, - source: &v1beta1.RefSource{ + source: &pipelinev1.RefSource{ URI: uri, Digest: map[string]string{ h.Algorithm: h.Hex, diff --git a/pkg/resolution/resolver/bundle/params.go b/pkg/resolution/resolver/bundle/params.go index 729fb030114..207a959ad4b 100644 --- a/pkg/resolution/resolver/bundle/params.go +++ b/pkg/resolution/resolver/bundle/params.go @@ -18,7 +18,7 @@ import ( "fmt" "github.com/google/go-containerregistry/pkg/name" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/resolution/resolver/framework" ) @@ -39,11 +39,11 @@ const ParamKind = "kind" // OptionsFromParams parses the params from a resolution request and // converts them into options to pass as part of a bundle request. -func OptionsFromParams(ctx context.Context, params []pipelinev1beta1.Param) (RequestOptions, error) { +func OptionsFromParams(ctx context.Context, params []pipelinev1.Param) (RequestOptions, error) { opts := RequestOptions{} conf := framework.GetResolverConfigFromContext(ctx) - paramsMap := make(map[string]pipelinev1beta1.ParamValue) + paramsMap := make(map[string]pipelinev1.ParamValue) for _, p := range params { paramsMap[p.Name] = p.Value } diff --git a/pkg/resolution/resolver/bundle/resolver.go b/pkg/resolution/resolver/bundle/resolver.go index 5a9ae84f3a5..3cd270a00b6 100644 --- a/pkg/resolution/resolver/bundle/resolver.go +++ b/pkg/resolution/resolver/bundle/resolver.go @@ -23,7 +23,7 @@ import ( "github.com/google/go-containerregistry/pkg/authn/k8schain" resolverconfig "github.com/tektoncd/pipeline/pkg/apis/config/resolver" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/resolution/common" "github.com/tektoncd/pipeline/pkg/resolution/resolver/framework" "k8s.io/client-go/kubernetes" @@ -74,7 +74,7 @@ func (r *Resolver) GetSelector(context.Context) map[string]string { } // ValidateParams ensures parameters from a request are as expected. -func (r *Resolver) ValidateParams(ctx context.Context, params []pipelinev1beta1.Param) error { +func (r *Resolver) ValidateParams(ctx context.Context, params []pipelinev1.Param) error { if r.isDisabled(ctx) { return errors.New(disabledError) } @@ -85,7 +85,7 @@ func (r *Resolver) ValidateParams(ctx context.Context, params []pipelinev1beta1. } // Resolve uses the given params to resolve the requested file or resource. -func (r *Resolver) Resolve(ctx context.Context, params []pipelinev1beta1.Param) (framework.ResolvedResource, error) { +func (r *Resolver) Resolve(ctx context.Context, params []pipelinev1.Param) (framework.ResolvedResource, error) { if r.isDisabled(ctx) { return nil, errors.New(disabledError) } diff --git a/pkg/resolution/resolver/bundle/resolver_test.go b/pkg/resolution/resolver/bundle/resolver_test.go index 998b55e1258..d0917374115 100644 --- a/pkg/resolution/resolver/bundle/resolver_test.go +++ b/pkg/resolution/resolver/bundle/resolver_test.go @@ -28,6 +28,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-containerregistry/pkg/registry" resolverconfig "github.com/tektoncd/pipeline/pkg/apis/config/resolver" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" @@ -62,36 +63,36 @@ func TestGetSelector(t *testing.T) { func TestValidateParams(t *testing.T) { resolver := bundle.Resolver{} - paramsWithTask := []pipelinev1beta1.Param{{ + paramsWithTask := []pipelinev1.Param{{ Name: bundle.ParamKind, - Value: *pipelinev1beta1.NewStructuredValues("task"), + Value: *pipelinev1.NewStructuredValues("task"), }, { Name: bundle.ParamName, - Value: *pipelinev1beta1.NewStructuredValues("foo"), + Value: *pipelinev1.NewStructuredValues("foo"), }, { Name: bundle.ParamBundle, - Value: *pipelinev1beta1.NewStructuredValues("bar"), + Value: *pipelinev1.NewStructuredValues("bar"), }, { Name: bundle.ParamServiceAccount, - Value: *pipelinev1beta1.NewStructuredValues("baz"), + Value: *pipelinev1.NewStructuredValues("baz"), }} if err := resolver.ValidateParams(context.Background(), paramsWithTask); err != nil { t.Fatalf("unexpected error validating params: %v", err) } - paramsWithPipeline := []pipelinev1beta1.Param{{ + paramsWithPipeline := []pipelinev1.Param{{ Name: bundle.ParamKind, - Value: *pipelinev1beta1.NewStructuredValues("pipeline"), + Value: *pipelinev1.NewStructuredValues("pipeline"), }, { Name: bundle.ParamName, - Value: *pipelinev1beta1.NewStructuredValues("foo"), + Value: *pipelinev1.NewStructuredValues("foo"), }, { Name: bundle.ParamBundle, - Value: *pipelinev1beta1.NewStructuredValues("bar"), + Value: *pipelinev1.NewStructuredValues("bar"), }, { Name: bundle.ParamServiceAccount, - Value: *pipelinev1beta1.NewStructuredValues("baz"), + Value: *pipelinev1.NewStructuredValues("baz"), }} if err := resolver.ValidateParams(context.Background(), paramsWithPipeline); err != nil { t.Fatalf("unexpected error validating params: %v", err) @@ -103,18 +104,18 @@ func TestValidateParamsDisabled(t *testing.T) { var err error - params := []pipelinev1beta1.Param{{ + params := []pipelinev1.Param{{ Name: bundle.ParamKind, - Value: *pipelinev1beta1.NewStructuredValues("task"), + Value: *pipelinev1.NewStructuredValues("task"), }, { Name: bundle.ParamName, - Value: *pipelinev1beta1.NewStructuredValues("foo"), + Value: *pipelinev1.NewStructuredValues("foo"), }, { Name: bundle.ParamBundle, - Value: *pipelinev1beta1.NewStructuredValues("bar"), + Value: *pipelinev1.NewStructuredValues("bar"), }, { Name: bundle.ParamServiceAccount, - Value: *pipelinev1beta1.NewStructuredValues("baz"), + Value: *pipelinev1.NewStructuredValues("baz"), }} err = resolver.ValidateParams(resolverDisabledContext(), params) if err == nil { @@ -131,30 +132,30 @@ func TestValidateParamsMissing(t *testing.T) { var err error - paramsMissingBundle := []pipelinev1beta1.Param{{ + paramsMissingBundle := []pipelinev1.Param{{ Name: bundle.ParamKind, - Value: *pipelinev1beta1.NewStructuredValues("task"), + Value: *pipelinev1.NewStructuredValues("task"), }, { Name: bundle.ParamName, - Value: *pipelinev1beta1.NewStructuredValues("foo"), + Value: *pipelinev1.NewStructuredValues("foo"), }, { Name: bundle.ParamServiceAccount, - Value: *pipelinev1beta1.NewStructuredValues("baz"), + Value: *pipelinev1.NewStructuredValues("baz"), }} err = resolver.ValidateParams(context.Background(), paramsMissingBundle) if err == nil { t.Fatalf("expected missing kind err") } - paramsMissingName := []pipelinev1beta1.Param{{ + paramsMissingName := []pipelinev1.Param{{ Name: bundle.ParamKind, - Value: *pipelinev1beta1.NewStructuredValues("task"), + Value: *pipelinev1.NewStructuredValues("task"), }, { Name: bundle.ParamBundle, - Value: *pipelinev1beta1.NewStructuredValues("bar"), + Value: *pipelinev1.NewStructuredValues("bar"), }, { Name: bundle.ParamServiceAccount, - Value: *pipelinev1beta1.NewStructuredValues("baz"), + Value: *pipelinev1.NewStructuredValues("baz"), }} err = resolver.ValidateParams(context.Background(), paramsMissingName) if err == nil { @@ -167,18 +168,18 @@ func TestResolveDisabled(t *testing.T) { var err error - params := []pipelinev1beta1.Param{{ + params := []pipelinev1.Param{{ Name: bundle.ParamKind, - Value: *pipelinev1beta1.NewStructuredValues("task"), + Value: *pipelinev1.NewStructuredValues("task"), }, { Name: bundle.ParamName, - Value: *pipelinev1beta1.NewStructuredValues("foo"), + Value: *pipelinev1.NewStructuredValues("foo"), }, { Name: bundle.ParamBundle, - Value: *pipelinev1beta1.NewStructuredValues("bar"), + Value: *pipelinev1.NewStructuredValues("bar"), }, { Name: bundle.ParamServiceAccount, - Value: *pipelinev1beta1.NewStructuredValues("baz"), + Value: *pipelinev1.NewStructuredValues("baz"), }} _, err = resolver.Resolve(resolverDisabledContext(), params) if err == nil { @@ -446,14 +447,14 @@ func TestResolve(t *testing.T) { expectedStatus.Annotations[bundle.ResolverAnnotationName] = tc.args.name expectedStatus.Annotations[bundle.ResolverAnnotationAPIVersion] = "v1beta1" - expectedStatus.RefSource = &pipelinev1beta1.RefSource{ + expectedStatus.RefSource = &pipelinev1.RefSource{ URI: testImages[tc.imageName].uri, Digest: map[string]string{ testImages[tc.imageName].algo: testImages[tc.imageName].hex, }, EntryPoint: tc.args.name, } - expectedStatus.Source = (*pipelinev1beta1.ConfigSource)(expectedStatus.RefSource) + expectedStatus.Source = expectedStatus.RefSource } else { expectedError = createError(tc.args.bundle, tc.expectedErrMessage) expectedStatus.Status.Conditions[0].Message = expectedError.Error() @@ -480,18 +481,18 @@ func createRequest(p *params) *v1beta1.ResolutionRequest { }, }, Spec: v1beta1.ResolutionRequestSpec{ - Params: []pipelinev1beta1.Param{{ + Params: []pipelinev1.Param{{ Name: bundle.ParamBundle, - Value: *pipelinev1beta1.NewStructuredValues(p.bundle), + Value: *pipelinev1.NewStructuredValues(p.bundle), }, { Name: bundle.ParamName, - Value: *pipelinev1beta1.NewStructuredValues(p.name), + Value: *pipelinev1.NewStructuredValues(p.name), }, { Name: bundle.ParamKind, - Value: *pipelinev1beta1.NewStructuredValues(p.kind), + Value: *pipelinev1.NewStructuredValues(p.kind), }, { Name: bundle.ParamServiceAccount, - Value: *pipelinev1beta1.NewStructuredValues(p.serviceAccount), + Value: *pipelinev1.NewStructuredValues(p.serviceAccount), }}, }, } diff --git a/pkg/resolution/resolver/cluster/resolver.go b/pkg/resolution/resolver/cluster/resolver.go index 08f295adc6a..8d63178b33d 100644 --- a/pkg/resolution/resolver/cluster/resolver.go +++ b/pkg/resolution/resolver/cluster/resolver.go @@ -25,7 +25,7 @@ import ( "strings" resolverconfig "github.com/tektoncd/pipeline/pkg/apis/config/resolver" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" clientset "github.com/tektoncd/pipeline/pkg/client/clientset/versioned" pipelineclient "github.com/tektoncd/pipeline/pkg/client/injection/client" resolutioncommon "github.com/tektoncd/pipeline/pkg/resolution/common" @@ -78,7 +78,7 @@ func (r *Resolver) GetSelector(_ context.Context) map[string]string { // ValidateParams returns an error if the given parameter map is not // valid for a resource request targeting the cluster resolver. -func (r *Resolver) ValidateParams(ctx context.Context, params []pipelinev1beta1.Param) error { +func (r *Resolver) ValidateParams(ctx context.Context, params []pipelinev1.Param) error { if r.isDisabled(ctx) { return errors.New(disabledError) } @@ -89,7 +89,7 @@ func (r *Resolver) ValidateParams(ctx context.Context, params []pipelinev1beta1. // Resolve performs the work of fetching a resource from a namespace with the given // parameters. -func (r *Resolver) Resolve(ctx context.Context, origParams []pipelinev1beta1.Param) (framework.ResolvedResource, error) { +func (r *Resolver) Resolve(ctx context.Context, origParams []pipelinev1.Param) (framework.ResolvedResource, error) { if r.isDisabled(ctx) { return nil, errors.New(disabledError) } @@ -105,11 +105,11 @@ func (r *Resolver) Resolve(ctx context.Context, origParams []pipelinev1beta1.Par var data []byte var spec []byte var uid string - groupVersion := pipelinev1beta1.SchemeGroupVersion.String() + groupVersion := pipelinev1.SchemeGroupVersion.String() switch params[KindParam] { case "task": - task, err := r.pipelineClientSet.TektonV1beta1().Tasks(params[NamespaceParam]).Get(ctx, params[NameParam], metav1.GetOptions{}) + task, err := r.pipelineClientSet.TektonV1().Tasks(params[NamespaceParam]).Get(ctx, params[NameParam], metav1.GetOptions{}) if err != nil { logger.Infof("failed to load task %s from namespace %s: %v", params[NameParam], params[NamespaceParam], err) return nil, err @@ -129,7 +129,7 @@ func (r *Resolver) Resolve(ctx context.Context, origParams []pipelinev1beta1.Par return nil, err } case "pipeline": - pipeline, err := r.pipelineClientSet.TektonV1beta1().Pipelines(params[NamespaceParam]).Get(ctx, params[NameParam], metav1.GetOptions{}) + pipeline, err := r.pipelineClientSet.TektonV1().Pipelines(params[NamespaceParam]).Get(ctx, params[NameParam], metav1.GetOptions{}) if err != nil { logger.Infof("failed to load pipeline %s from namespace %s: %v", params[NameParam], params[NamespaceParam], err) return nil, err @@ -209,12 +209,12 @@ func (r *ResolvedClusterResource) Annotations() map[string]string { // RefSource is the source reference of the remote data that records where the remote // file came from including the url, digest and the entrypoint. -func (r ResolvedClusterResource) RefSource() *pipelinev1beta1.RefSource { +func (r ResolvedClusterResource) RefSource() *pipelinev1.RefSource { h := sha256.New() h.Write(r.Spec) sha256CheckSum := hex.EncodeToString(h.Sum(nil)) - return &pipelinev1beta1.RefSource{ + return &pipelinev1.RefSource{ URI: r.Identifier, Digest: map[string]string{ "sha256": sha256CheckSum, @@ -222,10 +222,10 @@ func (r ResolvedClusterResource) RefSource() *pipelinev1beta1.RefSource { } } -func populateParamsWithDefaults(ctx context.Context, origParams []pipelinev1beta1.Param) (map[string]string, error) { +func populateParamsWithDefaults(ctx context.Context, origParams []pipelinev1.Param) (map[string]string, error) { conf := framework.GetResolverConfigFromContext(ctx) - paramsMap := make(map[string]pipelinev1beta1.ParamValue) + paramsMap := make(map[string]pipelinev1.ParamValue) for _, p := range origParams { paramsMap[p.Name] = p.Value } diff --git a/pkg/resolution/resolver/cluster/resolver_test.go b/pkg/resolution/resolver/cluster/resolver_test.go index 0a6a5baddb4..100e9f0f442 100644 --- a/pkg/resolution/resolver/cluster/resolver_test.go +++ b/pkg/resolution/resolver/cluster/resolver_test.go @@ -28,6 +28,7 @@ import ( "github.com/google/go-cmp/cmp" resolverconfig "github.com/tektoncd/pipeline/pkg/apis/config/resolver" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" @@ -63,15 +64,15 @@ func TestGetSelector(t *testing.T) { func TestValidateParams(t *testing.T) { resolver := cluster.Resolver{} - params := []pipelinev1beta1.Param{{ + params := []pipelinev1.Param{{ Name: cluster.KindParam, - Value: *pipelinev1beta1.NewStructuredValues("task"), + Value: *pipelinev1.NewStructuredValues("task"), }, { Name: cluster.NamespaceParam, - Value: *pipelinev1beta1.NewStructuredValues("foo"), + Value: *pipelinev1.NewStructuredValues("foo"), }, { Name: cluster.NameParam, - Value: *pipelinev1beta1.NewStructuredValues("baz"), + Value: *pipelinev1.NewStructuredValues("baz"), }} ctx := framework.InjectResolverConfigToContext(context.Background(), map[string]string{ @@ -89,15 +90,15 @@ func TestValidateParamsNotEnabled(t *testing.T) { var err error - params := []pipelinev1beta1.Param{{ + params := []pipelinev1.Param{{ Name: cluster.KindParam, - Value: *pipelinev1beta1.NewStructuredValues("task"), + Value: *pipelinev1.NewStructuredValues("task"), }, { Name: cluster.NamespaceParam, - Value: *pipelinev1beta1.NewStructuredValues("foo"), + Value: *pipelinev1.NewStructuredValues("foo"), }, { Name: cluster.NameParam, - Value: *pipelinev1beta1.NewStructuredValues("baz"), + Value: *pipelinev1.NewStructuredValues("baz"), }} err = resolver.ValidateParams(resolverDisabledContext(), params) if err == nil { @@ -170,11 +171,11 @@ func TestValidateParamsFailure(t *testing.T) { ctx = framework.InjectResolverConfigToContext(ctx, tc.conf) } - var asParams []pipelinev1beta1.Param + var asParams []pipelinev1.Param for k, v := range tc.params { - asParams = append(asParams, pipelinev1beta1.Param{ + asParams = append(asParams, pipelinev1.Param{ Name: k, - Value: *pipelinev1beta1.NewStructuredValues(v), + Value: *pipelinev1.NewStructuredValues(v), }) } err := resolver.ValidateParams(ctx, asParams) @@ -191,7 +192,7 @@ func TestValidateParamsFailure(t *testing.T) { func TestResolve(t *testing.T) { defaultNS := "pipeline-ns" - exampleTask := &pipelinev1beta1.Task{ + exampleTask := &pipelinev1.Task{ ObjectMeta: metav1.ObjectMeta{ Name: "example-task", Namespace: "task-ns", @@ -200,10 +201,10 @@ func TestResolve(t *testing.T) { }, TypeMeta: metav1.TypeMeta{ Kind: string(pipelinev1beta1.NamespacedTaskKind), - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", }, - Spec: pipelinev1beta1.TaskSpec{ - Steps: []pipelinev1beta1.Step{{ + Spec: pipelinev1.TaskSpec{ + Steps: []pipelinev1.Step{{ Name: "some-step", Image: "some-image", Command: []string{"something"}, @@ -219,7 +220,7 @@ func TestResolve(t *testing.T) { t.Fatalf("couldn't marshal task spec: %v", err) } - examplePipeline := &pipelinev1beta1.Pipeline{ + examplePipeline := &pipelinev1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Name: "example-pipeline", Namespace: defaultNS, @@ -228,14 +229,14 @@ func TestResolve(t *testing.T) { }, TypeMeta: metav1.TypeMeta{ Kind: "Pipeline", - APIVersion: "tekton.dev/v1beta1", + APIVersion: "tekton.dev/v1", }, - Spec: pipelinev1beta1.PipelineSpec{ - Tasks: []pipelinev1beta1.PipelineTask{{ + Spec: pipelinev1.PipelineSpec{ + Tasks: []pipelinev1.PipelineTask{{ Name: "some-pipeline-task", - TaskRef: &pipelinev1beta1.TaskRef{ + TaskRef: &pipelinev1.TaskRef{ Name: "some-task", - Kind: pipelinev1beta1.NamespacedTaskKind, + Kind: pipelinev1.NamespacedTaskKind, }, }}, }, @@ -268,14 +269,8 @@ func TestResolve(t *testing.T) { Status: duckv1.Status{}, ResolutionRequestStatusFields: v1beta1.ResolutionRequestStatusFields{ Data: base64.StdEncoding.Strict().EncodeToString(taskAsYAML), - RefSource: &pipelinev1beta1.RefSource{ - URI: "/apis/tekton.dev/v1beta1/namespaces/task-ns/task/example-task@a123", - Digest: map[string]string{ - "sha256": sha256CheckSum(taskSpec), - }, - }, - Source: &pipelinev1beta1.ConfigSource{ - URI: "/apis/tekton.dev/v1beta1/namespaces/task-ns/task/example-task@a123", + RefSource: &pipelinev1.RefSource{ + URI: "/apis/tekton.dev/v1/namespaces/task-ns/task/example-task@a123", Digest: map[string]string{ "sha256": sha256CheckSum(taskSpec), }, @@ -291,14 +286,8 @@ func TestResolve(t *testing.T) { Status: duckv1.Status{}, ResolutionRequestStatusFields: v1beta1.ResolutionRequestStatusFields{ Data: base64.StdEncoding.Strict().EncodeToString(pipelineAsYAML), - RefSource: &pipelinev1beta1.RefSource{ - URI: "/apis/tekton.dev/v1beta1/namespaces/pipeline-ns/pipeline/example-pipeline@b123", - Digest: map[string]string{ - "sha256": sha256CheckSum(pipelineSpec), - }, - }, - Source: &pipelinev1beta1.ConfigSource{ - URI: "/apis/tekton.dev/v1beta1/namespaces/pipeline-ns/pipeline/example-pipeline@b123", + RefSource: &pipelinev1.RefSource{ + URI: "/apis/tekton.dev/v1/namespaces/pipeline-ns/pipeline/example-pipeline@b123", Digest: map[string]string{ "sha256": sha256CheckSum(pipelineSpec), }, @@ -313,14 +302,8 @@ func TestResolve(t *testing.T) { Status: duckv1.Status{}, ResolutionRequestStatusFields: v1beta1.ResolutionRequestStatusFields{ Data: base64.StdEncoding.Strict().EncodeToString(pipelineAsYAML), - RefSource: &pipelinev1beta1.RefSource{ - URI: "/apis/tekton.dev/v1beta1/namespaces/pipeline-ns/pipeline/example-pipeline@b123", - Digest: map[string]string{ - "sha256": sha256CheckSum(pipelineSpec), - }, - }, - Source: &pipelinev1beta1.ConfigSource{ - URI: "/apis/tekton.dev/v1beta1/namespaces/pipeline-ns/pipeline/example-pipeline@b123", + RefSource: &pipelinev1.RefSource{ + URI: "/apis/tekton.dev/v1/namespaces/pipeline-ns/pipeline/example-pipeline@b123", Digest: map[string]string{ "sha256": sha256CheckSum(pipelineSpec), }, @@ -335,14 +318,8 @@ func TestResolve(t *testing.T) { Status: duckv1.Status{}, ResolutionRequestStatusFields: v1beta1.ResolutionRequestStatusFields{ Data: base64.StdEncoding.Strict().EncodeToString(taskAsYAML), - RefSource: &pipelinev1beta1.RefSource{ - URI: "/apis/tekton.dev/v1beta1/namespaces/task-ns/task/example-task@a123", - Digest: map[string]string{ - "sha256": sha256CheckSum(taskSpec), - }, - }, - Source: &pipelinev1beta1.ConfigSource{ - URI: "/apis/tekton.dev/v1beta1/namespaces/task-ns/task/example-task@a123", + RefSource: &pipelinev1.RefSource{ + URI: "/apis/tekton.dev/v1/namespaces/task-ns/task/example-task@a123", Digest: map[string]string{ "sha256": sha256CheckSum(taskSpec), }, @@ -418,9 +395,9 @@ func TestResolve(t *testing.T) { "enable-cluster-resolver": "true", }, }}, - Pipelines: []*pipelinev1beta1.Pipeline{examplePipeline}, + Pipelines: []*pipelinev1.Pipeline{examplePipeline}, ResolutionRequests: []*v1beta1.ResolutionRequest{request}, - Tasks: []*pipelinev1beta1.Task{exampleTask}, + Tasks: []*pipelinev1.Task{exampleTask}, } resolver := &cluster.Resolver{} @@ -430,7 +407,7 @@ func TestResolve(t *testing.T) { expectedStatus = tc.expectedStatus.DeepCopy() if tc.expectedErr == nil { - reqParams := make(map[string]pipelinev1beta1.ParamValue) + reqParams := make(map[string]pipelinev1.ParamValue) for _, p := range request.Spec.Params { reqParams[p.Name] = p.Value } @@ -446,6 +423,7 @@ func TestResolve(t *testing.T) { } else { expectedStatus.Status.Conditions[0].Message = tc.expectedErr.Error() } + expectedStatus.Source = expectedStatus.RefSource } frtesting.RunResolverReconcileTest(ctx, t, d, resolver, request, expectedStatus, tc.expectedErr) @@ -468,22 +446,22 @@ func createRequest(kind, name, namespace string) *v1beta1.ResolutionRequest { }, }, Spec: v1beta1.ResolutionRequestSpec{ - Params: []pipelinev1beta1.Param{{ + Params: []pipelinev1.Param{{ Name: cluster.NameParam, - Value: *pipelinev1beta1.NewStructuredValues(name), + Value: *pipelinev1.NewStructuredValues(name), }}, }, } if kind != "" { - rr.Spec.Params = append(rr.Spec.Params, pipelinev1beta1.Param{ + rr.Spec.Params = append(rr.Spec.Params, pipelinev1.Param{ Name: cluster.KindParam, - Value: *pipelinev1beta1.NewStructuredValues(kind), + Value: *pipelinev1.NewStructuredValues(kind), }) } if namespace != "" { - rr.Spec.Params = append(rr.Spec.Params, pipelinev1beta1.Param{ + rr.Spec.Params = append(rr.Spec.Params, pipelinev1.Param{ Name: cluster.NamespaceParam, - Value: *pipelinev1beta1.NewStructuredValues(namespace), + Value: *pipelinev1.NewStructuredValues(namespace), }) } diff --git a/pkg/resolution/resolver/framework/fakeresolver.go b/pkg/resolution/resolver/framework/fakeresolver.go index f8e6039f22e..0943199601b 100644 --- a/pkg/resolution/resolver/framework/fakeresolver.go +++ b/pkg/resolution/resolver/framework/fakeresolver.go @@ -23,7 +23,7 @@ import ( "strings" "time" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" resolutioncommon "github.com/tektoncd/pipeline/pkg/resolution/common" ) @@ -50,7 +50,7 @@ var _ Resolver = &FakeResolver{} type FakeResolvedResource struct { Content string AnnotationMap map[string]string - ContentSource *pipelinev1beta1.RefSource + ContentSource *pipelinev1.RefSource ErrorWith string WaitFor time.Duration } @@ -67,7 +67,7 @@ func (f *FakeResolvedResource) Annotations() map[string]string { // RefSource is the source reference of the remote data that records where the remote // file came from including the url, digest and the entrypoint. -func (f *FakeResolvedResource) RefSource() *pipelinev1beta1.RefSource { +func (f *FakeResolvedResource) RefSource() *pipelinev1.RefSource { return f.ContentSource } @@ -102,8 +102,8 @@ func (r *FakeResolver) GetSelector(_ context.Context) map[string]string { // ValidateParams returns an error if the given parameter map is not // valid for a resource request targeting the fake resolver. -func (r *FakeResolver) ValidateParams(_ context.Context, params []pipelinev1beta1.Param) error { - paramsMap := make(map[string]pipelinev1beta1.ParamValue) +func (r *FakeResolver) ValidateParams(_ context.Context, params []pipelinev1.Param) error { + paramsMap := make(map[string]pipelinev1.ParamValue) for _, p := range params { paramsMap[p.Name] = p.Value } @@ -131,8 +131,8 @@ func (r *FakeResolver) ValidateParams(_ context.Context, params []pipelinev1beta // Resolve performs the work of fetching a file from the fake resolver given a map of // parameters. -func (r *FakeResolver) Resolve(_ context.Context, params []pipelinev1beta1.Param) (ResolvedResource, error) { - paramsMap := make(map[string]pipelinev1beta1.ParamValue) +func (r *FakeResolver) Resolve(_ context.Context, params []pipelinev1.Param) (ResolvedResource, error) { + paramsMap := make(map[string]pipelinev1.ParamValue) for _, p := range params { paramsMap[p.Name] = p.Value } diff --git a/pkg/resolution/resolver/framework/interface.go b/pkg/resolution/resolver/framework/interface.go index 7a5faa8e7dd..0a0118c28da 100644 --- a/pkg/resolution/resolver/framework/interface.go +++ b/pkg/resolution/resolver/framework/interface.go @@ -20,7 +20,7 @@ import ( "context" "time" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" ) // Resolver is the interface to implement for type-specific resource @@ -41,7 +41,7 @@ type Resolver interface { // ValidateParams is given the parameters from a resource // request and should return an error if any are missing or invalid. - ValidateParams(context.Context, []pipelinev1beta1.Param) error + ValidateParams(context.Context, []pipelinev1.Param) error // Resolve receives the parameters passed via a resource request // and returns the resolved data along with any annotations @@ -49,7 +49,7 @@ type Resolver interface { // should be returned instead. If a resolution.Error // is returned then its Reason and Message are used as part of the // response to the request. - Resolve(context.Context, []pipelinev1beta1.Param) (ResolvedResource, error) + Resolve(context.Context, []pipelinev1.Param) (ResolvedResource, error) } // ConfigWatcher is the interface to implement if your resolver accepts @@ -96,5 +96,5 @@ type TimedResolution interface { type ResolvedResource interface { Data() []byte Annotations() map[string]string - RefSource() *pipelinev1beta1.RefSource + RefSource() *pipelinev1.RefSource } diff --git a/pkg/resolution/resolver/framework/reconciler.go b/pkg/resolution/resolver/framework/reconciler.go index de9bedcf49a..b981ea6e02a 100644 --- a/pkg/resolution/resolver/framework/reconciler.go +++ b/pkg/resolution/resolver/framework/reconciler.go @@ -24,6 +24,7 @@ import ( "fmt" "time" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" rrclient "github.com/tektoncd/pipeline/pkg/client/resolution/clientset/versioned" @@ -197,7 +198,7 @@ type statusDataPatch struct { Annotations map[string]string `json:"annotations"` Data string `json:"data"` Source *pipelinev1beta1.ConfigSource `json:"source"` - RefSource *pipelinev1beta1.RefSource `json:"refSource"` + RefSource *pipelinev1.RefSource `json:"refSource"` } func (r *Reconciler) writeResolvedData(ctx context.Context, rr *v1beta1.ResolutionRequest, resource ResolvedResource) error { diff --git a/pkg/resolution/resolver/framework/reconciler_test.go b/pkg/resolution/resolver/framework/reconciler_test.go index a871c232b0e..53b3bfb7a04 100644 --- a/pkg/resolution/resolver/framework/reconciler_test.go +++ b/pkg/resolution/resolver/framework/reconciler_test.go @@ -26,7 +26,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" resolutioncommon "github.com/tektoncd/pipeline/pkg/resolution/common" @@ -79,9 +79,9 @@ func TestReconcile(t *testing.T) { }, }, Spec: v1beta1.ResolutionRequestSpec{ - Params: []pipelinev1beta1.Param{{ + Params: []pipelinev1.Param{{ Name: framework.FakeParamName, - Value: *pipelinev1beta1.NewStructuredValues("bar"), + Value: *pipelinev1.NewStructuredValues("bar"), }}, }, Status: v1beta1.ResolutionRequestStatus{}, @@ -103,9 +103,9 @@ func TestReconcile(t *testing.T) { }, }, Spec: v1beta1.ResolutionRequestSpec{ - Params: []pipelinev1beta1.Param{{ + Params: []pipelinev1.Param{{ Name: framework.FakeParamName, - Value: *pipelinev1beta1.NewStructuredValues("bar"), + Value: *pipelinev1.NewStructuredValues("bar"), }}, }, Status: v1beta1.ResolutionRequestStatus{}, @@ -114,7 +114,7 @@ func TestReconcile(t *testing.T) { "bar": { Content: "some content", AnnotationMap: map[string]string{"foo": "bar"}, - ContentSource: &pipelinev1beta1.RefSource{ + ContentSource: &pipelinev1.RefSource{ URI: "https://abc.com", Digest: map[string]string{ "sha1": "xyz", @@ -131,14 +131,14 @@ func TestReconcile(t *testing.T) { }, ResolutionRequestStatusFields: v1beta1.ResolutionRequestStatusFields{ Data: base64.StdEncoding.Strict().EncodeToString([]byte("some content")), - RefSource: &pipelinev1beta1.RefSource{ + RefSource: &pipelinev1.RefSource{ URI: "https://abc.com", Digest: map[string]string{ "sha1": "xyz", }, EntryPoint: "foo/bar", }, - Source: &pipelinev1beta1.ConfigSource{ + Source: &pipelinev1.RefSource{ URI: "https://abc.com", Digest: map[string]string{ "sha1": "xyz", @@ -163,9 +163,9 @@ func TestReconcile(t *testing.T) { }, }, Spec: v1beta1.ResolutionRequestSpec{ - Params: []pipelinev1beta1.Param{{ + Params: []pipelinev1.Param{{ Name: framework.FakeParamName, - Value: *pipelinev1beta1.NewStructuredValues("bar"), + Value: *pipelinev1.NewStructuredValues("bar"), }}, }, Status: v1beta1.ResolutionRequestStatus{}, @@ -192,9 +192,9 @@ func TestReconcile(t *testing.T) { }, }, Spec: v1beta1.ResolutionRequestSpec{ - Params: []pipelinev1beta1.Param{{ + Params: []pipelinev1.Param{{ Name: framework.FakeParamName, - Value: *pipelinev1beta1.NewStructuredValues("bar"), + Value: *pipelinev1.NewStructuredValues("bar"), }}, }, Status: v1beta1.ResolutionRequestStatus{}, diff --git a/pkg/resolution/resolver/git/resolver.go b/pkg/resolution/resolver/git/resolver.go index fd90488b916..d32acf76cc5 100644 --- a/pkg/resolution/resolver/git/resolver.go +++ b/pkg/resolution/resolver/git/resolver.go @@ -34,7 +34,7 @@ import ( "github.com/jenkins-x/go-scm/scm" "github.com/jenkins-x/go-scm/scm/factory" resolverconfig "github.com/tektoncd/pipeline/pkg/apis/config/resolver" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" resolutioncommon "github.com/tektoncd/pipeline/pkg/resolution/common" "github.com/tektoncd/pipeline/pkg/resolution/resolver/framework" "go.uber.org/zap" @@ -110,7 +110,7 @@ func (r *Resolver) GetSelector(_ context.Context) map[string]string { // ValidateParams returns an error if the given parameter map is not // valid for a resource request targeting the gitresolver. -func (r *Resolver) ValidateParams(ctx context.Context, params []pipelinev1beta1.Param) error { +func (r *Resolver) ValidateParams(ctx context.Context, params []pipelinev1.Param) error { if r.isDisabled(ctx) { return errors.New(disabledError) } @@ -124,7 +124,7 @@ func (r *Resolver) ValidateParams(ctx context.Context, params []pipelinev1beta1. // Resolve performs the work of fetching a file from git given a map of // parameters. -func (r *Resolver) Resolve(ctx context.Context, origParams []pipelinev1beta1.Param) (framework.ResolvedResource, error) { +func (r *Resolver) Resolve(ctx context.Context, origParams []pipelinev1.Param) (framework.ResolvedResource, error) { if r.isDisabled(ctx) { return nil, errors.New(disabledError) } @@ -337,8 +337,8 @@ func (r *resolvedGitResource) Annotations() map[string]string { // RefSource is the source reference of the remote data that records where the remote // file came from including the url, digest and the entrypoint. -func (r *resolvedGitResource) RefSource() *pipelinev1beta1.RefSource { - return &pipelinev1beta1.RefSource{ +func (r *resolvedGitResource) RefSource() *pipelinev1.RefSource { + return &pipelinev1.RefSource{ URI: spdxGit(r.URL), Digest: map[string]string{ "sha1": r.Revision, @@ -414,7 +414,7 @@ func (r *Resolver) getAPIToken(ctx context.Context) ([]byte, error) { return secretVal, nil } -func populateDefaultParams(ctx context.Context, params []pipelinev1beta1.Param) (map[string]string, error) { +func populateDefaultParams(ctx context.Context, params []pipelinev1.Param) (map[string]string, error) { conf := framework.GetResolverConfigFromContext(ctx) paramsMap := make(map[string]string) diff --git a/pkg/resolution/resolver/git/resolver_test.go b/pkg/resolution/resolver/git/resolver_test.go index e4e895ef7a4..6d24c697e03 100644 --- a/pkg/resolution/resolver/git/resolver_test.go +++ b/pkg/resolution/resolver/git/resolver_test.go @@ -34,7 +34,7 @@ import ( "github.com/jenkins-x/go-scm/scm/driver/fake" "github.com/jenkins-x/go-scm/scm/factory" resolverconfig "github.com/tektoncd/pipeline/pkg/apis/config/resolver" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" resolutioncommon "github.com/tektoncd/pipeline/pkg/resolution/common" @@ -525,14 +525,14 @@ func TestResolve(t *testing.T) { } // status.refSource - expectedStatus.RefSource = &pipelinev1beta1.RefSource{ + expectedStatus.RefSource = &pipelinev1.RefSource{ URI: "git+" + expectedStatus.Annotations[AnnotationKeyURL], Digest: map[string]string{ "sha1": tc.expectedCommitSHA, }, EntryPoint: tc.args.pathInRepo, } - expectedStatus.Source = (*pipelinev1beta1.ConfigSource)(expectedStatus.RefSource) + expectedStatus.Source = expectedStatus.RefSource } else { expectedStatus.Status.Conditions[0].Message = tc.expectedErr.Error() } @@ -706,33 +706,33 @@ func createRequest(args *params) *v1beta1.ResolutionRequest { }, }, Spec: v1beta1.ResolutionRequestSpec{ - Params: []pipelinev1beta1.Param{{ + Params: []pipelinev1.Param{{ Name: pathParam, - Value: *pipelinev1beta1.NewStructuredValues(args.pathInRepo), + Value: *pipelinev1.NewStructuredValues(args.pathInRepo), }}, }, } if args.revision != "" { - rr.Spec.Params = append(rr.Spec.Params, pipelinev1beta1.Param{ + rr.Spec.Params = append(rr.Spec.Params, pipelinev1.Param{ Name: revisionParam, - Value: *pipelinev1beta1.NewStructuredValues(args.revision), + Value: *pipelinev1.NewStructuredValues(args.revision), }) } if args.url != "" { - rr.Spec.Params = append(rr.Spec.Params, pipelinev1beta1.Param{ + rr.Spec.Params = append(rr.Spec.Params, pipelinev1.Param{ Name: urlParam, - Value: *pipelinev1beta1.NewStructuredValues(args.url), + Value: *pipelinev1.NewStructuredValues(args.url), }) } else { - rr.Spec.Params = append(rr.Spec.Params, pipelinev1beta1.Param{ + rr.Spec.Params = append(rr.Spec.Params, pipelinev1.Param{ Name: repoParam, - Value: *pipelinev1beta1.NewStructuredValues(args.repo), + Value: *pipelinev1.NewStructuredValues(args.repo), }) - rr.Spec.Params = append(rr.Spec.Params, pipelinev1beta1.Param{ + rr.Spec.Params = append(rr.Spec.Params, pipelinev1.Param{ Name: orgParam, - Value: *pipelinev1beta1.NewStructuredValues(args.org), + Value: *pipelinev1.NewStructuredValues(args.org), }) } @@ -751,13 +751,13 @@ func createError(msg string) error { } } -func toParams(m map[string]string) []pipelinev1beta1.Param { - var params []pipelinev1beta1.Param +func toParams(m map[string]string) []pipelinev1.Param { + var params []pipelinev1.Param for k, v := range m { - params = append(params, pipelinev1beta1.Param{ + params = append(params, pipelinev1.Param{ Name: k, - Value: *pipelinev1beta1.NewStructuredValues(v), + Value: *pipelinev1.NewStructuredValues(v), }) } diff --git a/pkg/resolution/resolver/hub/resolver.go b/pkg/resolution/resolver/hub/resolver.go index 01f8a5218aa..5e1b0e1394f 100644 --- a/pkg/resolution/resolver/hub/resolver.go +++ b/pkg/resolution/resolver/hub/resolver.go @@ -25,7 +25,7 @@ import ( "strings" resolverconfig "github.com/tektoncd/pipeline/pkg/apis/config/resolver" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/resolution/common" "github.com/tektoncd/pipeline/pkg/resolution/resolver/framework" ) @@ -75,7 +75,7 @@ func (r *Resolver) GetSelector(context.Context) map[string]string { } // ValidateParams ensures parameters from a request are as expected. -func (r *Resolver) ValidateParams(ctx context.Context, params []pipelinev1beta1.Param) error { +func (r *Resolver) ValidateParams(ctx context.Context, params []pipelinev1.Param) error { if r.isDisabled(ctx) { return errors.New(disabledError) } @@ -108,7 +108,7 @@ type artifactHubResponse struct { } // Resolve uses the given params to resolve the requested file or resource. -func (r *Resolver) Resolve(ctx context.Context, params []pipelinev1beta1.Param) (framework.ResolvedResource, error) { +func (r *Resolver) Resolve(ctx context.Context, params []pipelinev1.Param) (framework.ResolvedResource, error) { if r.isDisabled(ctx) { return nil, errors.New(disabledError) } @@ -174,12 +174,12 @@ func (*ResolvedHubResource) Annotations() map[string]string { // RefSource is the source reference of the remote data that records where the remote // file came from including the url, digest and the entrypoint. -func (rr *ResolvedHubResource) RefSource() *pipelinev1beta1.RefSource { +func (rr *ResolvedHubResource) RefSource() *pipelinev1.RefSource { h := sha256.New() h.Write(rr.Content) sha256CheckSum := hex.EncodeToString(h.Sum(nil)) - return &pipelinev1beta1.RefSource{ + return &pipelinev1.RefSource{ URI: rr.URL, Digest: map[string]string{ "sha256": sha256CheckSum, @@ -303,7 +303,7 @@ func (r *Resolver) validateParams(ctx context.Context, paramsMap map[string]stri return nil } -func populateDefaultParams(ctx context.Context, params []pipelinev1beta1.Param) (map[string]string, error) { +func populateDefaultParams(ctx context.Context, params []pipelinev1.Param) (map[string]string, error) { conf := framework.GetResolverConfigFromContext(ctx) paramsMap := make(map[string]string) for _, p := range params { diff --git a/pkg/resolution/resolver/hub/resolver_test.go b/pkg/resolution/resolver/hub/resolver_test.go index 67799fe0c39..47411232145 100644 --- a/pkg/resolution/resolver/hub/resolver_test.go +++ b/pkg/resolution/resolver/hub/resolver_test.go @@ -24,7 +24,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" resolutioncommon "github.com/tektoncd/pipeline/pkg/resolution/common" "github.com/tektoncd/pipeline/pkg/resolution/resolver/framework" frtesting "github.com/tektoncd/pipeline/pkg/resolution/resolver/framework/testing" @@ -419,13 +419,13 @@ func resolverDisabledContext() context.Context { return frtesting.ContextWithHubResolverDisabled(context.Background()) } -func toParams(m map[string]string) []pipelinev1beta1.Param { - var params []pipelinev1beta1.Param +func toParams(m map[string]string) []pipelinev1.Param { + var params []pipelinev1.Param for k, v := range m { - params = append(params, pipelinev1beta1.Param{ + params = append(params, pipelinev1.Param{ Name: k, - Value: *pipelinev1beta1.NewStructuredValues(v), + Value: *pipelinev1.NewStructuredValues(v), }) } diff --git a/pkg/resolution/resource/crd_resource.go b/pkg/resolution/resource/crd_resource.go index f50eebe65c4..90fd7653303 100644 --- a/pkg/resolution/resource/crd_resource.go +++ b/pkg/resolution/resource/crd_resource.go @@ -22,7 +22,7 @@ import ( "errors" "fmt" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" rrclient "github.com/tektoncd/pipeline/pkg/client/resolution/clientset/versioned" rrlisters "github.com/tektoncd/pipeline/pkg/client/resolution/listers/resolution/v1beta1" @@ -166,6 +166,6 @@ func (r readOnlyResolutionRequest) Data() ([]byte, error) { return decodedBytes, nil } -func (r readOnlyResolutionRequest) RefSource() *pipelinev1beta1.RefSource { +func (r readOnlyResolutionRequest) RefSource() *pipelinev1.RefSource { return r.req.Status.RefSource } diff --git a/pkg/resolution/resource/name.go b/pkg/resolution/resource/name.go index a48d0a4d5e3..051eabc89d0 100644 --- a/pkg/resolution/resource/name.go +++ b/pkg/resolution/resource/name.go @@ -22,7 +22,7 @@ import ( "hash/fnv" "sort" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" ) // nameHasher returns the hash.Hash to use when generating names. @@ -35,13 +35,13 @@ func nameHasher() hash.Hash { // will have the format {prefix}-{hash} where {prefix} is // given and {hash} is nameHasher(base) + nameHasher(param1) + // nameHasher(param2) + ... -func GenerateDeterministicName(prefix, base string, params v1beta1.Params) (string, error) { +func GenerateDeterministicName(prefix, base string, params v1.Params) (string, error) { hasher := nameHasher() if _, err := hasher.Write([]byte(base)); err != nil { return "", err } - sortedParams := make(v1beta1.Params, len(params)) + sortedParams := make(v1.Params, len(params)) for i := range params { sortedParams[i] = *params[i].DeepCopy() } @@ -53,11 +53,11 @@ func GenerateDeterministicName(prefix, base string, params v1beta1.Params) (stri return "", err } switch p.Value.Type { - case v1beta1.ParamTypeString: + case v1.ParamTypeString: if _, err := hasher.Write([]byte(p.Value.StringVal)); err != nil { return "", err } - case v1beta1.ParamTypeArray, v1beta1.ParamTypeObject: + case v1.ParamTypeArray, v1.ParamTypeObject: asJSON, err := p.Value.MarshalJSON() if err != nil { return "", err diff --git a/pkg/resolution/resource/name_test.go b/pkg/resolution/resource/name_test.go index 07bc26d7cc2..1a90a0aaf18 100644 --- a/pkg/resolution/resource/name_test.go +++ b/pkg/resolution/resource/name_test.go @@ -19,7 +19,7 @@ package resource_test import ( "testing" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/resolution/resource" ) @@ -27,30 +27,30 @@ func TestGenerateDeterministicName(t *testing.T) { type args struct { prefix string base string - params []v1beta1.Param + params []v1.Param } golden := args{ prefix: "prefix", base: "base", - params: []v1beta1.Param{ + params: []v1.Param{ { Name: "string-param", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeString, + Value: v1.ParamValue{ + Type: v1.ParamTypeString, StringVal: "value1", }, }, { Name: "array-param", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeArray, + Value: v1.ParamValue{ + Type: v1.ParamTypeArray, ArrayVal: []string{"value1", "value2"}, }, }, { Name: "object-param", - Value: v1beta1.ParamValue{ - Type: v1beta1.ParamTypeObject, + Value: v1.ParamValue{ + Type: v1.ParamTypeObject, ObjectVal: map[string]string{"key": "value"}, }, }, @@ -86,7 +86,7 @@ func TestGenerateDeterministicName(t *testing.T) { { name: "params with different order should generate same hash", args: args{ - params: []v1beta1.Param{ + params: []v1.Param{ golden.params[2], golden.params[1], golden.params[0], diff --git a/pkg/resolution/resource/request.go b/pkg/resolution/resource/request.go index 9d4025cfeba..9e0f3e194e7 100644 --- a/pkg/resolution/resource/request.go +++ b/pkg/resolution/resource/request.go @@ -16,7 +16,7 @@ limitations under the License. package resource -import "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" +import v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" var _ Request = &BasicRequest{} @@ -24,12 +24,12 @@ var _ Request = &BasicRequest{} type BasicRequest struct { name string namespace string - params v1beta1.Params + params v1.Params } // NewRequest returns an instance of a BasicRequest with the given name, // namespace and params. -func NewRequest(name, namespace string, params v1beta1.Params) Request { +func NewRequest(name, namespace string, params v1.Params) Request { return &BasicRequest{name, namespace, params} } @@ -46,6 +46,6 @@ func (req *BasicRequest) Namespace() string { } // Params are the map of parameters associated with this request -func (req *BasicRequest) Params() v1beta1.Params { +func (req *BasicRequest) Params() v1.Params { return req.params } diff --git a/pkg/resolution/resource/request_test.go b/pkg/resolution/resource/request_test.go index d7605a783a4..cc23506f6e3 100644 --- a/pkg/resolution/resource/request_test.go +++ b/pkg/resolution/resource/request_test.go @@ -20,7 +20,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/resolution/resource" "github.com/tektoncd/pipeline/test/diff" ) @@ -29,15 +29,15 @@ func TestNewRequest(t *testing.T) { type args struct { name string namespace string - params v1beta1.Params + params v1.Params } type want = args golden := args{ name: "test-name", namespace: "test-namespace", - params: v1beta1.Params{ - {Name: "param1", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeString, StringVal: "value1"}}, - {Name: "param2", Value: v1beta1.ParamValue{Type: v1beta1.ParamTypeString, StringVal: "value2"}}, + params: v1.Params{ + {Name: "param1", Value: v1.ParamValue{Type: v1.ParamTypeString, StringVal: "value1"}}, + {Name: "param2", Value: v1.ParamValue{Type: v1.ParamTypeString, StringVal: "value2"}}, }, } tests := []struct { diff --git a/pkg/status/status.go b/pkg/status/status.go index 6b06876522b..1f9c1b1fcbf 100644 --- a/pkg/status/status.go +++ b/pkg/status/status.go @@ -20,6 +20,7 @@ import ( "context" "fmt" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/pkg/client/clientset/versioned" "k8s.io/apimachinery/pkg/api/errors" @@ -28,12 +29,12 @@ import ( // GetTaskRunStatusForPipelineTask takes a child reference and returns the actual TaskRunStatus // for the PipelineTask. It returns an error if the child reference's kind isn't TaskRun. -func GetTaskRunStatusForPipelineTask(ctx context.Context, client versioned.Interface, ns string, childRef v1beta1.ChildStatusReference) (*v1beta1.TaskRunStatus, error) { +func GetTaskRunStatusForPipelineTask(ctx context.Context, client versioned.Interface, ns string, childRef v1.ChildStatusReference) (*v1.TaskRunStatus, error) { if childRef.Kind != "TaskRun" { return nil, fmt.Errorf("could not fetch status for PipelineTask %s: should have kind TaskRun, but is %s", childRef.PipelineTaskName, childRef.Kind) } - tr, err := client.TektonV1beta1().TaskRuns(ns).Get(ctx, childRef.Name, metav1.GetOptions{}) + tr, err := client.TektonV1().TaskRuns(ns).Get(ctx, childRef.Name, metav1.GetOptions{}) if err != nil && !errors.IsNotFound(err) { return nil, err } @@ -46,7 +47,7 @@ func GetTaskRunStatusForPipelineTask(ctx context.Context, client versioned.Inter // GetCustomRunStatusForPipelineTask takes a child reference and returns the actual CustomRunStatus for the // PipelineTask. It returns an error if the child reference's kind isn't CustomRun. -func GetCustomRunStatusForPipelineTask(ctx context.Context, client versioned.Interface, ns string, childRef v1beta1.ChildStatusReference) (*v1beta1.CustomRunStatus, error) { +func GetCustomRunStatusForPipelineTask(ctx context.Context, client versioned.Interface, ns string, childRef v1.ChildStatusReference) (*v1beta1.CustomRunStatus, error) { var runStatus *v1beta1.CustomRunStatus switch childRef.Kind { @@ -68,8 +69,8 @@ func GetCustomRunStatusForPipelineTask(ctx context.Context, client versioned.Int // GetPipelineTaskStatuses returns populated TaskRun and Run status maps for a PipelineRun from its ChildReferences. // If the PipelineRun has no ChildReferences, nothing will be populated. -func GetPipelineTaskStatuses(ctx context.Context, client versioned.Interface, ns string, pr *v1beta1.PipelineRun) (map[string]*v1beta1.PipelineRunTaskRunStatus, - map[string]*v1beta1.PipelineRunRunStatus, error) { +func GetPipelineTaskStatuses(ctx context.Context, client versioned.Interface, ns string, pr *v1.PipelineRun) (map[string]*v1.PipelineRunTaskRunStatus, + map[string]*v1.PipelineRunRunStatus, error) { // If the PipelineRun is nil, just return if pr == nil { return nil, nil, nil @@ -80,18 +81,18 @@ func GetPipelineTaskStatuses(ctx context.Context, client versioned.Interface, ns return nil, nil, nil } - trStatuses := make(map[string]*v1beta1.PipelineRunTaskRunStatus) - runStatuses := make(map[string]*v1beta1.PipelineRunRunStatus) + trStatuses := make(map[string]*v1.PipelineRunTaskRunStatus) + runStatuses := make(map[string]*v1.PipelineRunRunStatus) for _, cr := range pr.Status.ChildReferences { switch cr.Kind { case "TaskRun": - tr, err := client.TektonV1beta1().TaskRuns(ns).Get(ctx, cr.Name, metav1.GetOptions{}) + tr, err := client.TektonV1().TaskRuns(ns).Get(ctx, cr.Name, metav1.GetOptions{}) if err != nil && !errors.IsNotFound(err) { return nil, nil, err } - trStatuses[cr.Name] = &v1beta1.PipelineRunTaskRunStatus{ + trStatuses[cr.Name] = &v1.PipelineRunTaskRunStatus{ PipelineTaskName: cr.PipelineTaskName, WhenExpressions: cr.WhenExpressions, } @@ -105,7 +106,7 @@ func GetPipelineTaskStatuses(ctx context.Context, client versioned.Interface, ns return nil, nil, err } - runStatuses[cr.Name] = &v1beta1.PipelineRunRunStatus{ + runStatuses[cr.Name] = &v1.PipelineRunRunStatus{ PipelineTaskName: cr.PipelineTaskName, WhenExpressions: cr.WhenExpressions, } diff --git a/pkg/status/status_test.go b/pkg/status/status_test.go index 67309b6b4a3..a509701f759 100644 --- a/pkg/status/status_test.go +++ b/pkg/status/status_test.go @@ -22,6 +22,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" status "github.com/tektoncd/pipeline/pkg/status" @@ -38,14 +39,14 @@ import ( func TestGetTaskRunStatusForPipelineTask(t *testing.T) { testCases := []struct { name string - taskRun *v1beta1.TaskRun - childRef v1beta1.ChildStatusReference - expectedStatus *v1beta1.TaskRunStatus + taskRun *v1.TaskRun + childRef v1.ChildStatusReference + expectedStatus *v1.TaskRunStatus expectedErr error }{ { name: "wrong kind", - childRef: v1beta1.ChildStatusReference{ + childRef: v1.ChildStatusReference{ TypeMeta: runtime.TypeMeta{ Kind: "something-else", }, @@ -54,7 +55,7 @@ func TestGetTaskRunStatusForPipelineTask(t *testing.T) { expectedErr: errors.New("could not fetch status for PipelineTask some-task: should have kind TaskRun, but is something-else"), }, { name: "taskrun not found", - childRef: v1beta1.ChildStatusReference{ + childRef: v1.ChildStatusReference{ TypeMeta: runtime.TypeMeta{ Kind: "TaskRun", }, @@ -63,7 +64,7 @@ func TestGetTaskRunStatusForPipelineTask(t *testing.T) { }, }, { name: "success", - taskRun: parse.MustParseV1beta1TaskRun(t, ` + taskRun: parse.MustParseV1TaskRun(t, ` metadata: name: some-task-run spec: {} @@ -73,19 +74,19 @@ status: type: Succeeded podName: my-pod-name `), - childRef: v1beta1.ChildStatusReference{ + childRef: v1.ChildStatusReference{ TypeMeta: runtime.TypeMeta{Kind: "TaskRun"}, Name: "some-task-run", PipelineTaskName: "some-task", }, - expectedStatus: &v1beta1.TaskRunStatus{ + expectedStatus: &v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, }}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + TaskRunStatusFields: v1.TaskRunStatusFields{ PodName: "my-pod-name", }, }, @@ -97,7 +98,7 @@ status: ctx, _ := ttesting.SetupFakeContext(t) d := test.Data{} if tc.taskRun != nil { - d.TaskRuns = []*v1beta1.TaskRun{tc.taskRun} + d.TaskRuns = []*v1.TaskRun{tc.taskRun} } clients, _ := test.SeedTestData(t, ctx, d) @@ -126,13 +127,13 @@ func TestGetRunStatusForPipelineTask(t *testing.T) { testCases := []struct { name string run *v1beta1.CustomRun - childRef v1beta1.ChildStatusReference + childRef v1.ChildStatusReference expectedStatus *v1beta1.CustomRunStatus expectedErr error }{ { name: "wrong kind", - childRef: v1beta1.ChildStatusReference{ + childRef: v1.ChildStatusReference{ TypeMeta: runtime.TypeMeta{ Kind: "something-else", }, @@ -141,7 +142,7 @@ func TestGetRunStatusForPipelineTask(t *testing.T) { expectedErr: errors.New("could not fetch status for PipelineTask some-task: should have kind CustomRun, but is something-else"), }, { name: "run not found", - childRef: v1beta1.ChildStatusReference{ + childRef: v1.ChildStatusReference{ TypeMeta: runtime.TypeMeta{ Kind: "CustomRun", }, @@ -159,7 +160,7 @@ status: - status: "False" type: Succeeded `), - childRef: v1beta1.ChildStatusReference{ + childRef: v1.ChildStatusReference{ TypeMeta: runtime.TypeMeta{Kind: "CustomRun"}, Name: "some-run", PipelineTaskName: "some-task", @@ -206,7 +207,7 @@ status: } func TestGetPipelineTaskStatuses(t *testing.T) { - tr1 := parse.MustParseV1beta1TaskRun(t, ` + tr1 := parse.MustParseV1TaskRun(t, ` metadata: name: pr-task-1 spec: {} @@ -214,7 +215,7 @@ status: conditions: - status: "True" type: Succeeded - taskResults: + results: - name: aResult value: aResultValue `) @@ -236,11 +237,11 @@ status: testCases := []struct { name string - originalPR *v1beta1.PipelineRun - taskRuns []*v1beta1.TaskRun + originalPR *v1.PipelineRun + taskRuns []*v1.TaskRun runs []*v1beta1.CustomRun - expectedTRStatuses map[string]*v1beta1.PipelineRunTaskRunStatus - expectedRunStatuses map[string]*v1beta1.PipelineRunRunStatus + expectedTRStatuses map[string]*v1.PipelineRunTaskRunStatus + expectedRunStatuses map[string]*v1.PipelineRunRunStatus expectedErr error }{ { @@ -252,7 +253,7 @@ status: }, { name: "taskruns and customruns", - originalPR: parse.MustParseV1beta1PipelineRun(t, ` + originalPR: parse.MustParseV1PipelineRun(t, ` metadata: name: pr spec: {} @@ -272,7 +273,7 @@ status: status: Unknown type: Succeeded `), - taskRuns: []*v1beta1.TaskRun{tr1}, + taskRuns: []*v1.TaskRun{tr1}, runs: []*v1beta1.CustomRun{customRun1}, expectedTRStatuses: mustParseTaskRunStatusMap(t, ` pr-task-1: @@ -281,7 +282,7 @@ pr-task-1: conditions: - status: "True" type: Succeeded - taskResults: + results: - name: aResult value: aResultValue `), @@ -301,7 +302,7 @@ pr-run-1: expectedErr: nil, }, { name: "missing run", - originalPR: parse.MustParseV1beta1PipelineRun(t, ` + originalPR: parse.MustParseV1PipelineRun(t, ` metadata: name: pr spec: {} @@ -321,7 +322,7 @@ status: status: Unknown type: Succeeded `), - taskRuns: []*v1beta1.TaskRun{tr1}, + taskRuns: []*v1.TaskRun{tr1}, expectedTRStatuses: mustParseTaskRunStatusMap(t, ` pr-task-1: pipelineTaskName: task-1 @@ -329,7 +330,7 @@ pr-task-1: conditions: - status: "True" type: Succeeded - taskResults: + results: - name: aResult value: aResultValue `), @@ -348,7 +349,7 @@ pr-run-1: d := test.Data{} if tc.originalPR != nil { - d.PipelineRuns = []*v1beta1.PipelineRun{tc.originalPR} + d.PipelineRuns = []*v1.PipelineRun{tc.originalPR} } d.TaskRuns = append(d.TaskRuns, tc.taskRuns...) d.CustomRuns = append(d.CustomRuns, tc.runs...) @@ -378,18 +379,18 @@ pr-run-1: } } -func mustParseTaskRunStatusMap(t *testing.T, yamlStr string) map[string]*v1beta1.PipelineRunTaskRunStatus { +func mustParseTaskRunStatusMap(t *testing.T, yamlStr string) map[string]*v1.PipelineRunTaskRunStatus { t.Helper() - var output map[string]*v1beta1.PipelineRunTaskRunStatus + var output map[string]*v1.PipelineRunTaskRunStatus if err := yaml.Unmarshal([]byte(yamlStr), &output); err != nil { t.Fatalf("parsing task run status map %s: %v", yamlStr, err) } return output } -func mustParseRunStatusMap(t *testing.T, yamlStr string) map[string]*v1beta1.PipelineRunRunStatus { +func mustParseRunStatusMap(t *testing.T, yamlStr string) map[string]*v1.PipelineRunRunStatus { t.Helper() - var output map[string]*v1beta1.PipelineRunRunStatus + var output map[string]*v1.PipelineRunRunStatus if err := yaml.Unmarshal([]byte(yamlStr), &output); err != nil { t.Fatalf("parsing run status map %s: %v", yamlStr, err) } diff --git a/pkg/taskrunmetrics/fake/fake.go b/pkg/taskrunmetrics/fake/fake.go index 0a0d957ebfb..3ea78f9d0d0 100644 --- a/pkg/taskrunmetrics/fake/fake.go +++ b/pkg/taskrunmetrics/fake/fake.go @@ -19,7 +19,7 @@ package fake import ( "context" - _ "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/taskrun/fake" // Make sure the fake taskrun informer is setup + _ "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/taskrun/fake" // Make sure the fake taskrun informer is setup "github.com/tektoncd/pipeline/pkg/taskrunmetrics" "k8s.io/client-go/rest" "knative.dev/pkg/injection" diff --git a/pkg/taskrunmetrics/injection.go b/pkg/taskrunmetrics/injection.go index 331b61e1068..d19938b54e1 100644 --- a/pkg/taskrunmetrics/injection.go +++ b/pkg/taskrunmetrics/injection.go @@ -19,8 +19,8 @@ package taskrunmetrics import ( "context" - taskruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/taskrun" - listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1beta1" + taskruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/taskrun" + listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1" "k8s.io/client-go/rest" "knative.dev/pkg/controller" "knative.dev/pkg/injection" diff --git a/pkg/taskrunmetrics/metrics.go b/pkg/taskrunmetrics/metrics.go index 06b0450969d..0d1a4457d14 100644 --- a/pkg/taskrunmetrics/metrics.go +++ b/pkg/taskrunmetrics/metrics.go @@ -25,8 +25,8 @@ import ( "github.com/pkg/errors" "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" - listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" + listers "github.com/tektoncd/pipeline/pkg/client/listers/pipeline/v1" "github.com/tektoncd/pipeline/pkg/pod" "go.opencensus.io/stats" "go.opencensus.io/stats/view" @@ -293,7 +293,7 @@ func nilInsertTag(task, taskrun string) []tag.Mutator { // DurationAndCount logs the duration of TaskRun execution and // count for number of TaskRuns succeed or failed // returns an error if its failed to log the metrics -func (r *Recorder) DurationAndCount(ctx context.Context, tr *v1beta1.TaskRun, beforeCondition *apis.Condition) error { +func (r *Recorder) DurationAndCount(ctx context.Context, tr *v1.TaskRun, beforeCondition *apis.Condition) error { if !r.initialized { return fmt.Errorf("ignoring the metrics recording for %s , failed to initialize the metrics recorder", tr.Name) } @@ -410,7 +410,7 @@ func (r *Recorder) ReportRunningTaskRuns(ctx context.Context, lister listers.Tas // RecordPodLatency logs the duration required to schedule the pod for TaskRun // returns an error if its failed to log the metrics -func (r *Recorder) RecordPodLatency(ctx context.Context, pod *corev1.Pod, tr *v1beta1.TaskRun) error { +func (r *Recorder) RecordPodLatency(ctx context.Context, pod *corev1.Pod, tr *v1.TaskRun) error { r.mutex.Lock() defer r.mutex.Unlock() @@ -445,7 +445,7 @@ func (r *Recorder) RecordPodLatency(ctx context.Context, pod *corev1.Pod, tr *v1 // IsPartOfPipeline return true if TaskRun is a part of a Pipeline. // It also return the name of Pipeline and PipelineRun -func IsPartOfPipeline(tr *v1beta1.TaskRun) (bool, string, string) { +func IsPartOfPipeline(tr *v1.TaskRun) (bool, string, string) { pipelineLabel, hasPipelineLabel := tr.Labels[pipeline.PipelineLabelKey] pipelineRunLabel, hasPipelineRunLabel := tr.Labels[pipeline.PipelineRunLabelKey] diff --git a/pkg/taskrunmetrics/metrics_test.go b/pkg/taskrunmetrics/metrics_test.go index 1a892dbb973..0e9e927cf2a 100644 --- a/pkg/taskrunmetrics/metrics_test.go +++ b/pkg/taskrunmetrics/metrics_test.go @@ -25,8 +25,8 @@ import ( "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" - faketaskruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/taskrun/fake" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" + faketaskruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/taskrun/fake" "github.com/tektoncd/pipeline/pkg/names" "github.com/tektoncd/pipeline/pkg/pod" ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" @@ -67,7 +67,7 @@ func TestUninitializedMetrics(t *testing.T) { ctx, cancel := context.WithCancel(context.Background()) defer cancel() - if err := metrics.DurationAndCount(ctx, &v1beta1.TaskRun{}, beforeCondition); err == nil { + if err := metrics.DurationAndCount(ctx, &v1.TaskRun{}, beforeCondition); err == nil { t.Error("DurationCount recording expected to return error but got nil") } if err := metrics.RunningTaskRuns(ctx, nil); err == nil { @@ -128,7 +128,7 @@ func TestMetricsOnStore(t *testing.T) { func TestRecordTaskRunDurationCount(t *testing.T) { for _, c := range []struct { name string - taskRun *v1beta1.TaskRun + taskRun *v1.TaskRun metricName string // "taskrun_duration_seconds" or "pipelinerun_taskrun_duration_seconds" expectedDurationTags map[string]string expectedCountTags map[string]string @@ -137,19 +137,19 @@ func TestRecordTaskRunDurationCount(t *testing.T) { beforeCondition *apis.Condition }{{ name: "for succeeded taskrun", - taskRun: &v1beta1.TaskRun{ + taskRun: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Name: "taskrun-1", Namespace: "ns"}, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{Name: "task-1"}, + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{Name: "task-1"}, }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, }}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + TaskRunStatusFields: v1.TaskRunStatusFields{ StartTime: &startTime, CompletionTime: &completionTime, }, @@ -170,19 +170,19 @@ func TestRecordTaskRunDurationCount(t *testing.T) { beforeCondition: nil, }, { name: "for succeeded taskrun with before condition", - taskRun: &v1beta1.TaskRun{ + taskRun: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Name: "taskrun-1", Namespace: "ns"}, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{Name: "task-1"}, + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{Name: "task-1"}, }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, }}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + TaskRunStatusFields: v1.TaskRunStatusFields{ StartTime: &startTime, CompletionTime: &completionTime, }, @@ -206,19 +206,19 @@ func TestRecordTaskRunDurationCount(t *testing.T) { }, }, { name: "for succeeded taskrun recount", - taskRun: &v1beta1.TaskRun{ + taskRun: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Name: "taskrun-1", Namespace: "ns"}, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{Name: "task-1"}, + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{Name: "task-1"}, }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, }}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + TaskRunStatusFields: v1.TaskRunStatusFields{ StartTime: &startTime, CompletionTime: &completionTime, }, @@ -235,19 +235,19 @@ func TestRecordTaskRunDurationCount(t *testing.T) { }, }, { name: "for failed taskrun", - taskRun: &v1beta1.TaskRun{ + taskRun: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Name: "taskrun-1", Namespace: "ns"}, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{Name: "task-1"}, + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{Name: "task-1"}, }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, }}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + TaskRunStatusFields: v1.TaskRunStatusFields{ StartTime: &startTime, CompletionTime: &completionTime, }, @@ -268,7 +268,7 @@ func TestRecordTaskRunDurationCount(t *testing.T) { beforeCondition: nil, }, { name: "for succeeded taskrun in pipelinerun", - taskRun: &v1beta1.TaskRun{ + taskRun: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "taskrun-1", Namespace: "ns", Labels: map[string]string{ @@ -276,17 +276,17 @@ func TestRecordTaskRunDurationCount(t *testing.T) { pipeline.PipelineRunLabelKey: "pipelinerun-1", }, }, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{Name: "task-1"}, + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{Name: "task-1"}, }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionTrue, }}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + TaskRunStatusFields: v1.TaskRunStatusFields{ StartTime: &startTime, CompletionTime: &completionTime, }, @@ -309,7 +309,7 @@ func TestRecordTaskRunDurationCount(t *testing.T) { beforeCondition: nil, }, { name: "for failed taskrun in pipelinerun", - taskRun: &v1beta1.TaskRun{ + taskRun: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Name: "taskrun-1", Namespace: "ns", Labels: map[string]string{ @@ -317,17 +317,17 @@ func TestRecordTaskRunDurationCount(t *testing.T) { pipeline.PipelineRunLabelKey: "pipelinerun-1", }, }, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{Name: "task-1"}, + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{Name: "task-1"}, }, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, Status: corev1.ConditionFalse, }}, }, - TaskRunStatusFields: v1beta1.TaskRunStatusFields{ + TaskRunStatusFields: v1.TaskRunStatusFields{ StartTime: &startTime, CompletionTime: &completionTime, }, @@ -377,10 +377,10 @@ func TestRecordTaskRunDurationCount(t *testing.T) { func TestRecordRunningTaskRunsCount(t *testing.T) { unregisterMetrics() - newTaskRun := func(status corev1.ConditionStatus) *v1beta1.TaskRun { - return &v1beta1.TaskRun{ + newTaskRun := func(status corev1.ConditionStatus) *v1.TaskRun { + return &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Name: names.SimpleNameGenerator.RestrictLengthWithRandomSuffix("taskrun-")}, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, @@ -394,7 +394,7 @@ func TestRecordRunningTaskRunsCount(t *testing.T) { ctx, _ := ttesting.SetupFakeContext(t) informer := faketaskruninformer.Get(ctx) // Add N randomly-named TaskRuns with differently-succeeded statuses. - for _, tr := range []*v1beta1.TaskRun{ + for _, tr := range []*v1.TaskRun{ newTaskRun(corev1.ConditionTrue), newTaskRun(corev1.ConditionUnknown), newTaskRun(corev1.ConditionFalse), @@ -463,9 +463,9 @@ func TestRecordRunningTaskRunsThrottledCounts(t *testing.T) { }, } { unregisterMetrics() - tr := &v1beta1.TaskRun{ + tr := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Name: names.SimpleNameGenerator.RestrictLengthWithRandomSuffix("taskrun-")}, - Status: v1beta1.TaskRunStatus{ + Status: v1.TaskRunStatus{ Status: duckv1.Status{ Conditions: duckv1.Conditions{{ Type: apis.ConditionSucceeded, @@ -498,10 +498,10 @@ func TestRecordRunningTaskRunsThrottledCounts(t *testing.T) { func TestRecordPodLatency(t *testing.T) { creationTime := metav1.Now() - taskRun := &v1beta1.TaskRun{ + taskRun := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Name: "test-taskrun", Namespace: "foo"}, - Spec: v1beta1.TaskRunSpec{ - TaskRef: &v1beta1.TaskRef{Name: "task-1"}, + Spec: v1.TaskRunSpec{ + TaskRef: &v1.TaskRef{Name: "task-1"}, }, } for _, td := range []struct { @@ -568,13 +568,13 @@ func TestRecordPodLatency(t *testing.T) { func TestTaskRunIsOfPipelinerun(t *testing.T) { tests := []struct { name string - tr *v1beta1.TaskRun + tr *v1.TaskRun expectedValue bool expetectedPipeline string expetectedPipelineRun string }{{ name: "yes", - tr: &v1beta1.TaskRun{ + tr: &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{ Labels: map[string]string{ pipeline.PipelineLabelKey: "pipeline", @@ -587,7 +587,7 @@ func TestTaskRunIsOfPipelinerun(t *testing.T) { expetectedPipelineRun: "pipelinerun", }, { name: "no", - tr: &v1beta1.TaskRun{}, + tr: &v1.TaskRun{}, expectedValue: false, }} diff --git a/pkg/trustedresources/verify.go b/pkg/trustedresources/verify.go index 788e8ad595d..26ae838aa93 100644 --- a/pkg/trustedresources/verify.go +++ b/pkg/trustedresources/verify.go @@ -74,7 +74,7 @@ type VerificationResult struct { // 3) Return VerificationResult with VerificationWarn type, when no matching policies and feature flag "no-match-policy" is "warn", or only Warn mode verification policies fail. Err field is filled with the warning; // 4) Return VerificationResult with VerificationError type when no policies are found and no-match-policy is set to fail, the resource fails to pass matched enforce verification policy, or there are errors during verification. Err is filled with the err. // refSource contains the source information of the resource. -func VerifyResource(ctx context.Context, resource metav1.Object, k8s kubernetes.Interface, refSource *v1beta1.RefSource, verificationpolicies []*v1alpha1.VerificationPolicy) VerificationResult { +func VerifyResource(ctx context.Context, resource metav1.Object, k8s kubernetes.Interface, refSource *v1.RefSource, verificationpolicies []*v1alpha1.VerificationPolicy) VerificationResult { var refSourceURI string if refSource != nil { refSourceURI = refSource.URI @@ -142,12 +142,12 @@ func VerifyResource(ctx context.Context, resource metav1.Object, k8s kubernetes. } // VerifyTask is the deprecated, this is to keep backward compatibility -func VerifyTask(ctx context.Context, taskObj *v1beta1.Task, k8s kubernetes.Interface, refSource *v1beta1.RefSource, verificationpolicies []*v1alpha1.VerificationPolicy) VerificationResult { +func VerifyTask(ctx context.Context, taskObj *v1beta1.Task, k8s kubernetes.Interface, refSource *v1.RefSource, verificationpolicies []*v1alpha1.VerificationPolicy) VerificationResult { return VerifyResource(ctx, taskObj, k8s, refSource, verificationpolicies) } // VerifyPipeline is the deprecated, this is to keep backward compatibility -func VerifyPipeline(ctx context.Context, pipelineObj *v1beta1.Pipeline, k8s kubernetes.Interface, refSource *v1beta1.RefSource, verificationpolicies []*v1alpha1.VerificationPolicy) VerificationResult { +func VerifyPipeline(ctx context.Context, pipelineObj *v1beta1.Pipeline, k8s kubernetes.Interface, refSource *v1.RefSource, verificationpolicies []*v1alpha1.VerificationPolicy) VerificationResult { return VerifyResource(ctx, pipelineObj, k8s, refSource, verificationpolicies) } diff --git a/pkg/trustedresources/verify_test.go b/pkg/trustedresources/verify_test.go index 1a5baf76d0d..73117838773 100644 --- a/pkg/trustedresources/verify_test.go +++ b/pkg/trustedresources/verify_test.go @@ -255,7 +255,7 @@ func TestVerifyResource_Task_Success(t *testing.T) { tcs := []struct { name string task *v1beta1.Task - source *v1beta1.RefSource + source *v1.RefSource signer signature.SignerVerifier verificationNoMatchPolicy string verificationPolicies []*v1alpha1.VerificationPolicy @@ -263,54 +263,54 @@ func TestVerifyResource_Task_Success(t *testing.T) { }{{ name: "signed git source task passes verification", task: signedTask, - source: &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, + source: &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, verificationNoMatchPolicy: config.FailNoMatchPolicy, verificationPolicies: vps, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationPass}, }, { name: "signed bundle source task passes verification", task: signedTask, - source: &v1beta1.RefSource{URI: "gcr.io/tekton-releases/catalog/upstream/git-clone"}, + source: &v1.RefSource{URI: "gcr.io/tekton-releases/catalog/upstream/git-clone"}, verificationNoMatchPolicy: config.FailNoMatchPolicy, verificationPolicies: vps, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationPass}, }, { name: "signed task with sha384 key", task: signedTask384, - source: &v1beta1.RefSource{URI: "gcr.io/tekton-releases/catalog/upstream/sha384"}, + source: &v1.RefSource{URI: "gcr.io/tekton-releases/catalog/upstream/sha384"}, verificationNoMatchPolicy: config.FailNoMatchPolicy, verificationPolicies: []*v1alpha1.VerificationPolicy{sha384Vp}, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationPass}, }, { name: "ignore no match policy skips verification when no matching policies", task: unsignedTask, - source: &v1beta1.RefSource{URI: mismatchedSource}, + source: &v1.RefSource{URI: mismatchedSource}, verificationNoMatchPolicy: config.IgnoreNoMatchPolicy, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationSkip}, }, { name: "warn no match policy skips verification when no matching policies", task: unsignedTask, - source: &v1beta1.RefSource{URI: mismatchedSource}, + source: &v1.RefSource{URI: mismatchedSource}, verificationNoMatchPolicy: config.WarnNoMatchPolicy, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationWarn, Err: ErrNoMatchedPolicies}, }, { name: "unsigned task matches warn policy doesn't fail verification", task: unsignedTask, - source: &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, + source: &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, verificationNoMatchPolicy: config.FailNoMatchPolicy, verificationPolicies: []*v1alpha1.VerificationPolicy{warnPolicy}, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationWarn, Err: ErrResourceVerificationFailed}, }, { name: "modified task matches warn policy doesn't fail verification", task: modifiedTask, - source: &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, + source: &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, verificationNoMatchPolicy: config.FailNoMatchPolicy, verificationPolicies: []*v1alpha1.VerificationPolicy{warnPolicy}, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationWarn, Err: ErrResourceVerificationFailed}, }, { name: "modified task matches warn policy with empty key doesn't fail verification", task: modifiedTask, - source: &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, + source: &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, verificationNoMatchPolicy: config.FailNoMatchPolicy, verificationPolicies: []*v1alpha1.VerificationPolicy{warnNoKeyPolicy}, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationWarn, Err: verifier.ErrEmptyPublicKeys}, @@ -347,37 +347,37 @@ func TestVerifyResource_Task_Error(t *testing.T) { tcs := []struct { name string task *v1beta1.Task - source *v1beta1.RefSource + source *v1.RefSource verificationPolicy []*v1alpha1.VerificationPolicy expectedError error }{{ name: "unsigned Task fails verification", task: unsignedTask, - source: &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, + source: &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, verificationPolicy: vps, expectedError: ErrResourceVerificationFailed, }, { name: "modified Task fails verification", task: tamperedTask, - source: &v1beta1.RefSource{URI: matchingSource}, + source: &v1.RefSource{URI: matchingSource}, verificationPolicy: vps, expectedError: ErrResourceVerificationFailed, }, { name: "task not matching pattern fails verification", task: signedTask, - source: &v1beta1.RefSource{URI: mismatchedSource}, + source: &v1.RefSource{URI: mismatchedSource}, verificationPolicy: vps, expectedError: ErrNoMatchedPolicies, }, { name: "verification fails with empty policy", task: tamperedTask, - source: &v1beta1.RefSource{URI: matchingSource}, + source: &v1.RefSource{URI: matchingSource}, verificationPolicy: []*v1alpha1.VerificationPolicy{}, expectedError: ErrNoMatchedPolicies, }, { name: "Verification fails with regex error", task: signedTask, - source: &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, + source: &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, verificationPolicy: []*v1alpha1.VerificationPolicy{ { ObjectMeta: metav1.ObjectMeta{ @@ -394,7 +394,7 @@ func TestVerifyResource_Task_Error(t *testing.T) { }, { name: "Verification fails with error from policy", task: signedTask, - source: &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, + source: &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, verificationPolicy: []*v1alpha1.VerificationPolicy{ { ObjectMeta: metav1.ObjectMeta{ @@ -439,31 +439,31 @@ func TestVerifyResource_Pipeline_Success(t *testing.T) { tcs := []struct { name string pipeline *v1beta1.Pipeline - source *v1beta1.RefSource + source *v1.RefSource verificationNoMatchPolicy string expectedVerificationResult VerificationResult }{{ name: "signed git source pipeline passes verification", pipeline: signedPipeline, - source: &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, + source: &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, verificationNoMatchPolicy: config.FailNoMatchPolicy, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationPass}, }, { name: "signed bundle source pipeline passes verification", pipeline: signedPipeline, - source: &v1beta1.RefSource{URI: "gcr.io/tekton-releases/catalog/upstream/git-clone"}, + source: &v1.RefSource{URI: "gcr.io/tekton-releases/catalog/upstream/git-clone"}, verificationNoMatchPolicy: config.FailNoMatchPolicy, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationPass}, }, { name: "ignore no match policy skips verification when no matching policies", pipeline: unsignedPipeline, - source: &v1beta1.RefSource{URI: mismatchedSource}, + source: &v1.RefSource{URI: mismatchedSource}, verificationNoMatchPolicy: config.IgnoreNoMatchPolicy, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationSkip}, }, { name: "warn no match policy skips verification when no matching policies", pipeline: unsignedPipeline, - source: &v1beta1.RefSource{URI: mismatchedSource}, + source: &v1.RefSource{URI: mismatchedSource}, verificationNoMatchPolicy: config.WarnNoMatchPolicy, expectedVerificationResult: VerificationResult{VerificationResultType: VerificationWarn, Err: ErrNoMatchedPolicies}, }} @@ -497,25 +497,25 @@ func TestVerifyResource_Pipeline_Error(t *testing.T) { tcs := []struct { name string pipeline *v1beta1.Pipeline - source *v1beta1.RefSource + source *v1.RefSource verificationPolicy []*v1alpha1.VerificationPolicy expectedError error }{{ name: "Tampered Task Fails Verification with tampered content", pipeline: tamperedPipeline, - source: &v1beta1.RefSource{URI: matchingSource}, + source: &v1.RefSource{URI: matchingSource}, verificationPolicy: vps, expectedError: ErrResourceVerificationFailed, }, { name: "Task Not Matching Pattern Fails Verification", pipeline: signedPipeline, - source: &v1beta1.RefSource{URI: mismatchedSource}, + source: &v1.RefSource{URI: mismatchedSource}, verificationPolicy: vps, expectedError: ErrNoMatchedPolicies, }, { name: "Verification fails with regex error", pipeline: signedPipeline, - source: &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, + source: &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, verificationPolicy: []*v1alpha1.VerificationPolicy{ { ObjectMeta: metav1.ObjectMeta{ @@ -546,7 +546,7 @@ func TestVerifyResource_V1Task_Success(t *testing.T) { if err != nil { t.Error(err) } - vr := VerifyResource(context.Background(), signedTask, k8sclient, &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, vps) + vr := VerifyResource(context.Background(), signedTask, k8sclient, &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, vps) if vr.VerificationResultType != VerificationPass { t.Errorf("VerificationResult mismatch: want %v, got %v", VerificationPass, vr.VerificationResultType) } @@ -559,7 +559,7 @@ func TestVerifyResource_V1Task_Error(t *testing.T) { } modifiedTask := signedTask.DeepCopy() modifiedTask.Annotations["foo"] = "modified" - vr := VerifyResource(context.Background(), modifiedTask, k8sclient, &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, vps) + vr := VerifyResource(context.Background(), modifiedTask, k8sclient, &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, vps) if vr.VerificationResultType != VerificationError && !errors.Is(vr.Err, ErrResourceVerificationFailed) { t.Errorf("VerificationResult mismatch: want %v, got %v", VerificationResult{VerificationResultType: VerificationError, Err: ErrResourceVerificationFailed}, vr) } @@ -571,7 +571,7 @@ func TestVerifyResource_V1Pipeline_Success(t *testing.T) { if err != nil { t.Error(err) } - vr := VerifyResource(context.Background(), signed, k8sclient, &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, vps) + vr := VerifyResource(context.Background(), signed, k8sclient, &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, vps) if vr.VerificationResultType != VerificationPass { t.Errorf("VerificationResult mismatch: want %v, got %v", VerificationPass, vr.VerificationResultType) } @@ -585,7 +585,7 @@ func TestVerifyResource_V1Pipeline_Error(t *testing.T) { } modifiedTask := signed.DeepCopy() modifiedTask.Annotations["foo"] = "modified" - vr := VerifyResource(context.Background(), modifiedTask, k8sclient, &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, vps) + vr := VerifyResource(context.Background(), modifiedTask, k8sclient, &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"}, vps) if vr.VerificationResultType != VerificationError && !errors.Is(vr.Err, ErrResourceVerificationFailed) { t.Errorf("VerificationResult mismatch: want %v, got %v", VerificationResult{VerificationResultType: VerificationError, Err: ErrResourceVerificationFailed}, vr) } @@ -593,7 +593,7 @@ func TestVerifyResource_V1Pipeline_Error(t *testing.T) { func TestVerifyResource_TypeNotSupported(t *testing.T) { resource := v1beta1.ClusterTask{} - refSource := &v1beta1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"} + refSource := &v1.RefSource{URI: "git+https://github.com/tektoncd/catalog.git"} _, _, k8sclient, vps := test.SetupVerificationPolicies(t) vr := VerifyResource(context.Background(), &resource, k8sclient, refSource, vps) if !errors.Is(vr.Err, ErrResourceNotSupported) { diff --git a/pkg/workspace/apply.go b/pkg/workspace/apply.go index bbdf42b4b42..776888debee 100644 --- a/pkg/workspace/apply.go +++ b/pkg/workspace/apply.go @@ -20,7 +20,7 @@ import ( "context" "fmt" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/names" "github.com/tektoncd/pipeline/pkg/substitution" corev1 "k8s.io/api/core/v1" @@ -46,7 +46,7 @@ func (nvm nameVolumeMap) setVolumeSource(workspaceName string, volumeName string // wb and the value is a newly-created Volume to use. If the same Volume is bound twice, the // resulting volumes will both have the same name to prevent the same Volume from being attached // to a pod twice. The names of the returned volumes will be a short random string starting "ws-". -func CreateVolumes(wb []v1beta1.WorkspaceBinding) map[string]corev1.Volume { +func CreateVolumes(wb []v1.WorkspaceBinding) map[string]corev1.Volume { pvcs := map[string]corev1.Volume{} v := make(nameVolumeMap) for _, w := range wb { @@ -81,7 +81,7 @@ func CreateVolumes(wb []v1beta1.WorkspaceBinding) map[string]corev1.Volume { return v } -func getDeclaredWorkspace(name string, w []v1beta1.WorkspaceDeclaration) (*v1beta1.WorkspaceDeclaration, error) { +func getDeclaredWorkspace(name string, w []v1.WorkspaceDeclaration) (*v1.WorkspaceDeclaration, error) { for _, workspace := range w { if workspace.Name == name { return &workspace, nil @@ -94,7 +94,7 @@ func getDeclaredWorkspace(name string, w []v1beta1.WorkspaceDeclaration) (*v1bet // Apply will update the StepTemplate, Sidecars and Volumes declaration in ts so that the workspaces // specified through wb combined with the declared workspaces in ts will be available for // all Step and Sidecar containers in the resulting pod. -func Apply(ctx context.Context, ts v1beta1.TaskSpec, wb []v1beta1.WorkspaceBinding, v map[string]corev1.Volume) (*v1beta1.TaskSpec, error) { +func Apply(ctx context.Context, ts v1.TaskSpec, wb []v1.WorkspaceBinding, v map[string]corev1.Volume) (*v1.TaskSpec, error) { // If there are no bound workspaces, we don't need to do anything if len(wb) == 0 { return &ts, nil @@ -104,7 +104,7 @@ func Apply(ctx context.Context, ts v1beta1.TaskSpec, wb []v1beta1.WorkspaceBindi // Initialize StepTemplate if it hasn't been already if ts.StepTemplate == nil { - ts.StepTemplate = &v1beta1.StepTemplate{} + ts.StepTemplate = &v1.StepTemplate{} } isolatedWorkspaces := sets.NewString() @@ -130,7 +130,7 @@ func Apply(ctx context.Context, ts v1beta1.TaskSpec, wb []v1beta1.WorkspaceBindi } } if addWorkspace { - ts.Workspaces = append(ts.Workspaces, v1beta1.WorkspaceDeclaration{Name: wb[i].Name}) + ts.Workspaces = append(ts.Workspaces, v1.WorkspaceDeclaration{Name: wb[i].Name}) } w, err := getDeclaredWorkspace(wb[i].Name, ts.Workspaces) if err != nil { @@ -163,7 +163,7 @@ func Apply(ctx context.Context, ts v1beta1.TaskSpec, wb []v1beta1.WorkspaceBindi // mountAsSharedWorkspace takes a volumeMount and adds it to all the steps and sidecars in // a TaskSpec. -func mountAsSharedWorkspace(ts v1beta1.TaskSpec, volumeMount corev1.VolumeMount) { +func mountAsSharedWorkspace(ts v1.TaskSpec, volumeMount corev1.VolumeMount) { ts.StepTemplate.VolumeMounts = append(ts.StepTemplate.VolumeMounts, volumeMount) for i := range ts.Sidecars { @@ -173,7 +173,7 @@ func mountAsSharedWorkspace(ts v1beta1.TaskSpec, volumeMount corev1.VolumeMount) // mountAsIsolatedWorkspace takes a volumeMount and adds it only to the steps and sidecars // that have requested access to it. -func mountAsIsolatedWorkspace(ts v1beta1.TaskSpec, workspaceName string, volumeMount corev1.VolumeMount) { +func mountAsIsolatedWorkspace(ts v1.TaskSpec, workspaceName string, volumeMount corev1.VolumeMount) { for i := range ts.Steps { step := &ts.Steps[i] for _, workspaceUsage := range step.Workspaces { @@ -204,7 +204,7 @@ func mountAsIsolatedWorkspace(ts v1beta1.TaskSpec, workspaceName string, volumeM // AddSidecarVolumeMount is a helper to add a volumeMount to the sidecar unless its // MountPath would conflict with another of the sidecar's existing volume mounts. -func AddSidecarVolumeMount(sidecar *v1beta1.Sidecar, volumeMount corev1.VolumeMount) { +func AddSidecarVolumeMount(sidecar *v1.Sidecar, volumeMount corev1.VolumeMount) { for j := range sidecar.VolumeMounts { if sidecar.VolumeMounts[j].MountPath == volumeMount.MountPath { return @@ -213,7 +213,7 @@ func AddSidecarVolumeMount(sidecar *v1beta1.Sidecar, volumeMount corev1.VolumeMo sidecar.VolumeMounts = append(sidecar.VolumeMounts, volumeMount) } -func findWorkspaceSubstitutionLocationsInSidecars(sidecars []v1beta1.Sidecar) sets.String { +func findWorkspaceSubstitutionLocationsInSidecars(sidecars []v1.Sidecar) sets.String { locationsToCheck := sets.NewString() for _, sidecar := range sidecars { locationsToCheck.Insert(sidecar.Script) @@ -229,7 +229,7 @@ func findWorkspaceSubstitutionLocationsInSidecars(sidecars []v1beta1.Sidecar) se return locationsToCheck } -func findWorkspaceSubstitutionLocationsInSteps(steps []v1beta1.Step) sets.String { +func findWorkspaceSubstitutionLocationsInSteps(steps []v1.Step) sets.String { locationsToCheck := sets.NewString() for _, step := range steps { locationsToCheck.Insert(step.Script) @@ -245,7 +245,7 @@ func findWorkspaceSubstitutionLocationsInSteps(steps []v1beta1.Step) sets.String return locationsToCheck } -func findWorkspaceSubstitutionLocationsInStepTemplate(stepTemplate *v1beta1.StepTemplate) sets.String { +func findWorkspaceSubstitutionLocationsInStepTemplate(stepTemplate *v1.StepTemplate) sets.String { locationsToCheck := sets.NewString() if stepTemplate != nil { @@ -260,7 +260,7 @@ func findWorkspaceSubstitutionLocationsInStepTemplate(stepTemplate *v1beta1.Step } // FindWorkspacesUsedByTask returns a set of all the workspaces that the TaskSpec uses. -func FindWorkspacesUsedByTask(ts v1beta1.TaskSpec) (sets.String, error) { +func FindWorkspacesUsedByTask(ts v1.TaskSpec) (sets.String, error) { locationsToCheck := sets.NewString() locationsToCheck.Insert(findWorkspaceSubstitutionLocationsInSteps(ts.Steps).List()...) locationsToCheck.Insert(findWorkspaceSubstitutionLocationsInSidecars(ts.Sidecars).List()...) diff --git a/pkg/workspace/apply_test.go b/pkg/workspace/apply_test.go index 4b4e7be5449..7c0528d872c 100644 --- a/pkg/workspace/apply_test.go +++ b/pkg/workspace/apply_test.go @@ -22,12 +22,11 @@ import ( "github.com/google/go-cmp/cmp" "github.com/tektoncd/pipeline/pkg/apis/config" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/workspace" "github.com/tektoncd/pipeline/test/diff" "github.com/tektoncd/pipeline/test/names" corev1 "k8s.io/api/core/v1" - v1 "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/util/sets" ) @@ -35,11 +34,11 @@ func TestCreateVolumes(t *testing.T) { names.TestingSeed() for _, tc := range []struct { name string - workspaces []v1beta1.WorkspaceBinding + workspaces []v1.WorkspaceBinding expectedVolumes map[string]corev1.Volume }{{ name: "binding a single workspace with a PVC", - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "mypvc", @@ -58,7 +57,7 @@ func TestCreateVolumes(t *testing.T) { }, }, { name: "binding a single workspace with emptyDir", - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", EmptyDir: &corev1.EmptyDirVolumeSource{ Medium: corev1.StorageMediumMemory, @@ -77,7 +76,7 @@ func TestCreateVolumes(t *testing.T) { }, }, { name: "binding a single workspace with configMap", - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", ConfigMap: &corev1.ConfigMapVolumeSource{ LocalObjectReference: corev1.LocalObjectReference{ @@ -108,7 +107,7 @@ func TestCreateVolumes(t *testing.T) { }, }, { name: "binding a single workspace with secret", - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", Secret: &corev1.SecretVolumeSource{ SecretName: "foobarsecret", @@ -135,7 +134,7 @@ func TestCreateVolumes(t *testing.T) { }, }, { name: "binding a single workspace with projected", - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", Projected: &corev1.ProjectedVolumeSource{ Sources: []corev1.VolumeProjection{{ @@ -194,11 +193,11 @@ func TestCreateVolumes(t *testing.T) { }, }, { name: "0 workspace bindings", - workspaces: []v1beta1.WorkspaceBinding{}, + workspaces: []v1.WorkspaceBinding{}, expectedVolumes: map[string]corev1.Volume{}, }, { name: "binding multiple workspaces", - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "mypvc", @@ -230,7 +229,7 @@ func TestCreateVolumes(t *testing.T) { }, }, { name: "multiple workspaces binding to the same volume with diff subpaths doesnt duplicate", - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "mypvc", @@ -276,25 +275,25 @@ func TestApply(t *testing.T) { names.TestingSeed() for _, tc := range []struct { name string - ts v1beta1.TaskSpec - workspaces []v1beta1.WorkspaceBinding - expectedTaskSpec v1beta1.TaskSpec + ts v1.TaskSpec + workspaces []v1.WorkspaceBinding + expectedTaskSpec v1.TaskSpec }{{ name: "binding a single workspace with a PVC", - ts: v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + ts: v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "mypvc", }, SubPath: "/foo/bar/baz", }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-9l9zj", MountPath: "/workspace/custom", @@ -309,26 +308,26 @@ func TestApply(t *testing.T) { }, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", }}, }, }, { name: "binding a single workspace with emptyDir", - ts: v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + ts: v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", }, }}, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", EmptyDir: &corev1.EmptyDirVolumeSource{ Medium: corev1.StorageMediumMemory, }, SubPath: "/foo/bar/baz", }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-mz4c7", MountPath: "/workspace/custom", @@ -343,18 +342,18 @@ func TestApply(t *testing.T) { }, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", }}, }, }, { name: "binding a single workspace with projected", - ts: v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + ts: v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", }, }}, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", Projected: &corev1.ProjectedVolumeSource{ Sources: []corev1.VolumeProjection{{ @@ -381,8 +380,8 @@ func TestApply(t *testing.T) { }, SubPath: "/foo/bar/baz", }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-mssqb", MountPath: "/workspace/custom", @@ -417,14 +416,14 @@ func TestApply(t *testing.T) { }, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", }}, }, }, { name: "task spec already has volumes and stepTemplate", - ts: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + ts: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "awesome-volume", MountPath: "/", @@ -436,19 +435,19 @@ func TestApply(t *testing.T) { EmptyDir: &corev1.EmptyDirVolumeSource{}, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", EmptyDir: &corev1.EmptyDirVolumeSource{ Medium: corev1.StorageMediumMemory, }, SubPath: "/foo/bar/baz", }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "awesome-volume", MountPath: "/", @@ -471,33 +470,33 @@ func TestApply(t *testing.T) { }, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", }}, }, }, { name: "0 workspace bindings", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "foo", }}, }, - workspaces: []v1beta1.WorkspaceBinding{}, - expectedTaskSpec: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + workspaces: []v1.WorkspaceBinding{}, + expectedTaskSpec: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "foo", }}, }, }, { name: "binding multiple workspaces", - ts: v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + ts: v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", }, { Name: "even-more-custom", }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "mypvc", @@ -509,8 +508,8 @@ func TestApply(t *testing.T) { ClaimName: "myotherpvc", }, }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-6nl7g", MountPath: "/workspace/custom", @@ -536,21 +535,21 @@ func TestApply(t *testing.T) { }, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom"}, { Name: "even-more-custom", }}, }, }, { name: "multiple workspaces binding to the same volume with diff subpaths doesnt duplicate", - ts: v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + ts: v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", }, { Name: "custom2", }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "mypvc", @@ -563,8 +562,8 @@ func TestApply(t *testing.T) { }, SubPath: "/very/professional/work/space", }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-vr6ds", MountPath: "/workspace/custom", @@ -583,7 +582,7 @@ func TestApply(t *testing.T) { }, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", }, { Name: "custom2", @@ -591,20 +590,20 @@ func TestApply(t *testing.T) { }, }, { name: "non default mount path", - ts: v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + ts: v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", MountPath: "/my/fancy/mount/path", }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "mypvc", }, }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-twkr2", MountPath: "/my/fancy/mount/path", @@ -618,28 +617,28 @@ func TestApply(t *testing.T) { }, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", MountPath: "/my/fancy/mount/path", }}, }, }, { name: "readOnly true marks volume mount readOnly", - ts: v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + ts: v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", MountPath: "/my/fancy/mount/path", ReadOnly: true, }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "mypvc", }, }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-mnq6l", MountPath: "/my/fancy/mount/path", @@ -654,7 +653,7 @@ func TestApply(t *testing.T) { }, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", MountPath: "/my/fancy/mount/path", ReadOnly: true, @@ -662,22 +661,22 @@ func TestApply(t *testing.T) { }, }, { name: "binding a single workspace with CSI", - ts: v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + ts: v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", MountPath: "/workspace/csi", ReadOnly: true, }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", CSI: &corev1.CSIVolumeSource{ Driver: "secrets-store.csi.k8s.io", }, SubPath: "/foo/bar/baz", }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-hvpvf", MountPath: "/workspace/csi", @@ -693,7 +692,7 @@ func TestApply(t *testing.T) { }, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", MountPath: "/workspace/csi", ReadOnly: true, @@ -717,24 +716,24 @@ func TestApply_PropagatedWorkspacesFromWorkspaceBindingToDeclarations(t *testing names.TestingSeed() for _, tc := range []struct { name string - ts v1beta1.TaskSpec - workspaces []v1beta1.WorkspaceBinding - expectedTaskSpec v1beta1.TaskSpec + ts v1.TaskSpec + workspaces []v1.WorkspaceBinding + expectedTaskSpec v1.TaskSpec apiField string }{{ name: "propagate workspaces", - ts: v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + ts: v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "workspace1", }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "workspace2", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "mypvc", }, }}, - expectedTaskSpec: v1beta1.TaskSpec{ + expectedTaskSpec: v1.TaskSpec{ Volumes: []corev1.Volume{{ Name: "ws-9l9zj", VolumeSource: corev1.VolumeSource{ @@ -743,7 +742,7 @@ func TestApply_PropagatedWorkspacesFromWorkspaceBindingToDeclarations(t *testing }, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "workspace1", MountPath: "", ReadOnly: false, @@ -752,8 +751,8 @@ func TestApply_PropagatedWorkspacesFromWorkspaceBindingToDeclarations(t *testing MountPath: "", ReadOnly: false, }}, - StepTemplate: &v1beta1.StepTemplate{ - VolumeMounts: []v1.VolumeMount{{Name: "ws-9l9zj", MountPath: "/workspace/workspace2"}}, + StepTemplate: &v1.StepTemplate{ + VolumeMounts: []corev1.VolumeMount{{Name: "ws-9l9zj", MountPath: "/workspace/workspace2"}}, }, }, }} { @@ -774,30 +773,30 @@ func TestApply_IsolatedWorkspaces(t *testing.T) { names.TestingSeed() for _, tc := range []struct { name string - ts v1beta1.TaskSpec - workspaces []v1beta1.WorkspaceBinding - expectedTaskSpec v1beta1.TaskSpec + ts v1.TaskSpec + workspaces []v1.WorkspaceBinding + expectedTaskSpec v1.TaskSpec }{{ name: "workspace isolated to step does not appear in step template or sidecars", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ - Workspaces: []v1beta1.WorkspaceUsage{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", }}, }}, - Sidecars: []v1beta1.Sidecar{{Name: "foo"}}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Sidecars: []v1.Sidecar{{Name: "foo"}}, + Workspaces: []v1.WorkspaceDeclaration{{ Name: "source", }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "source", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "testpvc", }, }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{}, + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{}, Volumes: []corev1.Volume{{ Name: "ws-9l9zj", VolumeSource: corev1.VolumeSource{ @@ -806,43 +805,43 @@ func TestApply_IsolatedWorkspaces(t *testing.T) { }, }, }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-9l9zj", MountPath: "/workspace/source", }}, - Workspaces: []v1beta1.WorkspaceUsage{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", }}, }}, - Sidecars: []v1beta1.Sidecar{{Name: "foo"}}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Sidecars: []v1.Sidecar{{Name: "foo"}}, + Workspaces: []v1.WorkspaceDeclaration{{ Name: "source", }}, }, }, { name: "workspace isolated to sidecar does not appear in steps", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step1", }}, - Sidecars: []v1beta1.Sidecar{{ - Workspaces: []v1beta1.WorkspaceUsage{{ + Sidecars: []v1.Sidecar{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", }}, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "source", }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "source", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "testpvc", }, }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{}, + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{}, Volumes: []corev1.Volume{{ Name: "ws-mz4c7", VolumeSource: corev1.VolumeSource{ @@ -851,49 +850,49 @@ func TestApply_IsolatedWorkspaces(t *testing.T) { }, }, }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ Name: "step1", }}, - Sidecars: []v1beta1.Sidecar{{ + Sidecars: []v1.Sidecar{{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-mz4c7", MountPath: "/workspace/source", }}, - Workspaces: []v1beta1.WorkspaceUsage{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", }}, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "source", }}, }, }, { name: "workspace isolated to one step and one sidecar does not appear in step template", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ - Workspaces: []v1beta1.WorkspaceUsage{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", }}, }, { Name: "step2", }}, - Sidecars: []v1beta1.Sidecar{{ - Workspaces: []v1beta1.WorkspaceUsage{{ + Sidecars: []v1.Sidecar{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", }}, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "source", }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "source", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "testpvc", }, }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{}, + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{}, Volumes: []corev1.Volume{{ Name: "ws-mssqb", VolumeSource: corev1.VolumeSource{ @@ -902,47 +901,47 @@ func TestApply_IsolatedWorkspaces(t *testing.T) { }, }, }}, - Steps: []v1beta1.Step{{ + Steps: []v1.Step{{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-mssqb", MountPath: "/workspace/source", }}, - Workspaces: []v1beta1.WorkspaceUsage{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", }}, }, { Name: "step2", }}, - Sidecars: []v1beta1.Sidecar{{ + Sidecars: []v1.Sidecar{{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-mssqb", MountPath: "/workspace/source", }}, - Workspaces: []v1beta1.WorkspaceUsage{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", }}, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "source", }}, }, }, { name: "workspaces are mounted to sidecars by default", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{}}, - Sidecars: []v1beta1.Sidecar{{}}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{}}, + Sidecars: []v1.Sidecar{{}}, + Workspaces: []v1.WorkspaceDeclaration{{ Name: "source", }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "source", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "testpvc", }, }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-78c5n", MountPath: "/workspace/source", }}, @@ -955,44 +954,44 @@ func TestApply_IsolatedWorkspaces(t *testing.T) { }, }, }}, - Steps: []v1beta1.Step{{}}, - Sidecars: []v1beta1.Sidecar{{ + Steps: []v1.Step{{}}, + Sidecars: []v1.Sidecar{{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-78c5n", MountPath: "/workspace/source", }}, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "source", }}, }, }, { name: "isolated workspaces custom mountpaths appear in volumemounts", - ts: v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ - Workspaces: []v1beta1.WorkspaceUsage{{ + ts: v1.TaskSpec{ + Steps: []v1.Step{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", MountPath: "/foo", }}, }}, - Sidecars: []v1beta1.Sidecar{{ - Workspaces: []v1beta1.WorkspaceUsage{{ + Sidecars: []v1.Sidecar{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", MountPath: "/bar", }}, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "source", }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "source", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "testpvc", }, }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{}, + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{}, Volumes: []corev1.Volume{{ Name: "ws-6nl7g", VolumeSource: corev1.VolumeSource{ @@ -1001,8 +1000,8 @@ func TestApply_IsolatedWorkspaces(t *testing.T) { }, }, }}, - Steps: []v1beta1.Step{{ - Workspaces: []v1beta1.WorkspaceUsage{{ + Steps: []v1.Step{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", MountPath: "/foo", }}, @@ -1011,8 +1010,8 @@ func TestApply_IsolatedWorkspaces(t *testing.T) { MountPath: "/foo", }}, }}, - Sidecars: []v1beta1.Sidecar{{ - Workspaces: []v1beta1.WorkspaceUsage{{ + Sidecars: []v1.Sidecar{{ + Workspaces: []v1.WorkspaceUsage{{ Name: "source", MountPath: "/bar", }}, @@ -1021,19 +1020,19 @@ func TestApply_IsolatedWorkspaces(t *testing.T) { MountPath: "/bar", }}, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "source", }}, }, }, { name: "existing sidecar volumeMounts are not displaced by workspace binding", - ts: v1beta1.TaskSpec{ - Workspaces: []v1beta1.WorkspaceDeclaration{{ + ts: v1.TaskSpec{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", MountPath: "/my/fancy/mount/path", ReadOnly: true, }}, - Sidecars: []v1beta1.Sidecar{{ + Sidecars: []v1.Sidecar{{ Name: "conflicting volume mount sidecar", VolumeMounts: []corev1.VolumeMount{{ Name: "mount-path-conflicts", @@ -1041,21 +1040,21 @@ func TestApply_IsolatedWorkspaces(t *testing.T) { }}, }}, }, - workspaces: []v1beta1.WorkspaceBinding{{ + workspaces: []v1.WorkspaceBinding{{ Name: "custom", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "mypvc", }, }}, - expectedTaskSpec: v1beta1.TaskSpec{ - StepTemplate: &v1beta1.StepTemplate{ + expectedTaskSpec: v1.TaskSpec{ + StepTemplate: &v1.StepTemplate{ VolumeMounts: []corev1.VolumeMount{{ Name: "ws-j2tds", MountPath: "/my/fancy/mount/path", ReadOnly: true, }}, }, - Sidecars: []v1beta1.Sidecar{{ + Sidecars: []v1.Sidecar{{ Name: "conflicting volume mount sidecar", VolumeMounts: []corev1.VolumeMount{{ Name: "mount-path-conflicts", @@ -1070,7 +1069,7 @@ func TestApply_IsolatedWorkspaces(t *testing.T) { }, }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "custom", MountPath: "/my/fancy/mount/path", ReadOnly: true, @@ -1097,12 +1096,12 @@ func TestApply_IsolatedWorkspaces(t *testing.T) { func TestApplyWithMissingWorkspaceDeclaration(t *testing.T) { names.TestingSeed() - ts := v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{}}, - Sidecars: []v1beta1.Sidecar{{}}, - Workspaces: []v1beta1.WorkspaceDeclaration{}, // Intentionally missing workspace declaration + ts := v1.TaskSpec{ + Steps: []v1.Step{{}}, + Sidecars: []v1.Sidecar{{}}, + Workspaces: []v1.WorkspaceDeclaration{}, // Intentionally missing workspace declaration } - bindings := []v1beta1.WorkspaceBinding{{ + bindings := []v1.WorkspaceBinding{{ Name: "source", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "testpvc", @@ -1120,14 +1119,14 @@ func TestAddSidecarVolumeMount(t *testing.T) { for _, tc := range []struct { sidecarMounts []corev1.VolumeMount volumeMount corev1.VolumeMount - expectedSidecar v1beta1.Sidecar + expectedSidecar v1.Sidecar }{{ sidecarMounts: nil, volumeMount: corev1.VolumeMount{ Name: "foo", MountPath: "/workspace/foo", }, - expectedSidecar: v1beta1.Sidecar{ + expectedSidecar: v1.Sidecar{ VolumeMounts: []corev1.VolumeMount{{ Name: "foo", MountPath: "/workspace/foo", @@ -1139,7 +1138,7 @@ func TestAddSidecarVolumeMount(t *testing.T) { Name: "foo", MountPath: "/workspace/foo", }, - expectedSidecar: v1beta1.Sidecar{ + expectedSidecar: v1.Sidecar{ VolumeMounts: []corev1.VolumeMount{{ Name: "foo", MountPath: "/workspace/foo", @@ -1154,7 +1153,7 @@ func TestAddSidecarVolumeMount(t *testing.T) { Name: "workspace1", MountPath: "/workspace/bar", }, - expectedSidecar: v1beta1.Sidecar{ + expectedSidecar: v1.Sidecar{ VolumeMounts: []corev1.VolumeMount{{ Name: "bar", MountPath: "/workspace/bar", @@ -1169,7 +1168,7 @@ func TestAddSidecarVolumeMount(t *testing.T) { Name: "foo", MountPath: "/workspace/foo", }, - expectedSidecar: v1beta1.Sidecar{ + expectedSidecar: v1.Sidecar{ VolumeMounts: []corev1.VolumeMount{{ Name: "bar", MountPath: "/workspace/bar", @@ -1179,7 +1178,7 @@ func TestAddSidecarVolumeMount(t *testing.T) { }}, }, }} { - sidecar := v1beta1.Sidecar{} + sidecar := v1.Sidecar{} sidecar.VolumeMounts = tc.sidecarMounts workspace.AddSidecarVolumeMount(&sidecar, tc.volumeMount) if d := cmp.Diff(tc.expectedSidecar, sidecar); d != "" { @@ -1191,26 +1190,26 @@ func TestAddSidecarVolumeMount(t *testing.T) { func TestFindWorkspacesUsedByTask(t *testing.T) { tests := []struct { name string - ts *v1beta1.TaskSpec + ts *v1.TaskSpec want sets.String }{{ name: "completespec", - ts: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + ts: &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "step-name", Image: "step-image", Script: "$(workspaces.step-script.path)", Command: []string{"$(workspaces.step-command.path)"}, Args: []string{"$(workspaces.step-args.path)"}, }}, - Sidecars: []v1beta1.Sidecar{{ + Sidecars: []v1.Sidecar{{ Name: "sidecar-name", Image: "sidecar-image", Script: "$(workspaces.sidecar-script.path)", Command: []string{"$(workspaces.sidecar-command.path)"}, Args: []string{"$(workspaces.sidecar-args.path)"}, }}, - StepTemplate: &v1beta1.StepTemplate{ + StepTemplate: &v1.StepTemplate{ Image: "steptemplate-image", Command: []string{"$(workspaces.steptemplate-command.path)"}, Args: []string{"$(workspaces.steptemplate-args.path)"}, diff --git a/pkg/workspace/validate.go b/pkg/workspace/validate.go index d9f2a7b6a65..c048a5c0710 100644 --- a/pkg/workspace/validate.go +++ b/pkg/workspace/validate.go @@ -20,13 +20,13 @@ import ( "context" "fmt" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "k8s.io/apimachinery/pkg/util/sets" ) // ValidateBindings will return an error if the bound workspaces in binds don't satisfy the declared // workspaces in decls. -func ValidateBindings(ctx context.Context, decls []v1beta1.WorkspaceDeclaration, binds []v1beta1.WorkspaceBinding) error { +func ValidateBindings(ctx context.Context, decls []v1.WorkspaceDeclaration, binds []v1.WorkspaceBinding) error { // This will also be validated at webhook time but in case the webhook isn't invoked for some // reason we'll invoke the same validation here. for _, b := range binds { @@ -66,7 +66,7 @@ func ValidateBindings(ctx context.Context, decls []v1beta1.WorkspaceDeclaration, // // This is only useful to validate that WorkspaceBindings in TaskRuns are compatible // with affinity rules enforced by the AffinityAssistant. -func ValidateOnlyOnePVCIsUsed(wb []v1beta1.WorkspaceBinding) error { +func ValidateOnlyOnePVCIsUsed(wb []v1.WorkspaceBinding) error { workspaceVolumes := make(map[string]bool) for _, w := range wb { if w.PersistentVolumeClaim != nil { diff --git a/pkg/workspace/validate_test.go b/pkg/workspace/validate_test.go index d7cc172e37c..abdbb4884b3 100644 --- a/pkg/workspace/validate_test.go +++ b/pkg/workspace/validate_test.go @@ -21,7 +21,7 @@ import ( "errors" "testing" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" workspace "github.com/tektoncd/pipeline/pkg/workspace" corev1 "k8s.io/api/core/v1" ) @@ -29,22 +29,22 @@ import ( func TestValidateBindingsValid(t *testing.T) { for _, tc := range []struct { name string - declarations []v1beta1.WorkspaceDeclaration - bindings []v1beta1.WorkspaceBinding + declarations []v1.WorkspaceDeclaration + bindings []v1.WorkspaceBinding }{{ name: "no bindings provided or required", declarations: nil, bindings: nil, }, { name: "empty list of bindings provided and required", - declarations: []v1beta1.WorkspaceDeclaration{}, - bindings: []v1beta1.WorkspaceBinding{}, + declarations: []v1.WorkspaceDeclaration{}, + bindings: []v1.WorkspaceBinding{}, }, { name: "Successfully bound with PVC", - declarations: []v1beta1.WorkspaceDeclaration{{ + declarations: []v1.WorkspaceDeclaration{{ Name: "beth", }}, - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ Name: "beth", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "pool-party", @@ -52,30 +52,30 @@ func TestValidateBindingsValid(t *testing.T) { }}, }, { name: "Successfully bound with emptyDir", - declarations: []v1beta1.WorkspaceDeclaration{{ + declarations: []v1.WorkspaceDeclaration{{ Name: "beth", }}, - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ Name: "beth", EmptyDir: &corev1.EmptyDirVolumeSource{}, }}, }, { name: "Included optional workspace", - declarations: []v1beta1.WorkspaceDeclaration{{ + declarations: []v1.WorkspaceDeclaration{{ Name: "beth", Optional: true, }}, - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ Name: "beth", EmptyDir: &corev1.EmptyDirVolumeSource{}, }}, }, { name: "Omitted optional workspace", - declarations: []v1beta1.WorkspaceDeclaration{{ + declarations: []v1.WorkspaceDeclaration{{ Name: "beth", Optional: true, }}, - bindings: []v1beta1.WorkspaceBinding{}, + bindings: []v1.WorkspaceBinding{}, }} { t.Run(tc.name, func(t *testing.T) { if err := workspace.ValidateBindings(context.Background(), tc.declarations, tc.bindings); err != nil { @@ -88,14 +88,14 @@ func TestValidateBindingsValid(t *testing.T) { func TestValidateBindingsInvalid(t *testing.T) { for _, tc := range []struct { name string - declarations []v1beta1.WorkspaceDeclaration - bindings []v1beta1.WorkspaceBinding + declarations []v1.WorkspaceDeclaration + bindings []v1.WorkspaceBinding }{{ name: "Didn't provide binding matching declared workspace", - declarations: []v1beta1.WorkspaceDeclaration{{ + declarations: []v1.WorkspaceDeclaration{{ Name: "beth", }}, - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ Name: "kate", EmptyDir: &corev1.EmptyDirVolumeSource{}, }, { @@ -104,21 +104,21 @@ func TestValidateBindingsInvalid(t *testing.T) { }}, }, { name: "Provided a binding that wasn't needed", - declarations: []v1beta1.WorkspaceDeclaration{{ + declarations: []v1.WorkspaceDeclaration{{ Name: "randall", }, { Name: "beth", }}, - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ Name: "beth", EmptyDir: &corev1.EmptyDirVolumeSource{}, }}, }, { name: "Provided both pvc and emptydir", - declarations: []v1beta1.WorkspaceDeclaration{{ + declarations: []v1.WorkspaceDeclaration{{ Name: "beth", }}, - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ Name: "beth", EmptyDir: &corev1.EmptyDirVolumeSource{}, PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ @@ -127,28 +127,28 @@ func TestValidateBindingsInvalid(t *testing.T) { }}, }, { name: "Provided neither pvc nor emptydir", - declarations: []v1beta1.WorkspaceDeclaration{{ + declarations: []v1.WorkspaceDeclaration{{ Name: "beth", }}, - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ Name: "beth", }}, }, { name: "Provided pvc without claim name", - declarations: []v1beta1.WorkspaceDeclaration{{ + declarations: []v1.WorkspaceDeclaration{{ Name: "beth", }}, - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ Name: "beth", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{}, }}, }, { name: "Mismatch between declarations and bindings", - declarations: []v1beta1.WorkspaceDeclaration{{ + declarations: []v1.WorkspaceDeclaration{{ Name: "Notbeth", Optional: true, }}, - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ Name: "beth", EmptyDir: &corev1.EmptyDirVolumeSource{}, }}, @@ -164,20 +164,20 @@ func TestValidateBindingsInvalid(t *testing.T) { func TestValidateOnlyOnePVCIsUsed_Valid(t *testing.T) { for _, tc := range []struct { name string - bindings []v1beta1.WorkspaceBinding + bindings []v1.WorkspaceBinding }{{ name: "an error is not returned when no bindings are given", - bindings: []v1beta1.WorkspaceBinding{}, + bindings: []v1.WorkspaceBinding{}, }, { name: "an error is not returned when volume claims are not used", - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ EmptyDir: &corev1.EmptyDirVolumeSource{}, }, { Secret: &corev1.SecretVolumeSource{}, }}, }, { name: "an error is not returned when one PV claim is used in two bindings", - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "foo", }, @@ -188,7 +188,7 @@ func TestValidateOnlyOnePVCIsUsed_Valid(t *testing.T) { }}, }, { name: "an error is not returned when one PV claim is used in two bindings with different subpaths", - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ SubPath: "/pathA", PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "foo", @@ -212,11 +212,11 @@ func TestValidateOnlyOnePVCIsUsed_Invalid(t *testing.T) { validationError := errors.New("more than one PersistentVolumeClaim is bound") for _, tc := range []struct { name string - bindings []v1beta1.WorkspaceBinding + bindings []v1.WorkspaceBinding wantErr error }{{ name: "an error is returned when two different PV claims are used", - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "foo", }, @@ -228,7 +228,7 @@ func TestValidateOnlyOnePVCIsUsed_Invalid(t *testing.T) { wantErr: validationError, }, { name: "an error is returned when a PVC and volume claim template are mixed", - bindings: []v1beta1.WorkspaceBinding{{ + bindings: []v1.WorkspaceBinding{{ PersistentVolumeClaim: &corev1.PersistentVolumeClaimVolumeSource{ ClaimName: "foo", }, diff --git a/test/README.md b/test/README.md index af57c1fe365..7e9eaf7515b 100644 --- a/test/README.md +++ b/test/README.md @@ -318,7 +318,7 @@ The `Clients` struct contains initialized clients for accessing: For example, to create a `Pipeline`: ```bash -_, err = clients.V1beta1PipelineClient.Pipelines.Create(test.Route(namespaceName, pipelineName)) +_, err = clients.v1PipelineClient.Pipelines.Create(test.Route(namespaceName, pipelineName)) ``` And you can use the client to clean up resources created by your test (e.g. in @@ -368,7 +368,7 @@ err = WaitForTaskRunState(c, hwTaskRunName, func(tr *v1alpha1.TaskRun) (bool, er return true, nil } return false, nil -}, "TaskRunHasCondition", v1beta1Version) +}, "TaskRunHasCondition", v1Version) ``` _[Metrics will be emitted](https://github.com/knative/pkg/tree/master/test#emit-metrics) diff --git a/test/cancel_test.go b/test/cancel_test.go index b47c94f1ccd..5b5fda9d9a3 100644 --- a/test/cancel_test.go +++ b/test/cancel_test.go @@ -27,7 +27,7 @@ import ( "sync" "testing" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/parse" jsonpatch "gomodules.xyz/jsonpatch/v2" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -43,7 +43,7 @@ func TestTaskRunPipelineRunCancel(t *testing.T) { // the retrying TaskRun to retry. for _, numRetries := range []int{0, 1} { numRetries := numRetries // capture range variable - specStatus := v1beta1.PipelineRunSpecStatusCancelled + specStatus := v1.PipelineRunSpecStatusCancelled t.Run(fmt.Sprintf("retries=%d,status=%s", numRetries, specStatus), func(t *testing.T) { ctx := context.Background() ctx, cancel := context.WithCancel(ctx) @@ -55,7 +55,7 @@ func TestTaskRunPipelineRunCancel(t *testing.T) { knativetest.CleanupOnInterrupt(func() { tearDown(ctx, t, c, namespace) }, t.Logf) defer tearDown(ctx, t, c, namespace) - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -71,16 +71,16 @@ spec: `, helpers.ObjectNameForTest(t), namespace, numRetries)) t.Logf("Creating PipelineRun in namespace %s", namespace) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", pipelineRun.Name, err) } t.Logf("Waiting for Pipelinerun %s in namespace %s to be started", pipelineRun.Name, namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, Running(pipelineRun.Name), "PipelineRunRunning", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, Running(pipelineRun.Name), "PipelineRunRunning", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to be running: %s", pipelineRun.Name, err) } - taskrunList, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) + taskrunList, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", pipelineRun.Name, err) } @@ -91,7 +91,7 @@ spec: wg.Add(1) go func(name string) { defer wg.Done() - err := WaitForTaskRunState(ctx, c, name, Running(name), "TaskRunRunning", v1beta1Version) + err := WaitForTaskRunState(ctx, c, name, Running(name), "TaskRunRunning", v1Version) if err != nil { t.Errorf("Error waiting for TaskRun %s to be running: %v", name, err) } @@ -99,7 +99,7 @@ spec: } wg.Wait() - pr, err := c.V1beta1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}) + pr, err := c.V1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get PipelineRun `%s`: %s", pipelineRun.Name, err) } @@ -113,14 +113,14 @@ spec: if err != nil { t.Fatalf("failed to marshal patch bytes in order to cancel") } - if _, err := c.V1beta1PipelineRunClient.Patch(ctx, pr.Name, types.JSONPatchType, patchBytes, metav1.PatchOptions{}, ""); err != nil { + if _, err := c.V1PipelineRunClient.Patch(ctx, pr.Name, types.JSONPatchType, patchBytes, metav1.PatchOptions{}, ""); err != nil { t.Fatalf("Failed to patch PipelineRun `%s` with cancellation: %s", pipelineRun.Name, err) } - expectedReason := v1beta1.PipelineRunReasonCancelled.String() + expectedReason := v1.PipelineRunReasonCancelled.String() expectedCondition := FailedWithReason(expectedReason, pipelineRun.Name) t.Logf("Waiting for PipelineRun %s in namespace %s to be cancelled", pipelineRun.Name, namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, expectedCondition, expectedReason, v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, expectedCondition, expectedReason, v1Version); err != nil { t.Errorf("Error waiting for PipelineRun %q to finished: %s", pipelineRun.Name, err) } @@ -129,7 +129,7 @@ spec: wg.Add(1) go func(name string) { defer wg.Done() - err := WaitForTaskRunState(ctx, c, name, FailedWithReason("TaskRunCancelled", name), "TaskRunCancelled", v1beta1Version) + err := WaitForTaskRunState(ctx, c, name, FailedWithReason("TaskRunCancelled", name), "TaskRunCancelled", v1Version) if err != nil { t.Errorf("Error waiting for TaskRun %s to be finished: %v", name, err) } @@ -138,17 +138,17 @@ spec: wg.Wait() var trName []string - taskrunList, err = c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) + taskrunList, err = c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", pipelineRun.Name, err) } for _, taskrunItem := range taskrunList.Items { trName = append(trName, taskrunItem.Name) - if taskrunItem.Spec.Status != v1beta1.TaskRunSpecStatusCancelled { - t.Fatalf("Status is %s while it should have been %s", taskrunItem.Spec.Status, v1beta1.TaskRunSpecStatusCancelled) + if taskrunItem.Spec.Status != v1.TaskRunSpecStatusCancelled { + t.Fatalf("Status is %s while it should have been %s", taskrunItem.Spec.Status, v1.TaskRunSpecStatusCancelled) } - if taskrunItem.Spec.StatusMessage != v1beta1.TaskRunCancelledByPipelineMsg { - t.Fatalf("Status message is set to %s while it should be %s.", taskrunItem.Spec.StatusMessage, v1beta1.TaskRunCancelledByPipelineMsg) + if taskrunItem.Spec.StatusMessage != v1.TaskRunCancelledByPipelineMsg { + t.Fatalf("Status message is set to %s while it should be %s.", taskrunItem.Spec.StatusMessage, v1.TaskRunCancelledByPipelineMsg) } } diff --git a/test/conformance_test.go b/test/conformance_test.go index e422ac58d1e..9f41605c3b2 100644 --- a/test/conformance_test.go +++ b/test/conformance_test.go @@ -27,7 +27,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/parse" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -51,13 +51,13 @@ func TestTaskRun(t *testing.T) { for _, tc := range []struct { name string - tr *v1beta1.TaskRun + tr *v1.TaskRun fn conditionFn expectedConditionStatus corev1.ConditionStatus - expectedStepState []v1beta1.StepState + expectedStepState []v1.StepState }{{ name: "successful-task-run", - tr: parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + tr: parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -69,7 +69,7 @@ spec: `, helpers.ObjectNameForTest(t), namespace, fqImageName)), fn: TaskRunSucceed, expectedConditionStatus: corev1.ConditionTrue, - expectedStepState: []v1beta1.StepState{{ + expectedStepState: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 0, @@ -79,7 +79,7 @@ spec: }}, }, { name: "failed-task-run", - tr: parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + tr: parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -98,7 +98,7 @@ spec: `, helpers.ObjectNameForTest(t), namespace, fqImageName, fqImageName, fqImageName)), fn: TaskRunFailed, expectedConditionStatus: corev1.ConditionFalse, - expectedStepState: []v1beta1.StepState{{ + expectedStepState: []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 0, @@ -123,15 +123,15 @@ spec: }} { t.Run(tc.name, func(t *testing.T) { t.Logf("Creating TaskRun %s", tc.tr.Name) - if _, err := c.V1beta1TaskRunClient.Create(ctx, tc.tr, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, tc.tr, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun `%s`: %s", tc.tr.Name, err) } - if err := WaitForTaskRunState(ctx, c, tc.tr.Name, tc.fn(tc.tr.Name), "WaitTaskRunDone", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, tc.tr.Name, tc.fn(tc.tr.Name), "WaitTaskRunDone", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish: %s", err) return } - tr, err := c.V1beta1TaskRunClient.Get(ctx, tc.tr.Name, metav1.GetOptions{}) + tr, err := c.V1TaskRunClient.Get(ctx, tc.tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get TaskRun `%s`: %s", tc.tr.Name, err) } @@ -182,7 +182,7 @@ spec: } ignoreTerminatedFields := cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID") - ignoreStepFields := cmpopts.IgnoreFields(v1beta1.StepState{}, "ImageID", "Name", "ContainerName") + ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID", "Name", "ContainerName") if d := cmp.Diff(tr.Status.Steps, tc.expectedStepState, ignoreTerminatedFields, ignoreStepFields); d != "" { t.Fatalf("-got, +want: %v", d) } diff --git a/test/controller.go b/test/controller.go index cbf790d9e8c..a8567b3be7e 100644 --- a/test/controller.go +++ b/test/controller.go @@ -24,20 +24,22 @@ import ( // Link in the fakes so they get injected into injection.Fake "github.com/tektoncd/pipeline/pkg/apis/config" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" resolutionv1alpha1 "github.com/tektoncd/pipeline/pkg/apis/resolution/v1beta1" fakepipelineclientset "github.com/tektoncd/pipeline/pkg/client/clientset/versioned/fake" + informersv1 "github.com/tektoncd/pipeline/pkg/client/informers/externalversions/pipeline/v1" informersv1alpha1 "github.com/tektoncd/pipeline/pkg/client/informers/externalversions/pipeline/v1alpha1" informersv1beta1 "github.com/tektoncd/pipeline/pkg/client/informers/externalversions/pipeline/v1beta1" fakepipelineclient "github.com/tektoncd/pipeline/pkg/client/injection/client/fake" + fakepipelineinformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/pipeline/fake" + fakepipelineruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/pipelinerun/fake" + faketaskinformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/task/fake" + faketaskruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/taskrun/fake" fakeverificationpolicyinformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1alpha1/verificationpolicy/fake" fakeclustertaskinformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/clustertask/fake" fakecustomruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/customrun/fake" - fakepipelineinformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/pipeline/fake" - fakepipelineruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/pipelinerun/fake" - faketaskinformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/task/fake" - faketaskruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/taskrun/fake" fakeresolutionclientset "github.com/tektoncd/pipeline/pkg/client/resolution/clientset/versioned/fake" resolutioninformersv1alpha1 "github.com/tektoncd/pipeline/pkg/client/resolution/informers/externalversions/resolution/v1beta1" fakeresolutionrequestclient "github.com/tektoncd/pipeline/pkg/client/resolution/injection/client/fake" @@ -66,10 +68,10 @@ import ( // Data represents the desired state of the system (i.e. existing resources) to seed controllers // with. type Data struct { - PipelineRuns []*v1beta1.PipelineRun - Pipelines []*v1beta1.Pipeline - TaskRuns []*v1beta1.TaskRun - Tasks []*v1beta1.Task + PipelineRuns []*v1.PipelineRun + Pipelines []*v1.Pipeline + TaskRuns []*v1.TaskRun + Tasks []*v1.Task ClusterTasks []*v1beta1.ClusterTask CustomRuns []*v1beta1.CustomRun Pods []*corev1.Pod @@ -92,12 +94,12 @@ type Clients struct { // Informers holds references to informers which are useful for reconciler tests. type Informers struct { - PipelineRun informersv1beta1.PipelineRunInformer - Pipeline informersv1beta1.PipelineInformer - TaskRun informersv1beta1.TaskRunInformer + PipelineRun informersv1.PipelineRunInformer + Pipeline informersv1.PipelineInformer + TaskRun informersv1.TaskRunInformer Run informersv1alpha1.RunInformer CustomRun informersv1beta1.CustomRunInformer - Task informersv1beta1.TaskInformer + Task informersv1.TaskInformer ClusterTask informersv1beta1.ClusterTaskInformer Pod coreinformers.PodInformer ConfigMap coreinformers.ConfigMapInformer @@ -184,7 +186,7 @@ func SeedTestData(t *testing.T, ctx context.Context, d Data) (Clients, Informers CustomRun: fakecustomruninformer.Get(ctx), Task: faketaskinformer.Get(ctx), ClusterTask: fakeclustertaskinformer.Get(ctx), - Pod: fakefilteredpodinformer.Get(ctx, v1beta1.ManagedByLabelKey), + Pod: fakefilteredpodinformer.Get(ctx, v1.ManagedByLabelKey), ConfigMap: fakeconfigmapinformer.Get(ctx), ServiceAccount: fakeserviceaccountinformer.Get(ctx), LimitRange: fakelimitrangeinformer.Get(ctx), @@ -198,28 +200,28 @@ func SeedTestData(t *testing.T, ctx context.Context, d Data) (Clients, Informers c.Pipeline.PrependReactor("*", "pipelineruns", AddToInformer(t, i.PipelineRun.Informer().GetIndexer())) for _, pr := range d.PipelineRuns { pr := pr.DeepCopy() // Avoid assumptions that the informer's copy is modified. - if _, err := c.Pipeline.TektonV1beta1().PipelineRuns(pr.Namespace).Create(ctx, pr, metav1.CreateOptions{}); err != nil { + if _, err := c.Pipeline.TektonV1().PipelineRuns(pr.Namespace).Create(ctx, pr, metav1.CreateOptions{}); err != nil { t.Fatal(err) } } c.Pipeline.PrependReactor("*", "pipelines", AddToInformer(t, i.Pipeline.Informer().GetIndexer())) for _, p := range d.Pipelines { p := p.DeepCopy() // Avoid assumptions that the informer's copy is modified. - if _, err := c.Pipeline.TektonV1beta1().Pipelines(p.Namespace).Create(ctx, p, metav1.CreateOptions{}); err != nil { + if _, err := c.Pipeline.TektonV1().Pipelines(p.Namespace).Create(ctx, p, metav1.CreateOptions{}); err != nil { t.Fatal(err) } } c.Pipeline.PrependReactor("*", "taskruns", AddToInformer(t, i.TaskRun.Informer().GetIndexer())) for _, tr := range d.TaskRuns { tr := tr.DeepCopy() // Avoid assumptions that the informer's copy is modified. - if _, err := c.Pipeline.TektonV1beta1().TaskRuns(tr.Namespace).Create(ctx, tr, metav1.CreateOptions{}); err != nil { + if _, err := c.Pipeline.TektonV1().TaskRuns(tr.Namespace).Create(ctx, tr, metav1.CreateOptions{}); err != nil { t.Fatal(err) } } c.Pipeline.PrependReactor("*", "tasks", AddToInformer(t, i.Task.Informer().GetIndexer())) for _, ta := range d.Tasks { ta := ta.DeepCopy() // Avoid assumptions that the informer's copy is modified. - if _, err := c.Pipeline.TektonV1beta1().Tasks(ta.Namespace).Create(ctx, ta, metav1.CreateOptions{}); err != nil { + if _, err := c.Pipeline.TektonV1().Tasks(ta.Namespace).Create(ctx, ta, metav1.CreateOptions{}); err != nil { t.Fatal(err) } } diff --git a/test/controller_test.go b/test/controller_test.go index 1671978beec..1b229952633 100644 --- a/test/controller_test.go +++ b/test/controller_test.go @@ -21,7 +21,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/tektoncd/pipeline/pkg/apis/config" - fakepipelineruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1beta1/pipelinerun/fake" + fakepipelineruninformer "github.com/tektoncd/pipeline/pkg/client/injection/informers/pipeline/v1/pipelinerun/fake" ttesting "github.com/tektoncd/pipeline/pkg/reconciler/testing" appsv1 "k8s.io/api/apps/v1" corev1 "k8s.io/api/core/v1" diff --git a/test/conversion_test.go b/test/conversion_test.go index 07a93b3cd3d..96896acd296 100644 --- a/test/conversion_test.go +++ b/test/conversion_test.go @@ -33,19 +33,21 @@ import ( ) var ( - filterLabels = cmpopts.IgnoreFields(metav1.ObjectMeta{}, "Labels") - filterAnnotations = cmpopts.IgnoreFields(metav1.ObjectMeta{}, "Annotations") - filterV1TaskRunStatus = cmpopts.IgnoreFields(v1.TaskRunStatusFields{}, "StartTime", "CompletionTime") - filterV1PipelineRunStatus = cmpopts.IgnoreFields(v1.PipelineRunStatusFields{}, "StartTime", "CompletionTime") - filterV1beta1TaskRunStatus = cmpopts.IgnoreFields(v1beta1.TaskRunStatusFields{}, "StartTime", "CompletionTime") - filterV1beta1PipelineRunStatus = cmpopts.IgnoreFields(v1beta1.PipelineRunStatusFields{}, "StartTime", "CompletionTime") - filterContainerStateTerminated = cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID", "Message") - filterV1StepState = cmpopts.IgnoreFields(v1.StepState{}, "Name", "ImageID", "Container") - filterV1beta1StepState = cmpopts.IgnoreFields(v1beta1.StepState{}, "Name", "ImageID", "ContainerName") - filterV1TaskRunSA = cmpopts.IgnoreFields(v1.TaskRunSpec{}, "ServiceAccountName") - filterV1beta1TaskRunSA = cmpopts.IgnoreFields(v1beta1.TaskRunSpec{}, "ServiceAccountName") - filterV1PipelineRunSA = cmpopts.IgnoreFields(v1.PipelineTaskRunTemplate{}, "ServiceAccountName") - filterV1beta1PipelineRunSA = cmpopts.IgnoreFields(v1beta1.PipelineRunSpec{}, "ServiceAccountName") + filterLabels = cmpopts.IgnoreFields(metav1.ObjectMeta{}, "Labels") + filterAnnotations = cmpopts.IgnoreFields(metav1.ObjectMeta{}, "Annotations") + filterV1TaskRunStatus = cmpopts.IgnoreFields(v1.TaskRunStatusFields{}, "StartTime", "CompletionTime") + filterV1PipelineRunStatus = cmpopts.IgnoreFields(v1.PipelineRunStatusFields{}, "StartTime", "CompletionTime") + filterV1beta1TaskRunStatus = cmpopts.IgnoreFields(v1beta1.TaskRunStatusFields{}, "StartTime", "CompletionTime") + filterV1beta1PipelineRunStatus = cmpopts.IgnoreFields(v1beta1.PipelineRunStatusFields{}, "StartTime", "CompletionTime") + filterContainerStateTerminated = cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID", "Message") + filterV1StepState = cmpopts.IgnoreFields(v1.StepState{}, "Name", "ImageID", "Container") + filterV1beta1StepState = cmpopts.IgnoreFields(v1beta1.StepState{}, "Name", "ImageID", "ContainerName") + filterV1TaskRunSA = cmpopts.IgnoreFields(v1.TaskRunSpec{}, "ServiceAccountName") + filterV1beta1TaskRunSA = cmpopts.IgnoreFields(v1beta1.TaskRunSpec{}, "ServiceAccountName") + filterV1PipelineRunSA = cmpopts.IgnoreFields(v1.PipelineTaskRunTemplate{}, "ServiceAccountName") + filterV1beta1PipelineRunSA = cmpopts.IgnoreFields(v1beta1.PipelineRunSpec{}, "ServiceAccountName") + filterV1RefSourceImageDigest = cmpopts.IgnoreFields(v1.RefSource{}, "Digest") + filterV1beta1RefSourceImageDigest = cmpopts.IgnoreFields(v1beta1.RefSource{}, "Digest") filterMetadata = []cmp.Option{filterTypeMeta, filterObjectMeta, filterAnnotations} filterV1TaskRunFields = []cmp.Option{filterTypeMeta, filterObjectMeta, filterLabels, filterAnnotations, filterCondition, filterV1TaskRunStatus, filterContainerStateTerminated, filterV1StepState} @@ -555,7 +557,7 @@ status: childReferences: - name: %s-hello-task pipelineTaskName: hello-task - apiVersion: tekton.dev/v1beta1 + apiVersion: tekton.dev/v1 kind: TaskRun ` @@ -648,7 +650,7 @@ status: workspaces: - name: empty-dir childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: %s-hello-task pipelineTaskName: hello-task @@ -773,7 +775,7 @@ status: - name: name value: %s childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: %s-hello-world pipelineTaskName: hello-world @@ -849,7 +851,7 @@ status: - name: name value: %s childReferences: - - apiVersion: tekton.dev/v1beta1 + - apiVersion: tekton.dev/v1 kind: TaskRun name: %s-hello-world pipelineTaskName: hello-world @@ -1184,9 +1186,19 @@ func TestBundleConversion(t *testing.T) { v1TaskRunExpected.Status.Provenance = &v1.Provenance{ FeatureFlags: getFeatureFlagsBaseOnAPIFlag(t), + RefSource: &v1.RefSource{ + URI: repo, + Digest: map[string]string{"sha256": "a123"}, + EntryPoint: taskName, + }, } v1beta1TaskRunRoundTripExpected.Status.Provenance = &v1beta1.Provenance{ FeatureFlags: getFeatureFlagsBaseOnAPIFlag(t), + RefSource: &v1beta1.RefSource{ + URI: repo, + Digest: map[string]string{"sha256": "a123"}, + EntryPoint: taskName, + }, } if _, err := c.V1beta1TaskRunClient.Create(ctx, v1beta1TaskRun, metav1.CreateOptions{}); err != nil { @@ -1200,7 +1212,7 @@ func TestBundleConversion(t *testing.T) { if err != nil { t.Fatalf("Couldn't get expected v1 TaskRun for %s: %s", v1beta1TaskRunName, err) } - if d := cmp.Diff(v1TaskRunExpected, v1TaskRunGot, append(filterV1TaskRunFields, filterV1TaskRunSA)...); d != "" { + if d := cmp.Diff(v1TaskRunExpected, v1TaskRunGot, append([]cmp.Option{filterV1RefSourceImageDigest, filterV1TaskRunSA}, filterV1TaskRunFields...)...); d != "" { t.Errorf("-want, +got: %v", d) } @@ -1208,7 +1220,7 @@ func TestBundleConversion(t *testing.T) { if err := v1beta1TaskRunRoundTrip.ConvertFrom(context.Background(), v1TaskRunGot); err != nil { t.Fatalf("Failed to convert roundtrip v1beta1TaskRunGot ConvertFrom v1 = %v", err) } - if d := cmp.Diff(v1beta1TaskRunRoundTripExpected, v1beta1TaskRunRoundTrip, append(filterV1beta1TaskRunFields, filterV1beta1TaskRunSA)...); d != "" { + if d := cmp.Diff(v1beta1TaskRunRoundTripExpected, v1beta1TaskRunRoundTrip, append([]cmp.Option{filterV1beta1RefSourceImageDigest, filterV1beta1TaskRunSA}, filterV1beta1TaskRunFields...)...); d != "" { t.Errorf("-want, +got: %v", d) } @@ -1219,9 +1231,19 @@ func TestBundleConversion(t *testing.T) { v1PipelineRunExpected.Status.Provenance = &v1.Provenance{ FeatureFlags: getFeatureFlagsBaseOnAPIFlag(t), + RefSource: &v1.RefSource{ + URI: repo, + Digest: map[string]string{"sha256": "a123"}, + EntryPoint: pipelineName, + }, } v1beta1PRRoundTripExpected.Status.Provenance = &v1beta1.Provenance{ FeatureFlags: getFeatureFlagsBaseOnAPIFlag(t), + RefSource: &v1beta1.RefSource{ + URI: repo, + Digest: map[string]string{"sha256": "a123"}, + EntryPoint: pipelineName, + }, } if _, err := c.V1beta1PipelineRunClient.Create(ctx, v1beta1PipelineRun, metav1.CreateOptions{}); err != nil { @@ -1235,7 +1257,7 @@ func TestBundleConversion(t *testing.T) { if err != nil { t.Fatalf("Couldn't get expected v1 PipelineRun for %s: %s", v1beta1ToV1PipelineRunName, err) } - if d := cmp.Diff(v1PipelineRunExpected, v1PipelineRunGot, append(filterV1PipelineRunFields, filterV1PipelineRunSA)...); d != "" { + if d := cmp.Diff(v1PipelineRunExpected, v1PipelineRunGot, append([]cmp.Option{filterV1RefSourceImageDigest, filterV1PipelineRunSA}, filterV1PipelineRunFields...)...); d != "" { t.Errorf("-want, +got: %v", d) } @@ -1243,7 +1265,7 @@ func TestBundleConversion(t *testing.T) { if err := v1beta1PRRoundTrip.ConvertFrom(context.Background(), v1PipelineRunGot); err != nil { t.Fatalf("Error roundtrip v1beta1PipelineRun ConvertFrom v1PipelineRunGot = %v", err) } - if d := cmp.Diff(v1beta1PRRoundTripExpected, v1beta1PRRoundTrip, append(filterV1beta1PipelineRunFields, filterV1beta1PipelineRunSA)...); d != "" { + if d := cmp.Diff(v1beta1PRRoundTripExpected, v1beta1PRRoundTrip, append([]cmp.Option{filterV1beta1RefSourceImageDigest, filterV1beta1PipelineRunSA}, filterV1beta1PipelineRunFields...)...); d != "" { t.Errorf("-want, +got: %v", d) } } diff --git a/test/custom_task_test.go b/test/custom_task_test.go index e0218e998d3..67f81cc1a59 100644 --- a/test/custom_task_test.go +++ b/test/custom_task_test.go @@ -34,6 +34,7 @@ import ( "github.com/google/go-cmp/cmp/cmpopts" "github.com/tektoncd/pipeline/pkg/apis/config" "github.com/tektoncd/pipeline/pkg/apis/pipeline" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" "github.com/tektoncd/pipeline/test/diff" "github.com/tektoncd/pipeline/test/parse" @@ -44,7 +45,6 @@ import ( "k8s.io/client-go/kubernetes" "knative.dev/pkg/apis" duckv1 "knative.dev/pkg/apis/duck/v1" - v1 "knative.dev/pkg/apis/duck/v1" knativetest "knative.dev/pkg/test" "knative.dev/pkg/test/helpers" ) @@ -60,7 +60,7 @@ var ( filterObjectMeta = cmpopts.IgnoreFields(metav1.ObjectMeta{}, "ResourceVersion", "UID", "CreationTimestamp", "Generation", "ManagedFields") filterCondition = cmpopts.IgnoreFields(apis.Condition{}, "LastTransitionTime.Inner.Time", "Message") filterCustomRunStatus = cmpopts.IgnoreFields(v1beta1.CustomRunStatusFields{}, "StartTime", "CompletionTime") - filterPipelineRunStatus = cmpopts.IgnoreFields(v1beta1.PipelineRunStatusFields{}, "StartTime", "CompletionTime") + filterPipelineRunStatus = cmpopts.IgnoreFields(v1.PipelineRunStatusFields{}, "StartTime", "CompletionTime") ) func TestCustomTask(t *testing.T) { @@ -75,9 +75,9 @@ func TestCustomTask(t *testing.T) { metadataLabel := map[string]string{"test-label": "test"} // Create a PipelineRun that runs a Custom Task. pipelineRunName := helpers.ObjectNameForTest(t) - if _, err := c.V1beta1PipelineRunClient.Create( + if _, err := c.V1PipelineRunClient.Create( ctx, - parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s spec: @@ -122,12 +122,12 @@ spec: } // Wait for the PipelineRun to start. - if err := WaitForPipelineRunState(ctx, c, pipelineRunName, time.Minute, Running(pipelineRunName), "PipelineRunRunning", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRunName, time.Minute, Running(pipelineRunName), "PipelineRunRunning", v1Version); err != nil { t.Fatalf("Waiting for PipelineRun to start running: %v", err) } // Get the status of the PipelineRun. - pr, err := c.V1beta1PipelineRunClient.Get(ctx, pipelineRunName, metav1.GetOptions{}) + pr, err := c.V1PipelineRunClient.Get(ctx, pipelineRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get PipelineRun %q: %v", pipelineRunName, err) } @@ -191,12 +191,12 @@ spec: } } // Wait for the PipelineRun to become done/successful. - if err := WaitForPipelineRunState(ctx, c, pipelineRunName, time.Minute, PipelineRunSucceed(pipelineRunName), "PipelineRunCompleted", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRunName, time.Minute, PipelineRunSucceed(pipelineRunName), "PipelineRunCompleted", v1Version); err != nil { t.Fatalf("Waiting for PipelineRun to complete successfully: %v", err) } // Get the updated status of the PipelineRun. - pr, err = c.V1beta1PipelineRunClient.Get(ctx, pipelineRunName, metav1.GetOptions{}) + pr, err = c.V1PipelineRunClient.Get(ctx, pipelineRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get PipelineRun %q after it completed: %v", pipelineRunName, err) } @@ -214,16 +214,16 @@ spec: } // Get the TaskRun. - taskRun, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + taskRun, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get TaskRun %q: %v", taskRunName, err) } // Validate the task's result reference to the custom task's result was resolved. - expectedTaskRunParams := v1beta1.Params{{ - Name: "input-result-from-custom-task-ref", Value: *v1beta1.NewStructuredValues("aResultValue"), + expectedTaskRunParams := v1.Params{{ + Name: "input-result-from-custom-task-ref", Value: *v1.NewStructuredValues("aResultValue"), }, { - Name: "input-result-from-custom-task-spec", Value: *v1beta1.NewStructuredValues("aResultValue"), + Name: "input-result-from-custom-task-spec", Value: *v1.NewStructuredValues("aResultValue"), }} if d := cmp.Diff(expectedTaskRunParams, taskRun.Spec.Params); d != "" { @@ -232,18 +232,18 @@ spec: // Validate that the pipeline's result reference to the custom task's result was resolved. - expectedPipelineResults := []v1beta1.PipelineRunResult{{ + expectedPipelineResults := []v1.PipelineRunResult{{ Name: "prResult-ref", - Value: *v1beta1.NewStructuredValues("aResultValue"), + Value: *v1.NewStructuredValues("aResultValue"), }, { Name: "prResult-spec", - Value: *v1beta1.NewStructuredValues("aResultValue"), + Value: *v1.NewStructuredValues("aResultValue"), }} - if len(pr.Status.PipelineResults) != 2 { - t.Fatalf("Expected 2 PipelineResults but there are %d.", len(pr.Status.PipelineResults)) + if len(pr.Status.Results) != 2 { + t.Fatalf("Expected 2 PipelineResults but there are %d.", len(pr.Status.Results)) } - if d := cmp.Diff(expectedPipelineResults, pr.Status.PipelineResults); d != "" { + if d := cmp.Diff(expectedPipelineResults, pr.Status.Results); d != "" { t.Fatalf("Unexpected PipelineResults: %s", diff.PrintWantGot(d)) } } @@ -275,7 +275,7 @@ func TestPipelineRunCustomTaskTimeout(t *testing.T) { knativetest.CleanupOnInterrupt(func() { tearDown(context.Background(), t, c, namespace) }, t.Logf) defer tearDown(context.Background(), t, c, namespace) - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -286,28 +286,29 @@ spec: apiVersion: %s kind: %s `, helpers.ObjectNameForTest(t), namespace, betaAPIVersion, kind)) - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s spec: pipelineRef: name: %s - timeout: 5s + timeouts: + pipeline: 5s `, helpers.ObjectNameForTest(t), namespace, pipeline.Name)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", pipeline.Name, err) } - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", pipelineRun.Name, err) } t.Logf("Waiting for Pipelinerun %s in namespace %s to be started", pipelineRun.Name, namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, Running(pipelineRun.Name), "PipelineRunRunning", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, Running(pipelineRun.Name), "PipelineRunRunning", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to be running: %s", pipelineRun.Name, err) } - pr, err := c.V1beta1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}) + pr, err := c.V1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get PipelineRun %q: %v", pipelineRun.Name, err) } @@ -347,7 +348,7 @@ spec: } t.Logf("Waiting for PipelineRun %s in namespace %s to be timed out", pipelineRun.Name, namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1beta1.PipelineRunReasonTimedOut.String(), pipelineRun.Name), "PipelineRunTimedOut", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1.PipelineRunReasonTimedOut.String(), pipelineRun.Name), "PipelineRunTimedOut", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun %s to finish: %s", pipelineRun.Name, err) } @@ -370,7 +371,7 @@ spec: } wg.Wait() - if _, err := c.V1beta1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}); err != nil { t.Fatalf("Failed to get PipelineRun `%s`: %s", pipelineRun.Name, err) } } @@ -386,7 +387,7 @@ func applyV1Beta1Controller(t *testing.T) { } } -func cleanUpV1Beta1Controller(t *testing.T) { +func cleanUpV1beta1Controller(t *testing.T) { t.Helper() t.Log("Tearing down Wait v1beta1.CustomRun Custom Task Controller...") cmd := exec.Command("ko", "delete", "-f", "./config/controller.yaml") @@ -397,7 +398,7 @@ func cleanUpV1Beta1Controller(t *testing.T) { } } -func TestWaitCustomTask_V1Beta1_PipelineRun(t *testing.T) { +func TestWaitCustomTask_V1_PipelineRun(t *testing.T) { ctx := context.Background() ctx, cancel := context.WithCancel(ctx) defer cancel() @@ -408,7 +409,7 @@ func TestWaitCustomTask_V1Beta1_PipelineRun(t *testing.T) { // Create a custom task controller applyV1Beta1Controller(t) // Cleanup the controller after finishing the test - defer cleanUpV1Beta1Controller(t) + defer cleanUpV1beta1Controller(t) featureFlags := getFeatureFlagsBaseOnAPIFlag(t) @@ -433,7 +434,7 @@ func TestWaitCustomTask_V1Beta1_PipelineRun(t *testing.T) { Reason: "Succeeded", }, wantCustomRunStatus: v1beta1.CustomRunStatus{ - Status: v1.Status{ + Status: duckv1.Status{ Conditions: []apis.Condition{ { Type: apis.ConditionSucceeded, @@ -455,7 +456,7 @@ func TestWaitCustomTask_V1Beta1_PipelineRun(t *testing.T) { Reason: "Running", }, wantCustomRunStatus: v1beta1.CustomRunStatus{ - Status: v1.Status{ + Status: duckv1.Status{ Conditions: []apis.Condition{ { Type: apis.ConditionSucceeded, @@ -477,7 +478,7 @@ func TestWaitCustomTask_V1Beta1_PipelineRun(t *testing.T) { Reason: "PipelineRunTimeout", }, wantCustomRunStatus: v1beta1.CustomRunStatus{ - Status: v1.Status{ + Status: duckv1.Status{ Conditions: []apis.Condition{ { Type: apis.ConditionSucceeded, @@ -499,7 +500,7 @@ func TestWaitCustomTask_V1Beta1_PipelineRun(t *testing.T) { Reason: "Failed", }, wantCustomRunStatus: v1beta1.CustomRunStatus{ - Status: v1.Status{ + Status: duckv1.Status{ Conditions: []apis.Condition{ { Type: apis.ConditionSucceeded, @@ -522,7 +523,7 @@ func TestWaitCustomTask_V1Beta1_PipelineRun(t *testing.T) { Reason: "Failed", }, wantCustomRunStatus: v1beta1.CustomRunStatus{ - Status: v1.Status{ + Status: duckv1.Status{ Conditions: []apis.Condition{ { Type: apis.ConditionSucceeded, @@ -535,7 +536,7 @@ func TestWaitCustomTask_V1Beta1_PipelineRun(t *testing.T) { }, wantRetriesStatus: []v1beta1.CustomRunStatus{ { - Status: v1.Status{ + Status: duckv1.Status{ Conditions: []apis.Condition{ { Type: apis.ConditionSucceeded, @@ -552,56 +553,58 @@ func TestWaitCustomTask_V1Beta1_PipelineRun(t *testing.T) { if tc.prTimeout == nil { tc.prTimeout = &metav1.Duration{Duration: time.Minute} } - p := &v1beta1.Pipeline{ + p := &v1.Pipeline{ ObjectMeta: metav1.ObjectMeta{ Name: helpers.ObjectNameForTest(t), Namespace: namespace, }, - Spec: v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{{ + Spec: v1.PipelineSpec{ + Tasks: []v1.PipelineTask{{ Name: "wait", Timeout: tc.customRunTimeout, Retries: tc.customRunRetries, - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ APIVersion: betaAPIVersion, Kind: kind, }, - Params: v1beta1.Params{{Name: "duration", Value: v1beta1.ParamValue{Type: "string", StringVal: tc.customRunDuration}}}, + Params: v1.Params{{Name: "duration", Value: v1.ParamValue{Type: "string", StringVal: tc.customRunDuration}}}, }}, }, } - pipelineRun := &v1beta1.PipelineRun{ + pipelineRun := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: helpers.ObjectNameForTest(t), Namespace: namespace, }, - Spec: v1beta1.PipelineRunSpec{ - PipelineRef: &v1beta1.PipelineRef{ + Spec: v1.PipelineRunSpec{ + PipelineRef: &v1.PipelineRef{ Name: p.Name, }, - Timeout: tc.prTimeout, + Timeouts: &v1.TimeoutFields{ + Pipeline: tc.prTimeout, + }, }, } - if _, err := c.V1beta1PipelineClient.Create(ctx, p, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, p, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline %q: %v", p.Name, err) } - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun %q: %v", pipelineRun.Name, err) } // Wait for the PipelineRun to the desired state - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, tc.prConditionAccessorFn(pipelineRun.Name), string(tc.wantPrCondition.Type), v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, tc.prConditionAccessorFn(pipelineRun.Name), string(tc.wantPrCondition.Type), v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %q completion to be %s: %s", pipelineRun.Name, string(tc.wantPrCondition.Type), err) } // Get actual pipelineRun - gotPipelineRun, err := c.V1beta1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}) + gotPipelineRun, err := c.V1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get PipelineRun %q: %v", pipelineRun.Name, err) } // Start to compose expected PipelineRun - wantPipelineRun := &v1beta1.PipelineRun{ + wantPipelineRun := &v1.PipelineRun{ ObjectMeta: metav1.ObjectMeta{ Name: pipelineRun.Name, Namespace: pipelineRun.Namespace, @@ -609,36 +612,40 @@ func TestWaitCustomTask_V1Beta1_PipelineRun(t *testing.T) { "tekton.dev/pipeline": p.Name, }, }, - Spec: v1beta1.PipelineRunSpec{ - ServiceAccountName: "default", - PipelineRef: &v1beta1.PipelineRef{Name: p.Name}, - Timeout: tc.prTimeout, + Spec: v1.PipelineRunSpec{ + TaskRunTemplate: v1.PipelineTaskRunTemplate{ + ServiceAccountName: "default", + }, + PipelineRef: &v1.PipelineRef{Name: p.Name}, + Timeouts: &v1.TimeoutFields{ + Pipeline: tc.prTimeout, + }, }, - Status: v1beta1.PipelineRunStatus{ + Status: v1.PipelineRunStatus{ Status: duckv1.Status{ Conditions: []apis.Condition{ tc.wantPrCondition, }, }, - PipelineRunStatusFields: v1beta1.PipelineRunStatusFields{ - PipelineSpec: &v1beta1.PipelineSpec{ - Tasks: []v1beta1.PipelineTask{ + PipelineRunStatusFields: v1.PipelineRunStatusFields{ + PipelineSpec: &v1.PipelineSpec{ + Tasks: []v1.PipelineTask{ { Name: "wait", Timeout: tc.customRunTimeout, Retries: tc.customRunRetries, - TaskRef: &v1beta1.TaskRef{ + TaskRef: &v1.TaskRef{ APIVersion: betaAPIVersion, Kind: kind, }, - Params: v1beta1.Params{{ + Params: v1.Params{{ Name: "duration", - Value: v1beta1.ParamValue{Type: "string", StringVal: tc.customRunDuration}, + Value: v1.ParamValue{Type: "string", StringVal: tc.customRunDuration}, }}, }, }, }, - Provenance: &v1beta1.Provenance{ + Provenance: &v1.Provenance{ FeatureFlags: featureFlags, }, }, @@ -652,7 +659,7 @@ func TestWaitCustomTask_V1Beta1_PipelineRun(t *testing.T) { t.Fatalf("PipelineRun had unexpected .status.childReferences; got %d, want 1", len(gotPipelineRun.Status.ChildReferences)) } wantCustomRunName := gotPipelineRun.Status.ChildReferences[0].Name - wantPipelineRun.Status.PipelineRunStatusFields.ChildReferences = []v1beta1.ChildStatusReference{{ + wantPipelineRun.Status.PipelineRunStatusFields.ChildReferences = []v1.ChildStatusReference{{ TypeMeta: runtime.TypeMeta{ APIVersion: v1beta1.SchemeGroupVersion.String(), Kind: pipeline.CustomRunControllerName, diff --git a/test/dag_test.go b/test/dag_test.go index ce38c0c1b89..e5fc176243e 100644 --- a/test/dag_test.go +++ b/test/dag_test.go @@ -28,7 +28,7 @@ import ( "testing" "time" - clientset "github.com/tektoncd/pipeline/pkg/client/clientset/versioned/typed/pipeline/v1beta1" + clientset "github.com/tektoncd/pipeline/pkg/client/clientset/versioned/typed/pipeline/v1" "github.com/tektoncd/pipeline/test/parse" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" knativetest "knative.dev/pkg/test" @@ -58,7 +58,7 @@ func TestDAGPipelineRun(t *testing.T) { knativetest.CleanupOnInterrupt(func() { tearDown(ctx, t, c, namespace) }, t.Logf) defer tearDown(ctx, t, c, namespace) - echoTask := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + echoTask := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -79,13 +79,13 @@ spec: sleep %d echo $(params.text) | tee $(results.result.path) `, helpers.ObjectNameForTest(t), namespace, int(sleepDuration.Seconds()))) - if _, err := c.V1beta1TaskClient.Create(ctx, echoTask, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, echoTask, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create echo Task: %s", err) } // Intentionally declaring Tasks in a mixed up order to ensure the order // of execution isn't at all dependent on the order they are declared in - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -132,10 +132,10 @@ spec: taskRef: name: %s `, helpers.ObjectNameForTest(t), namespace, echoTask.Name, echoTask.Name, echoTask.Name, echoTask.Name, echoTask.Name)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create dag-pipeline: %s", err) } - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -143,15 +143,15 @@ spec: pipelineRef: name: %s `, helpers.ObjectNameForTest(t), namespace, pipeline.Name)) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create dag-pipeline-run PipelineRun: %s", err) } t.Logf("Waiting for DAG pipeline to complete") - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunSucceed(pipelineRun.Name), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunSucceed(pipelineRun.Name), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun to finish: %s", err) } - verifyExpectedOrder(ctx, t, c.V1beta1TaskRunClient, pipelineRun.Name) + verifyExpectedOrder(ctx, t, c.V1TaskRunClient, pipelineRun.Name) } func verifyExpectedOrder(ctx context.Context, t *testing.T, c clientset.TaskRunInterface, prName string) { diff --git a/test/duplicate_test.go b/test/duplicate_test.go index 3e9d173e688..508c80735b4 100644 --- a/test/duplicate_test.go +++ b/test/duplicate_test.go @@ -52,7 +52,7 @@ func TestDuplicatePodTaskRun(t *testing.T) { taskrunName := helpers.ObjectNameForTest(t) t.Logf("Creating taskrun %q.", taskrunName) - taskrun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskrun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -63,13 +63,13 @@ spec: command: ['/bin/echo'] args: ['simple'] `, taskrunName, namespace)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskrun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskrun, metav1.CreateOptions{}); err != nil { t.Fatalf("Error creating taskrun: %v", err) } go func(t *testing.T) { //nolint:thelper defer wg.Done() - if err := WaitForTaskRunState(ctx, c, taskrunName, TaskRunSucceed(taskrunName), "TaskRunDuplicatePodTaskRunFailed", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskrunName, TaskRunSucceed(taskrunName), "TaskRunDuplicatePodTaskRunFailed", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish: %s", err) return } diff --git a/test/entrypoint_test.go b/test/entrypoint_test.go index c3ef1e92d61..26454d8938f 100644 --- a/test/entrypoint_test.go +++ b/test/entrypoint_test.go @@ -47,7 +47,7 @@ func TestEntrypointRunningStepsInOrder(t *testing.T) { epTaskRunName := helpers.ObjectNameForTest(t) t.Logf("Creating TaskRun in namespace %s", namespace) - if _, err := c.V1beta1TaskRunClient.Create(ctx, parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + if _, err := c.V1TaskRunClient.Create(ctx, parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -65,7 +65,7 @@ spec: } t.Logf("Waiting for TaskRun in namespace %s to finish successfully", namespace) - if err := WaitForTaskRunState(ctx, c, epTaskRunName, TaskRunSucceed(epTaskRunName), "TaskRunSuccess", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, epTaskRunName, TaskRunSucceed(epTaskRunName), "TaskRunSuccess", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish successfully: %s", err) } } diff --git a/test/examples_test.go b/test/examples_test.go index 6dd4703ea72..f929b07eb45 100644 --- a/test/examples_test.go +++ b/test/examples_test.go @@ -36,7 +36,6 @@ import ( var ( defaultKoDockerRepoRE = regexp.MustCompile("gcr.io/christiewilson-catfactory") - v1Version = "v1" imagesMappingRE = getImagesMappingRE() ) diff --git a/test/hermetic_taskrun_test.go b/test/hermetic_taskrun_test.go index f88ee7cf5a9..2f262798066 100644 --- a/test/hermetic_taskrun_test.go +++ b/test/hermetic_taskrun_test.go @@ -24,7 +24,7 @@ import ( "fmt" "testing" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/parse" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) @@ -43,7 +43,7 @@ func TestHermeticTaskRun(t *testing.T) { tests := []struct { desc string - getTaskRun func(*testing.T, string, string, string) *v1beta1.TaskRun + getTaskRun func(*testing.T, string, string, string) *v1.TaskRun }{ { desc: "run-as-root", @@ -60,10 +60,10 @@ func TestHermeticTaskRun(t *testing.T) { regularTaskRunName := fmt.Sprintf("not-hermetic-%s", test.desc) regularTaskRun := test.getTaskRun(t, regularTaskRunName, namespace, "") t.Logf("Creating TaskRun %s, hermetic=false", regularTaskRunName) - if _, err := c.V1beta1TaskRunClient.Create(ctx, regularTaskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, regularTaskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun `%s`: %s", regularTaskRunName, err) } - if err := WaitForTaskRunState(ctx, c, regularTaskRunName, Succeed(regularTaskRunName), "TaskRunCompleted", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, regularTaskRunName, Succeed(regularTaskRunName), "TaskRunCompleted", v1Version); err != nil { t.Errorf("Error waiting for TaskRun %s to finish: %s", regularTaskRunName, err) } @@ -72,19 +72,19 @@ func TestHermeticTaskRun(t *testing.T) { hermeticTaskRunName := fmt.Sprintf("hermetic-should-fail-%s", test.desc) hermeticTaskRun := test.getTaskRun(t, hermeticTaskRunName, namespace, "hermetic") t.Logf("Creating TaskRun %s, hermetic=true", hermeticTaskRunName) - if _, err := c.V1beta1TaskRunClient.Create(ctx, hermeticTaskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, hermeticTaskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun `%s`: %s", regularTaskRun.Name, err) } - if err := WaitForTaskRunState(ctx, c, hermeticTaskRunName, Failed(hermeticTaskRunName), "Failed", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, hermeticTaskRunName, Failed(hermeticTaskRunName), "Failed", v1Version); err != nil { t.Errorf("Error waiting for TaskRun %s to fail: %s", hermeticTaskRunName, err) } }) } } -func taskRun(t *testing.T, name, namespace, executionMode string) *v1beta1.TaskRun { +func taskRun(t *testing.T, name, namespace, executionMode string) *v1.TaskRun { t.Helper() - return parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + return parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: annotations: experimental.tekton.dev/execution-mode: %s @@ -106,9 +106,9 @@ spec: `, executionMode, name, namespace)) } -func unpriviligedTaskRun(t *testing.T, name, namespace, executionMode string) *v1beta1.TaskRun { +func unpriviligedTaskRun(t *testing.T, name, namespace, executionMode string) *v1.TaskRun { t.Helper() - return parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + return parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: annotations: experimental.tekton.dev/execution-mode: %s diff --git a/test/ignore_step_error_test.go b/test/ignore_step_error_test.go index f6421fac751..0ba770e96ec 100644 --- a/test/ignore_step_error_test.go +++ b/test/ignore_step_error_test.go @@ -25,7 +25,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/diff" "github.com/tektoncd/pipeline/test/parse" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -41,7 +41,7 @@ func TestFailingStepOnContinue(t *testing.T) { knativetest.CleanupOnInterrupt(func() { tearDown(ctx, t, c, namespace) }, t.Logf) defer tearDown(ctx, t, c, namespace) taskRunName := "mytaskrun" - tr := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + tr := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -57,16 +57,16 @@ spec: script: 'echo -n 123 | tee $(results.result1.path); exit 1; echo -n 456 | tee $(results.result2.path)' `, taskRunName, namespace)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, tr, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, tr, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to finish", namespace) - if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "TaskRunSucceeded", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "TaskRunSucceeded", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish: %s", err) } - taskRun, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + taskRun, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected TaskRun %s: %s", taskRunName, err) } @@ -75,13 +75,13 @@ spec: t.Fatalf("Expected TaskRun %s to have succeeded but Status is %v", taskRunName, taskRun.Status) } - expectedResults := []v1beta1.TaskRunResult{{ + expectedResults := []v1.TaskRunResult{{ Name: "result1", Type: "string", - Value: *v1beta1.NewArrayOrString("123"), + Value: *v1.NewStructuredValues("123"), }} - if d := cmp.Diff(expectedResults, taskRun.Status.TaskRunResults); d != "" { + if d := cmp.Diff(expectedResults, taskRun.Status.Results); d != "" { t.Errorf("Got unexpected results %s", diff.PrintWantGot(d)) } } diff --git a/test/larger_results_sidecar_logs_test.go b/test/larger_results_sidecar_logs_test.go index 11acafe5af1..5cd4845b8fc 100644 --- a/test/larger_results_sidecar_logs_test.go +++ b/test/larger_results_sidecar_logs_test.go @@ -28,7 +28,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/tektoncd/pipeline/pkg/apis/config" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/parse" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "knative.dev/pkg/system" @@ -36,8 +36,8 @@ import ( ) var ( - ignoreTaskRunStatusFields = cmpopts.IgnoreFields(v1beta1.TaskRunStatusFields{}, "Steps", "TaskRunResults") - ignoreSidecarState = cmpopts.IgnoreFields(v1beta1.SidecarState{}, "ImageID") + ignoreTaskRunStatusFields = cmpopts.IgnoreFields(v1.TaskRunStatusFields{}, "Steps", "Results") + ignoreSidecarState = cmpopts.IgnoreFields(v1.SidecarState{}, "ImageID") requireSidecarLogResultsGate = map[string]string{ "results-from": "sidecar-logs", @@ -51,7 +51,7 @@ func TestLargerResultsSidecarLogs(t *testing.T) { type tests struct { name string pipelineName string - pipelineRunFunc func(*testing.T, string) (*v1beta1.PipelineRun, *v1beta1.PipelineRun, []*v1beta1.TaskRun) + pipelineRunFunc func(*testing.T, string) (*v1.PipelineRun, *v1.PipelineRun, []*v1.TaskRun) } tds := []tests{{ @@ -80,21 +80,21 @@ func TestLargerResultsSidecarLogs(t *testing.T) { t.Logf("Setting up test resources for %q test in namespace %s", td.name, namespace) pipelineRun, expectedResolvedPipelineRun, expectedTaskRuns := td.pipelineRunFunc(t, namespace) - expectedResolvedPipelineRun.Status.Provenance = &v1beta1.Provenance{ + expectedResolvedPipelineRun.Status.Provenance = &v1.Provenance{ FeatureFlags: expectedFeatureFlags, } prName := pipelineRun.Name - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", prName, err) } - cl, _ := c.V1beta1PipelineRunClient.Get(ctx, prName, metav1.GetOptions{}) + cl, _ := c.V1PipelineRunClient.Get(ctx, prName, metav1.GetOptions{}) d := cmp.Diff(expectedResolvedPipelineRun, cl, ignoreTypeMeta, ignoreObjectMeta, @@ -109,11 +109,11 @@ func TestLargerResultsSidecarLogs(t *testing.T) { t.Fatalf(`The resolved spec does not match the expected spec. Here is the diff: %v`, d) } for _, tr := range expectedTaskRuns { - tr.Status.Provenance = &v1beta1.Provenance{ + tr.Status.Provenance = &v1.Provenance{ FeatureFlags: expectedFeatureFlags, } t.Logf("Checking Taskrun %s", tr.Name) - taskrun, _ := c.V1beta1TaskRunClient.Get(ctx, tr.Name, metav1.GetOptions{}) + taskrun, _ := c.V1TaskRunClient.Get(ctx, tr.Name, metav1.GetOptions{}) d = cmp.Diff(tr, taskrun, ignoreTypeMeta, ignoreObjectMeta, @@ -134,9 +134,9 @@ func TestLargerResultsSidecarLogs(t *testing.T) { } } -func getLargerResultsPipelineRun(t *testing.T, namespace string) (*v1beta1.PipelineRun, *v1beta1.PipelineRun, []*v1beta1.TaskRun) { +func getLargerResultsPipelineRun(t *testing.T, namespace string) (*v1.PipelineRun, *v1.PipelineRun, []*v1.TaskRun) { t.Helper() - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: larger-results-sidecar-logs namespace: %s @@ -180,13 +180,15 @@ spec: - name: large-result value: $(tasks.task2.results.large-result) `, namespace, strings.Repeat("a", 2000), strings.Repeat("b", 2000))) - expectedPipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + expectedPipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: larger-results-sidecar-logs namespace: %s spec: - serviceAccountName: default - timeout: 1h + taskRunTemplate: + serviceAccountName: default + timeouts: + pipeline: 1h pipelineSpec: tasks: - name: task1 @@ -270,11 +272,11 @@ status: results: - name: large-result value: $(tasks.task2.results.large-result) - pipelineResults: + results: - name: large-result value: %s%s `, namespace, strings.Repeat("a", 2000), strings.Repeat("b", 2000), strings.Repeat("a", 2000), strings.Repeat("b", 2000), strings.Repeat("a", 2000), strings.Repeat("b", 2000))) - taskRun1 := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun1 := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: larger-results-sidecar-logs-task1 namespace: %s @@ -311,7 +313,7 @@ status: script: | echo -n "%s"| tee /tekton/results/result1; echo -n "%s"| tee /tekton/results/result2; - taskResults: + results: - name: result1 type: string value: %s @@ -322,7 +324,7 @@ status: - name: tekton-log-results container: sidecar-tekton-log-results `, namespace, strings.Repeat("a", 2000), strings.Repeat("b", 2000), strings.Repeat("a", 2000), strings.Repeat("b", 2000), strings.Repeat("a", 2000), strings.Repeat("b", 2000))) - taskRun2 := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun2 := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: larger-results-sidecar-logs-task2 namespace: %s @@ -376,7 +378,7 @@ status: script: | echo -n "%s">> /tekton/results/large-result; echo -n "%s">> /tekton/results/large-result; - taskResults: + results: - name: large-result type: string value: %s%s @@ -384,7 +386,7 @@ status: - name: tekton-log-results container: sidecar-tekton-log-results `, namespace, strings.Repeat("a", 2000), strings.Repeat("b", 2000), strings.Repeat("a", 2000), strings.Repeat("b", 2000), strings.Repeat("a", 2000), strings.Repeat("b", 2000))) - return pipelineRun, expectedPipelineRun, []*v1beta1.TaskRun{taskRun1, taskRun2} + return pipelineRun, expectedPipelineRun, []*v1.TaskRun{taskRun1, taskRun2} } func setUpSidecarLogs(ctx context.Context, t *testing.T, fn ...func(context.Context, *testing.T, *clients, string)) (*clients, string) { diff --git a/test/pipelinefinally_test.go b/test/pipelinefinally_test.go index 2ad51521d08..1d2f64a2ea2 100644 --- a/test/pipelinefinally_test.go +++ b/test/pipelinefinally_test.go @@ -25,7 +25,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/reconciler/pipelinerun/resources" "github.com/tektoncd/pipeline/test/diff" "github.com/tektoncd/pipeline/test/parse" @@ -52,50 +52,50 @@ func TestPipelineLevelFinally_OneDAGTaskFailed_InvalidTaskResult_Failure(t *test defer tearDown(ctx, t, c, namespace) task := getFailTask(t, namespace) - task.Spec.Results = append(task.Spec.Results, v1beta1.TaskResult{ + task.Spec.Results = append(task.Spec.Results, v1.TaskResult{ Name: "result", }) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create dag Task: %s", err) } delayedTask := getDelaySuccessTask(t, namespace) - if _, err := c.V1beta1TaskClient.Create(ctx, delayedTask, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, delayedTask, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create dag Task: %s", err) } successTask := getSuccessTask(t, namespace) - successTask.Spec.Results = append(successTask.Spec.Results, v1beta1.TaskResult{ + successTask.Spec.Results = append(successTask.Spec.Results, v1.TaskResult{ Name: "result", }) - if _, err := c.V1beta1TaskClient.Create(ctx, successTask, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, successTask, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create final Task: %s", err) } finalTaskWithStatus := getTaskVerifyingStatus(t, namespace) - if _, err := c.V1beta1TaskClient.Create(ctx, finalTaskWithStatus, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, finalTaskWithStatus, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create final Task checking executing status: %s", err) } taskProducingResult := getSuccessTaskProducingResults(t, namespace) - taskProducingResult.Spec.Results = append(taskProducingResult.Spec.Results, v1beta1.TaskResult{ + taskProducingResult.Spec.Results = append(taskProducingResult.Spec.Results, v1.TaskResult{ Name: "result", }) - if _, err := c.V1beta1TaskClient.Create(ctx, taskProducingResult, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, taskProducingResult, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task producing task results: %s", err) } taskConsumingResultInParam := getSuccessTaskConsumingResults(t, namespace, "dagtask-result") - if _, err := c.V1beta1TaskClient.Create(ctx, taskConsumingResultInParam, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, taskConsumingResultInParam, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task consuming task results in param: %s", err) } taskConsumingResultInWhenExpression := getSuccessTask(t, namespace) - if _, err := c.V1beta1TaskClient.Create(ctx, taskConsumingResultInWhenExpression, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, taskConsumingResultInWhenExpression, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task consuming task results in when expressions: %s", err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -216,26 +216,26 @@ spec: taskConsumingResultInWhenExpression.Name, // Tasks task.Name, delayedTask.Name, successTask.Name, successTask.Name, taskProducingResult.Name)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline: %s", err) } pipelineRun := getPipelineRun(t, namespace, pipeline.Name) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline Run `%s`: %s", pipelineRun.Name, err) } - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunFailed(pipelineRun.Name), "PipelineRunFailed", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunFailed(pipelineRun.Name), "PipelineRunFailed", v1Version); err != nil { t.Fatalf("Waiting for PipelineRun %s to fail: %v", pipelineRun.Name, err) } // Get the status of the PipelineRun. - pr, err := c.V1beta1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}) + pr, err := c.V1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get PipelineRun %q: %v", pipelineRun.Name, err) } - taskrunList, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) + taskrunList, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", pipelineRun.Name, err) } @@ -262,34 +262,34 @@ spec: } dagTask1EndTime = taskrunItem.Status.CompletionTime case n == "dagtask2": - if err := WaitForTaskRunState(ctx, c, taskrunItem.Name, TaskRunSucceed(taskrunItem.Name), "TaskRunSuccess", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskrunItem.Name, TaskRunSucceed(taskrunItem.Name), "TaskRunSuccess", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to succeed: %v", err) } dagTask2EndTime = taskrunItem.Status.CompletionTime case n == "dagtask4": t.Fatalf("task %s should have skipped due to when expression", n) case n == "dagtask5": - if err := WaitForTaskRunState(ctx, c, taskrunItem.Name, TaskRunSucceed(taskrunItem.Name), "TaskRunSuccess", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskrunItem.Name, TaskRunSucceed(taskrunItem.Name), "TaskRunSuccess", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to succeed: %v", err) } case n == "finaltask1": - if err := WaitForTaskRunState(ctx, c, taskrunItem.Name, TaskRunSucceed(taskrunItem.Name), "TaskRunSuccess", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskrunItem.Name, TaskRunSucceed(taskrunItem.Name), "TaskRunSuccess", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to succeed: %v", err) } finalTaskStartTime = taskrunItem.Status.StartTime case n == "finaltask2": - if err := WaitForTaskRunState(ctx, c, taskrunItem.Name, TaskRunSucceed(taskrunItem.Name), "TaskRunSuccess", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskrunItem.Name, TaskRunSucceed(taskrunItem.Name), "TaskRunSuccess", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to succeed: %v", err) } for _, p := range taskrunItem.Spec.Params { switch param := p.Name; param { case "dagtask1-status": - if p.Value.StringVal != v1beta1.TaskRunReasonFailed.String() { - t.Errorf("Task param \"%s\" is set to \"%s\", expected it to resolve to \"%s\"", param, p.Value.StringVal, v1beta1.TaskRunReasonFailed.String()) + if p.Value.StringVal != v1.TaskRunReasonFailed.String() { + t.Errorf("Task param \"%s\" is set to \"%s\", expected it to resolve to \"%s\"", param, p.Value.StringVal, v1.TaskRunReasonFailed.String()) } case "dagtask2-status": - if p.Value.StringVal != v1beta1.TaskRunReasonSuccessful.String() { - t.Errorf("Task param \"%s\" is set to \"%s\", expected it to resolve to \"%s\"", param, p.Value.StringVal, v1beta1.TaskRunReasonSuccessful.String()) + if p.Value.StringVal != v1.TaskRunReasonSuccessful.String() { + t.Errorf("Task param \"%s\" is set to \"%s\", expected it to resolve to \"%s\"", param, p.Value.StringVal, v1.TaskRunReasonSuccessful.String()) } case "dagtask3-status": @@ -297,13 +297,13 @@ spec: t.Errorf("Task param \"%s\" is set to \"%s\", expected it to resolve to \"%s\"", param, p.Value.StringVal, resources.PipelineTaskStateNone) } case "dagtasks-aggregate-status": - if p.Value.StringVal != v1beta1.PipelineRunReasonFailed.String() { - t.Errorf("Task param \"%s\" is set to \"%s\", expected it to resolve to \"%s\"", param, p.Value.StringVal, v1beta1.PipelineRunReasonFailed.String()) + if p.Value.StringVal != v1.PipelineRunReasonFailed.String() { + t.Errorf("Task param \"%s\" is set to \"%s\", expected it to resolve to \"%s\"", param, p.Value.StringVal, v1.PipelineRunReasonFailed.String()) } } } case n == "finaltaskconsumingdagtask5": - if err := WaitForTaskRunState(ctx, c, taskrunItem.Name, TaskRunSucceed(taskrunItem.Name), "TaskRunSuccess", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskrunItem.Name, TaskRunSucceed(taskrunItem.Name), "TaskRunSuccess", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to succeed: %v", err) } for _, p := range taskrunItem.Spec.Params { @@ -335,43 +335,43 @@ spec: // two final tasks referring to results must be skipped // finaltaskconsumingdagtask1 has a reference to a task result from failed task // finaltaskconsumingdagtask4 has a reference to a task result from skipped task with when expression - expectedSkippedTasks := []v1beta1.SkippedTask{{ + expectedSkippedTasks := []v1.SkippedTask{{ Name: "dagtask3", - Reason: v1beta1.StoppingSkip, - WhenExpressions: v1beta1.WhenExpressions{{ + Reason: v1.StoppingSkip, + WhenExpressions: v1.WhenExpressions{{ Input: "banana", Operator: "in", Values: []string{"apple"}, }}, }, { Name: "dagtask4", - Reason: v1beta1.StoppingSkip, - WhenExpressions: v1beta1.WhenExpressions{{ + Reason: v1.StoppingSkip, + WhenExpressions: v1.WhenExpressions{{ Input: "foo", Operator: "notin", Values: []string{"foo"}, }}, }, { Name: "finaltaskconsumingdagtask1", - Reason: v1beta1.MissingResultsSkip, + Reason: v1.MissingResultsSkip, }, { Name: "finaltaskconsumingdagtask4", - Reason: v1beta1.MissingResultsSkip, + Reason: v1.MissingResultsSkip, }, { Name: "guardedfinaltaskconsumingdagtask4", - Reason: v1beta1.MissingResultsSkip, + Reason: v1.MissingResultsSkip, }, { Name: "guardedfinaltaskusingdagtask5result2", - Reason: v1beta1.WhenExpressionsSkip, - WhenExpressions: v1beta1.WhenExpressions{{ + Reason: v1.WhenExpressionsSkip, + WhenExpressions: v1.WhenExpressions{{ Input: "Hello", Operator: "notin", Values: []string{"Hello"}, }}, }, { Name: "guardedfinaltaskusingdagtask5status2", - Reason: v1beta1.WhenExpressionsSkip, - WhenExpressions: v1beta1.WhenExpressions{{ + Reason: v1.WhenExpressionsSkip, + WhenExpressions: v1.WhenExpressions{{ Input: "Succeeded", Operator: "in", Values: []string{"Failed"}, @@ -384,7 +384,7 @@ spec: actualSkippedTasks := pr.Status.SkippedTasks // Sort tasks based on their names to get similar order as in expected list - if d := cmp.Diff(actualSkippedTasks, expectedSkippedTasks, cmpopts.SortSlices(func(i, j v1beta1.SkippedTask) bool { + if d := cmp.Diff(actualSkippedTasks, expectedSkippedTasks, cmpopts.SortSlices(func(i, j v1.SkippedTask) bool { return i.Name < j.Name })); d != "" { t.Fatalf("Expected four skipped tasks, dag task with condition failure dagtask3, dag task with when expression,"+ @@ -402,16 +402,16 @@ func TestPipelineLevelFinally_OneFinalTaskFailed_Failure(t *testing.T) { defer tearDown(ctx, t, c, namespace) task := getSuccessTask(t, namespace) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create dag Task: %s", err) } finalTask := getFailTask(t, namespace) - if _, err := c.V1beta1TaskClient.Create(ctx, finalTask, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, finalTask, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create final Task: %s", err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -425,21 +425,21 @@ spec: taskRef: name: %s `, helpers.ObjectNameForTest(t), namespace, finalTask.Name, task.Name)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline: %s", err) } pipelineRun := getPipelineRun(t, namespace, pipeline.Name) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline Run `%s`: %s", pipelineRun.Name, err) } - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunFailed(pipelineRun.Name), "PipelineRunFailed", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunFailed(pipelineRun.Name), "PipelineRunFailed", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun %s to finish: %s", pipelineRun.Name, err) t.Fatalf("PipelineRun execution failed") } - taskrunList, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) + taskrunList, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", pipelineRun.Name, err) } @@ -470,29 +470,29 @@ func TestPipelineLevelFinally_OneFinalTask_CancelledRunFinally(t *testing.T) { defer tearDown(ctx, t, c, namespace) task1 := getDelaySuccessTaskProducingResults(t, namespace) - task1.Spec.Results = append(task1.Spec.Results, v1beta1.TaskResult{ + task1.Spec.Results = append(task1.Spec.Results, v1.TaskResult{ Name: "result", }) - if _, err := c.V1beta1TaskClient.Create(ctx, task1, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task1, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create dag Task: %s", err) } task2 := getSuccessTaskConsumingResults(t, namespace, "dagtask1-result") - if _, err := c.V1beta1TaskClient.Create(ctx, task2, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task2, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create dag Task: %s", err) } finalTask1 := getSuccessTask(t, namespace) - if _, err := c.V1beta1TaskClient.Create(ctx, finalTask1, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, finalTask1, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create final Task: %s", err) } finalTask2 := getSuccessTaskConsumingResults(t, namespace, "dagtask1-result") - if _, err := c.V1beta1TaskClient.Create(ctx, finalTask2, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, finalTask2, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create final Task: %s", err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -518,16 +518,16 @@ spec: taskRef: name: %s `, helpers.ObjectNameForTest(t), namespace, finalTask1.Name, finalTask2.Name, task1.Name, task2.Name)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline: %s", err) } pipelineRun := getPipelineRun(t, namespace, pipeline.Name) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline Run `%s`: %s", pipelineRun.Name, err) } - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, Running(pipelineRun.Name), "PipelineRunRunning", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, Running(pipelineRun.Name), "PipelineRunRunning", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun %s to start: %s", pipelineRun.Name, err) t.Fatalf("PipelineRun execution failed") } @@ -535,22 +535,22 @@ spec: patches := []jsonpatch.JsonPatchOperation{{ Operation: "add", Path: "/spec/status", - Value: v1beta1.PipelineRunSpecStatusCancelledRunFinally, + Value: v1.PipelineRunSpecStatusCancelledRunFinally, }} patchBytes, err := json.Marshal(patches) if err != nil { t.Fatalf("failed to marshal patch bytes in order to stop") } - if _, err := c.V1beta1PipelineRunClient.Patch(ctx, pipelineRun.Name, types.JSONPatchType, patchBytes, metav1.PatchOptions{}, ""); err != nil { + if _, err := c.V1PipelineRunClient.Patch(ctx, pipelineRun.Name, types.JSONPatchType, patchBytes, metav1.PatchOptions{}, ""); err != nil { t.Fatalf("Failed to patch PipelineRun `%s` with graceful stop: %s", pipelineRun.Name, err) } - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1beta1.PipelineRunReasonCancelled.String(), pipelineRun.Name), "PipelineRunCancelled", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1.PipelineRunReasonCancelled.String(), pipelineRun.Name), "PipelineRunCancelled", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun %s to finish: %s", pipelineRun.Name, err) t.Fatalf("PipelineRun execution failed") } - taskrunList, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) + taskrunList, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", pipelineRun.Name, err) } @@ -585,29 +585,29 @@ func TestPipelineLevelFinally_OneFinalTask_StoppedRunFinally(t *testing.T) { defer tearDown(ctx, t, c, namespace) task1 := getDelaySuccessTaskProducingResults(t, namespace) - task1.Spec.Results = append(task1.Spec.Results, v1beta1.TaskResult{ + task1.Spec.Results = append(task1.Spec.Results, v1.TaskResult{ Name: "result", }) - if _, err := c.V1beta1TaskClient.Create(ctx, task1, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task1, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create dag Task: %s", err) } task2 := getSuccessTaskConsumingResults(t, namespace, "dagtask1-result") - if _, err := c.V1beta1TaskClient.Create(ctx, task2, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task2, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create dag Task: %s", err) } finalTask1 := getSuccessTask(t, namespace) - if _, err := c.V1beta1TaskClient.Create(ctx, finalTask1, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, finalTask1, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create final Task: %s", err) } finalTask2 := getSuccessTaskConsumingResults(t, namespace, "dagtask1-result") - if _, err := c.V1beta1TaskClient.Create(ctx, finalTask2, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, finalTask2, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create final Task: %s", err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -633,16 +633,16 @@ spec: taskRef: name: %s `, helpers.ObjectNameForTest(t), namespace, finalTask1.Name, finalTask2.Name, task1.Name, task2.Name)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline: %s", err) } pipelineRun := getPipelineRun(t, namespace, pipeline.Name) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline Run `%s`: %s", pipelineRun.Name, err) } - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, Running(pipelineRun.Name), "PipelineRunRunning", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, Running(pipelineRun.Name), "PipelineRunRunning", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun %s to start: %s", pipelineRun.Name, err) t.Fatalf("PipelineRun execution failed") } @@ -650,22 +650,22 @@ spec: patches := []jsonpatch.JsonPatchOperation{{ Operation: "add", Path: "/spec/status", - Value: v1beta1.PipelineRunSpecStatusStoppedRunFinally, + Value: v1.PipelineRunSpecStatusStoppedRunFinally, }} patchBytes, err := json.Marshal(patches) if err != nil { t.Fatalf("failed to marshal patch bytes in order to stop") } - if _, err := c.V1beta1PipelineRunClient.Patch(ctx, pipelineRun.Name, types.JSONPatchType, patchBytes, metav1.PatchOptions{}, ""); err != nil { + if _, err := c.V1PipelineRunClient.Patch(ctx, pipelineRun.Name, types.JSONPatchType, patchBytes, metav1.PatchOptions{}, ""); err != nil { t.Fatalf("Failed to patch PipelineRun `%s` with graceful stop: %s", pipelineRun.Name, err) } - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1beta1.PipelineRunReasonCancelled.String(), pipelineRun.Name), "PipelineRunCancelled", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1.PipelineRunReasonCancelled.String(), pipelineRun.Name), "PipelineRunCancelled", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun %s to finish: %s", pipelineRun.Name, err) t.Fatalf("PipelineRun execution failed") } - taskrunList, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) + taskrunList, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: "tekton.dev/pipelineRun=" + pipelineRun.Name}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", pipelineRun.Name, err) } @@ -716,9 +716,9 @@ func isCancelled(t *testing.T, taskRunName string, conds duckv1.Conditions) bool return false } -func getSuccessTask(t *testing.T, namespace string) *v1beta1.Task { +func getSuccessTask(t *testing.T, namespace string) *v1.Task { t.Helper() - return parse.MustParseV1beta1Task(t, fmt.Sprintf(` + return parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -729,9 +729,9 @@ spec: `, helpers.ObjectNameForTest(t), namespace)) } -func getFailTask(t *testing.T, namespace string) *v1beta1.Task { +func getFailTask(t *testing.T, namespace string) *v1.Task { t.Helper() - return parse.MustParseV1beta1Task(t, fmt.Sprintf(` + return parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -742,9 +742,9 @@ spec: `, helpers.ObjectNameForTest(t), namespace)) } -func getDelaySuccessTask(t *testing.T, namespace string) *v1beta1.Task { +func getDelaySuccessTask(t *testing.T, namespace string) *v1.Task { t.Helper() - return parse.MustParseV1beta1Task(t, fmt.Sprintf(` + return parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -755,9 +755,9 @@ spec: `, helpers.ObjectNameForTest(t), namespace)) } -func getTaskVerifyingStatus(t *testing.T, namespace string) *v1beta1.Task { +func getTaskVerifyingStatus(t *testing.T, namespace string) *v1.Task { t.Helper() - return parse.MustParseV1beta1Task(t, fmt.Sprintf(` + return parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -773,9 +773,9 @@ spec: `, helpers.ObjectNameForTest(t), namespace)) } -func getSuccessTaskProducingResults(t *testing.T, namespace string) *v1beta1.Task { +func getSuccessTaskProducingResults(t *testing.T, namespace string) *v1.Task { t.Helper() - return parse.MustParseV1beta1Task(t, fmt.Sprintf(` + return parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -788,9 +788,9 @@ spec: `, helpers.ObjectNameForTest(t), namespace)) } -func getDelaySuccessTaskProducingResults(t *testing.T, namespace string) *v1beta1.Task { +func getDelaySuccessTaskProducingResults(t *testing.T, namespace string) *v1.Task { t.Helper() - return parse.MustParseV1beta1Task(t, fmt.Sprintf(` + return parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -803,9 +803,9 @@ spec: `, helpers.ObjectNameForTest(t), namespace)) } -func getSuccessTaskConsumingResults(t *testing.T, namespace string, paramName string) *v1beta1.Task { +func getSuccessTaskConsumingResults(t *testing.T, namespace string, paramName string) *v1.Task { t.Helper() - return parse.MustParseV1beta1Task(t, fmt.Sprintf(` + return parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -818,9 +818,9 @@ spec: `, helpers.ObjectNameForTest(t), namespace, paramName)) } -func getPipelineRun(t *testing.T, namespace, p string) *v1beta1.PipelineRun { +func getPipelineRun(t *testing.T, namespace, p string) *v1.PipelineRun { t.Helper() - return parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + return parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s diff --git a/test/pipelinerun_test.go b/test/pipelinerun_test.go index 2875ce90a00..9b69c966df4 100644 --- a/test/pipelinerun_test.go +++ b/test/pipelinerun_test.go @@ -28,7 +28,7 @@ import ( "time" "github.com/tektoncd/pipeline/pkg/apis/pipeline" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/parse" corev1 "k8s.io/api/core/v1" k8sres "k8s.io/apimachinery/pkg/api/resource" @@ -49,17 +49,17 @@ func TestPipelineRunStatusSpec(t *testing.T) { t.Parallel() type tests struct { name string - testSetup func(ctx context.Context, t *testing.T, c *clients, namespace string, index int) *v1beta1.Pipeline + testSetup func(ctx context.Context, t *testing.T, c *clients, namespace string, index int) *v1.Pipeline expectedTaskRuns []string expectedNumberOfEvents int - pipelineRunFunc func(*testing.T, int, string, string) *v1beta1.PipelineRun + pipelineRunFunc func(*testing.T, int, string, string) *v1.PipelineRun } tds := []tests{{ name: "pipeline status spec updated", - testSetup: func(ctx context.Context, t *testing.T, c *clients, namespace string, _ int) *v1beta1.Pipeline { + testSetup: func(ctx context.Context, t *testing.T, c *clients, namespace string, _ int) *v1.Pipeline { t.Helper() - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: pipeline-status-spec-updated namespace: %s @@ -73,12 +73,12 @@ spec: #!/usr/bin/env bash echo "$(params.HELLO)" `, namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task `%s`: %s", task.Name, err) } p := getUpdatedStatusSpecPipeline(t, namespace, task.Name) - if _, err := c.V1beta1PipelineClient.Create(ctx, p, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, p, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", p.Name, err) } @@ -108,17 +108,17 @@ spec: pipelineRun := td.pipelineRunFunc(t, i, namespace, p.Name) prName := pipelineRun.Name - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", prName, err) } t.Logf("Making sure the expected TaskRuns %s were created", td.expectedTaskRuns) - actualTaskrunList, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", prName)}) + actualTaskrunList, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", prName)}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", prName, err) } @@ -132,7 +132,7 @@ spec: } } expectedTaskRunNames = append(expectedTaskRunNames, taskRunName) - r, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + r, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected TaskRun %s: %s", taskRunName, err) } @@ -158,11 +158,11 @@ spec: t.Fatalf("Expected %d number of successful events from pipelinerun and taskrun but got %d; list of receieved events : %#v", td.expectedNumberOfEvents, len(events), collectedEvents) } t.Log("Checking if parameter replacements have been updated in the spec.") - cl, _ := c.V1beta1PipelineRunClient.Get(ctx, prName, metav1.GetOptions{}) + cl, _ := c.V1PipelineRunClient.Get(ctx, prName, metav1.GetOptions{}) if cl.Status.PipelineSpec.Tasks[0].Params[0].Value.StringVal != "Hello World!" { t.Fatalf(`Expected replaced parameter value %s but found %s`, "Hello World!", cl.Status.PipelineSpec.Tasks[0].Params[0].Value.StringVal) } - tl, _ := c.V1beta1TaskRunClient.Get(ctx, "pipeline-task-update-task1", metav1.GetOptions{}) + tl, _ := c.V1TaskRunClient.Get(ctx, "pipeline-task-update-task1", metav1.GetOptions{}) if !strings.Contains(tl.Status.TaskSpec.Steps[0].Script, "Hello World!") { t.Fatalf(`Expected replaced parameter value : %s in Script: %s But not found`, "Hello World!", tl.Status.TaskSpec.Steps[0].Script) } @@ -175,25 +175,25 @@ func TestPipelineRun(t *testing.T) { t.Parallel() type tests struct { name string - testSetup func(ctx context.Context, t *testing.T, c *clients, namespace string, index int) *v1beta1.Pipeline + testSetup func(ctx context.Context, t *testing.T, c *clients, namespace string, index int) *v1.Pipeline expectedTaskRuns []string expectedNumberOfEvents int - pipelineRunFunc func(*testing.T, int, string, string) *v1beta1.PipelineRun + pipelineRunFunc func(*testing.T, int, string, string) *v1.PipelineRun } tds := []tests{{ name: "fan-in and fan-out", - testSetup: func(ctx context.Context, t *testing.T, c *clients, namespace string, _ int) *v1beta1.Pipeline { + testSetup: func(ctx context.Context, t *testing.T, c *clients, namespace string, _ int) *v1.Pipeline { t.Helper() tasks := getFanInFanOutTasks(t, namespace) for _, task := range tasks { - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task `%s`: %s", task.Name, err) } } p := getFanInFanOutPipeline(t, namespace, tasks) - if _, err := c.V1beta1PipelineClient.Create(ctx, p, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, p, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", p.Name, err) } @@ -205,7 +205,7 @@ func TestPipelineRun(t *testing.T) { expectedNumberOfEvents: 5, }, { name: "service account propagation and pipeline param", - testSetup: func(ctx context.Context, t *testing.T, c *clients, namespace string, index int) *v1beta1.Pipeline { + testSetup: func(ctx context.Context, t *testing.T, c *clients, namespace string, index int) *v1.Pipeline { t.Helper() t.Skip("build-crd-testing project got removed, the secret-sauce doesn't exist anymore, skipping") if _, err := c.KubeClient.CoreV1().Secrets(namespace).Create(ctx, getPipelineRunSecret(index, namespace), metav1.CreateOptions{}); err != nil { @@ -216,7 +216,7 @@ func TestPipelineRun(t *testing.T) { t.Fatalf("Failed to create SA `%s`: %s", getName(saName, index), err) } - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -232,11 +232,11 @@ spec: command: ['skopeo'] args: ['copy', '$(params["the.path"])', '$(params["the.dest"])'] `, helpers.ObjectNameForTest(t), namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task `%s`: %s", task.Name, err) } p := getHelloWorldPipelineWithSingularTask(t, namespace, task.Name) - if _, err := c.V1beta1PipelineClient.Create(ctx, p, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, p, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", p.Name, err) } @@ -248,7 +248,7 @@ spec: pipelineRunFunc: getHelloWorldPipelineRun, }, { name: "pipelinerun succeeds with LimitRange minimum in namespace", - testSetup: func(ctx context.Context, t *testing.T, c *clients, namespace string, index int) *v1beta1.Pipeline { + testSetup: func(ctx context.Context, t *testing.T, c *clients, namespace string, index int) *v1.Pipeline { t.Helper() t.Skip("build-crd-testing project got removed, the secret-sauce doesn't exist anymore, skipping") if _, err := c.KubeClient.CoreV1().LimitRanges(namespace).Create(ctx, getLimitRange("prlimitrange", namespace, "100m", "99Mi", "100m"), metav1.CreateOptions{}); err != nil { @@ -263,7 +263,7 @@ spec: t.Fatalf("Failed to create SA `%s`: %s", getName(saName, index), err) } - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -279,12 +279,12 @@ spec: command: ['skopeo'] args: ['copy', '$(params["the.path"])', '$(params["the.dest"])'] `, helpers.ObjectNameForTest(t), namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task `%s`: %s", fmt.Sprint("task", index), err) } p := getHelloWorldPipelineWithSingularTask(t, namespace, task.Name) - if _, err := c.V1beta1PipelineClient.Create(ctx, p, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, p, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", p.Name, err) } @@ -314,17 +314,17 @@ spec: pipelineRun := td.pipelineRunFunc(t, i, namespace, p.Name) prName := pipelineRun.Name - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", prName, err) } t.Logf("Making sure the expected TaskRuns %s were created", td.expectedTaskRuns) - actualTaskrunList, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", prName)}) + actualTaskrunList, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", prName)}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", prName, err) } @@ -338,7 +338,7 @@ spec: } } expectedTaskRunNames = append(expectedTaskRunNames, taskRunName) - r, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + r, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected TaskRun %s: %s", taskRunName, err) } @@ -376,9 +376,9 @@ spec: } } -func getUpdatedStatusSpecPipeline(t *testing.T, namespace string, taskName string) *v1beta1.Pipeline { +func getUpdatedStatusSpecPipeline(t *testing.T, namespace string, taskName string) *v1.Pipeline { t.Helper() - return parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + return parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: pipeline-status-spec-updated namespace: %s @@ -396,9 +396,9 @@ spec: `, namespace, task1Name, taskName)) } -func getHelloWorldPipelineWithSingularTask(t *testing.T, namespace string, taskName string) *v1beta1.Pipeline { +func getHelloWorldPipelineWithSingularTask(t *testing.T, namespace string, taskName string) *v1.Pipeline { t.Helper() - return parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + return parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -435,7 +435,7 @@ func TestPipelineRunRefDeleted(t *testing.T) { prName := helpers.ObjectNameForTest(t) t.Logf("Creating Pipeline, and PipelineRun %s in namespace %s", prName, namespace) - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s spec: @@ -460,33 +460,33 @@ spec: # Sleep for another 10s sleep 10 `, pipelineName)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", pipelineName, err) } - pipelinerun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelinerun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s spec: pipelineRef: name: %s `, prName, pipelineName)) - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelinerun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelinerun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, Running(prName), "PipelineRunRunning", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, Running(prName), "PipelineRunRunning", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", prName, err) } - if err := c.V1beta1PipelineClient.Delete(ctx, pipeline.Name, metav1.DeleteOptions{}); err != nil { + if err := c.V1PipelineClient.Delete(ctx, pipeline.Name, metav1.DeleteOptions{}); err != nil { t.Fatalf("Failed to delete Pipeline `%s`: %s", pipeline.Name, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", prName, err) } } @@ -510,7 +510,7 @@ func TestPipelineRunPending(t *testing.T) { t.Logf("Creating Task, Pipeline, and Pending PipelineRun %s in namespace %s", prName, namespace) - if _, err := c.V1beta1TaskClient.Create(ctx, parse.MustParseV1beta1Task(t, fmt.Sprintf(` + if _, err := c.V1TaskClient.Create(ctx, parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -523,7 +523,7 @@ spec: t.Fatalf("Failed to create Task `%s`: %s", taskName, err) } - if _, err := c.V1beta1PipelineClient.Create(ctx, parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + if _, err := c.V1PipelineClient.Create(ctx, parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -536,7 +536,7 @@ spec: t.Fatalf("Failed to create Pipeline `%s`: %s", pipelineName, err) } - pipelineRun, err := c.V1beta1PipelineRunClient.Create(ctx, parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun, err := c.V1PipelineRunClient.Create(ctx, parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -550,13 +550,13 @@ spec: } t.Logf("Waiting for PipelineRun %s in namespace %s to be marked pending", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunPending(prName), "PipelineRunPending", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunPending(prName), "PipelineRunPending", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to be marked pending: %s", prName, err) } t.Logf("Clearing pending status on PipelineRun %s", prName) - pipelineRun, err = c.V1beta1PipelineRunClient.Get(ctx, prName, metav1.GetOptions{}) + pipelineRun, err = c.V1PipelineRunClient.Get(ctx, prName, metav1.GetOptions{}) if err != nil { t.Fatalf("Error getting PipelineRun %s: %s", prName, err) } @@ -567,20 +567,20 @@ spec: pipelineRun.Spec.Status = "" - if _, err := c.V1beta1PipelineRunClient.Update(ctx, pipelineRun, metav1.UpdateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Update(ctx, pipelineRun, metav1.UpdateOptions{}); err != nil { t.Fatalf("Error clearing pending status on PipelineRun %s: %s", prName, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", prName, err) } } -func getFanInFanOutTasks(t *testing.T, namespace string) map[string]*v1beta1.Task { +func getFanInFanOutTasks(t *testing.T, namespace string) map[string]*v1.Task { t.Helper() - return map[string]*v1beta1.Task{ - "create-file": parse.MustParseV1beta1Task(t, fmt.Sprintf(` + return map[string]*v1.Task{ + "create-file": parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -596,7 +596,7 @@ spec: - name: result-stuff - name: result-other `, helpers.ObjectNameForTest(t), namespace)), - "check-create-files-exists": parse.MustParseV1beta1Task(t, fmt.Sprintf(` + "check-create-files-exists": parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -613,7 +613,7 @@ spec: results: - name: result-something `, helpers.ObjectNameForTest(t), namespace)), - "check-create-files-exists-2": parse.MustParseV1beta1Task(t, fmt.Sprintf(` + "check-create-files-exists-2": parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -630,7 +630,7 @@ spec: results: - name: result-else `, helpers.ObjectNameForTest(t), namespace)), - "read-files": parse.MustParseV1beta1Task(t, fmt.Sprintf(` + "read-files": parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -647,9 +647,9 @@ spec: } } -func getFanInFanOutPipeline(t *testing.T, namespace string, tasks map[string]*v1beta1.Task) *v1beta1.Pipeline { +func getFanInFanOutPipeline(t *testing.T, namespace string, tasks map[string]*v1.Task) *v1.Pipeline { t.Helper() - return parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + return parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -682,9 +682,9 @@ spec: tasks["check-create-files-exists-2"].Name, tasks["read-files"].Name)) } -func getFanInFanOutPipelineRun(t *testing.T, _ int, namespace string, pipelineName string) *v1beta1.PipelineRun { +func getFanInFanOutPipelineRun(t *testing.T, _ int, namespace string, pipelineName string) *v1.PipelineRun { t.Helper() - return parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + return parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -735,9 +735,9 @@ func getPipelineRunSecret(suffix int, namespace string) *corev1.Secret { } } -func getUpdatedStatusSpecPipelineRun(t *testing.T, _ int, namespace string, pipelineName string) *v1beta1.PipelineRun { +func getUpdatedStatusSpecPipelineRun(t *testing.T, _ int, namespace string, pipelineName string) *v1.PipelineRun { t.Helper() - return parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + return parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: "pipeline-task-update" namespace: %s @@ -751,9 +751,9 @@ spec: // `, helpers.ObjectNameForTest(t), namespace, pipelineName)) } -func getHelloWorldPipelineRun(t *testing.T, suffix int, namespace string, pipelineName string) *v1beta1.PipelineRun { +func getHelloWorldPipelineRun(t *testing.T, suffix int, namespace string, pipelineName string) *v1.PipelineRun { t.Helper() - return parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + return parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: labels: hello-world-key: hello-world-value @@ -767,7 +767,8 @@ spec: value: dir:///tmp/ pipelineRef: name: %s - serviceAccountName: %s%d + taskRunTemplate: + serviceAccountName: %s%d `, helpers.ObjectNameForTest(t), namespace, pipelineName, saName, suffix)) } @@ -810,18 +811,18 @@ func collectMatchingEvents(ctx context.Context, kubeClient kubernetes.Interface, // checkLabelPropagation checks that labels are correctly propagating from // Pipelines, PipelineRuns, and Tasks to TaskRuns and Pods. -func checkLabelPropagation(ctx context.Context, t *testing.T, c *clients, namespace string, pipelineRunName string, tr *v1beta1.TaskRun) { +func checkLabelPropagation(ctx context.Context, t *testing.T, c *clients, namespace string, pipelineRunName string, tr *v1.TaskRun) { t.Helper() // Our controllers add 4 labels automatically. If custom labels are set on // the Pipeline, PipelineRun, or Task then the map will have to be resized. labels := make(map[string]string, 4) // Check label propagation to PipelineRuns. - pr, err := c.V1beta1PipelineRunClient.Get(ctx, pipelineRunName, metav1.GetOptions{}) + pr, err := c.V1PipelineRunClient.Get(ctx, pipelineRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected PipelineRun for %s: %s", tr.Name, err) } - p, err := c.V1beta1PipelineClient.Get(ctx, pr.Spec.PipelineRef.Name, metav1.GetOptions{}) + p, err := c.V1PipelineClient.Get(ctx, pr.Spec.PipelineRef.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected Pipeline for %s: %s", pr.Name, err) } @@ -839,7 +840,7 @@ func checkLabelPropagation(ctx context.Context, t *testing.T, c *clients, namesp // This label is added to every TaskRun by the PipelineRun controller labels[pipeline.PipelineRunLabelKey] = pr.Name if tr.Spec.TaskRef != nil { - task, err := c.V1beta1TaskClient.Get(ctx, tr.Spec.TaskRef.Name, metav1.GetOptions{}) + task, err := c.V1TaskClient.Get(ctx, tr.Spec.TaskRef.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected Task for %s: %s", tr.Name, err) } @@ -864,16 +865,16 @@ func checkLabelPropagation(ctx context.Context, t *testing.T, c *clients, namesp // checkAnnotationPropagation checks that annotations are correctly propagating from // Pipelines, PipelineRuns, and Tasks to TaskRuns and Pods. -func checkAnnotationPropagation(ctx context.Context, t *testing.T, c *clients, namespace string, pipelineRunName string, tr *v1beta1.TaskRun) { +func checkAnnotationPropagation(ctx context.Context, t *testing.T, c *clients, namespace string, pipelineRunName string, tr *v1.TaskRun) { t.Helper() annotations := make(map[string]string) // Check annotation propagation to PipelineRuns. - pr, err := c.V1beta1PipelineRunClient.Get(ctx, pipelineRunName, metav1.GetOptions{}) + pr, err := c.V1PipelineRunClient.Get(ctx, pipelineRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected PipelineRun for %s: %s", tr.Name, err) } - p, err := c.V1beta1PipelineClient.Get(ctx, pr.Spec.PipelineRef.Name, metav1.GetOptions{}) + p, err := c.V1PipelineClient.Get(ctx, pr.Spec.PipelineRef.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected Pipeline for %s: %s", pr.Name, err) } @@ -887,7 +888,7 @@ func checkAnnotationPropagation(ctx context.Context, t *testing.T, c *clients, n annotations[key] = val } if tr.Spec.TaskRef != nil { - task, err := c.V1beta1TaskClient.Get(ctx, tr.Spec.TaskRef.Name, metav1.GetOptions{}) + task, err := c.V1TaskClient.Get(ctx, tr.Spec.TaskRef.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected Task for %s: %s", tr.Name, err) } @@ -902,7 +903,7 @@ func checkAnnotationPropagation(ctx context.Context, t *testing.T, c *clients, n assertAnnotationsMatch(t, annotations, pod.ObjectMeta.Annotations) } -func getPodForTaskRun(ctx context.Context, t *testing.T, kubeClient kubernetes.Interface, namespace string, tr *v1beta1.TaskRun) *corev1.Pod { +func getPodForTaskRun(ctx context.Context, t *testing.T, kubeClient kubernetes.Interface, namespace string, tr *v1.TaskRun) *corev1.Pod { t.Helper() // The Pod name has a random suffix, so we filter by label to find the one we care about. pods, err := kubeClient.CoreV1().Pods(namespace).List(ctx, metav1.ListOptions{ diff --git a/test/propagated_params_test.go b/test/propagated_params_test.go index 52e4c00c450..2a1824d1771 100644 --- a/test/propagated_params_test.go +++ b/test/propagated_params_test.go @@ -26,7 +26,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/parse" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -39,15 +39,15 @@ var ( ignoreTypeMeta = cmpopts.IgnoreFields(metav1.TypeMeta{}, "Kind", "APIVersion") ignoreObjectMeta = cmpopts.IgnoreFields(metav1.ObjectMeta{}, "ResourceVersion", "UID", "CreationTimestamp", "Generation", "ManagedFields", "Labels", "Annotations", "OwnerReferences") ignoreCondition = cmpopts.IgnoreFields(apis.Condition{}, "LastTransitionTime.Inner.Time", "Message") - ignorePipelineRunStatus = cmpopts.IgnoreFields(v1beta1.PipelineRunStatusFields{}, "StartTime", "CompletionTime", "FinallyStartTime", "ChildReferences") - ignoreTaskRunStatus = cmpopts.IgnoreFields(v1beta1.TaskRunStatusFields{}, "StartTime", "CompletionTime") + ignorePipelineRunStatus = cmpopts.IgnoreFields(v1.PipelineRunStatusFields{}, "StartTime", "CompletionTime", "FinallyStartTime", "ChildReferences") + ignoreTaskRunStatus = cmpopts.IgnoreFields(v1.TaskRunStatusFields{}, "StartTime", "CompletionTime") ignoreConditions = cmpopts.IgnoreFields(duckv1.Status{}, "Conditions") ignoreContainerStates = cmpopts.IgnoreFields(corev1.ContainerState{}, "Terminated") - ignoreStepState = cmpopts.IgnoreFields(v1beta1.StepState{}, "ImageID") + ignoreStepState = cmpopts.IgnoreFields(v1.StepState{}, "ImageID") // ignoreSATaskRunSpec ignores the service account in the TaskRunSpec as it may differ across platforms - ignoreSATaskRunSpec = cmpopts.IgnoreFields(v1beta1.TaskRunSpec{}, "ServiceAccountName") + ignoreSATaskRunSpec = cmpopts.IgnoreFields(v1.TaskRunSpec{}, "ServiceAccountName") // ignoreSAPipelineRunSpec ignores the service account in the PipelineRunSpec as it may differ across platforms - ignoreSAPipelineRunSpec = cmpopts.IgnoreFields(v1beta1.PipelineRunSpec{}, "ServiceAccountName") + ignoreSAPipelineRunSpec = cmpopts.IgnoreFields(v1.PipelineTaskRunTemplate{}, "ServiceAccountName") ) func TestPropagatedParams(t *testing.T) { @@ -58,7 +58,7 @@ func TestPropagatedParams(t *testing.T) { name string pipelineName string taskName string - pipelineRunFunc func(*testing.T, string) (*v1beta1.PipelineRun, *v1beta1.PipelineRun, []*v1beta1.TaskRun) + pipelineRunFunc func(*testing.T, string) (*v1.PipelineRun, *v1.PipelineRun, []*v1.TaskRun) } tds := []tests{{ @@ -94,21 +94,21 @@ func TestPropagatedParams(t *testing.T) { t.Logf("Setting up test resources for %q test in namespace %s", td.name, namespace) pipelineRun, expectedResolvedPipelineRun, expectedTaskRuns := td.pipelineRunFunc(t, namespace) - expectedResolvedPipelineRun.Status.Provenance = &v1beta1.Provenance{ + expectedResolvedPipelineRun.Status.Provenance = &v1.Provenance{ FeatureFlags: expectedFeatureFlags, } prName := pipelineRun.Name - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", prName, err) } - cl, _ := c.V1beta1PipelineRunClient.Get(ctx, prName, metav1.GetOptions{}) + cl, _ := c.V1PipelineRunClient.Get(ctx, prName, metav1.GetOptions{}) d := cmp.Diff(expectedResolvedPipelineRun, cl, ignoreTypeMeta, ignoreObjectMeta, @@ -125,10 +125,10 @@ func TestPropagatedParams(t *testing.T) { } for _, tr := range expectedTaskRuns { t.Logf("Checking Taskrun %s", tr.Name) - tr.Status.Provenance = &v1beta1.Provenance{ + tr.Status.Provenance = &v1.Provenance{ FeatureFlags: expectedFeatureFlags, } - taskrun, _ := c.V1beta1TaskRunClient.Get(ctx, tr.Name, metav1.GetOptions{}) + taskrun, _ := c.V1TaskRunClient.Get(ctx, tr.Name, metav1.GetOptions{}) d = cmp.Diff(tr, taskrun, ignoreTypeMeta, ignoreObjectMeta, @@ -148,9 +148,9 @@ func TestPropagatedParams(t *testing.T) { } } -func getPropagatedParamPipelineRun(t *testing.T, namespace string) (*v1beta1.PipelineRun, *v1beta1.PipelineRun, []*v1beta1.TaskRun) { +func getPropagatedParamPipelineRun(t *testing.T, namespace string) (*v1.PipelineRun, *v1.PipelineRun, []*v1.TaskRun) { t.Helper() - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: propagated-parameters-fully namespace: %s @@ -174,12 +174,13 @@ spec: image: ubuntu script: echo $(params.HELLO) `, namespace)) - expectedPipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + expectedPipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: propagated-parameters-fully namespace: %s spec: - timeout: 1h + timeouts: + pipeline: 1h params: - name: HELLO value: "Hello World!" @@ -215,7 +216,7 @@ status: image: ubuntu script: echo Hello World! `, namespace)) - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: propagated-parameters-fully-echo-hello namespace: %s @@ -237,7 +238,7 @@ status: image: ubuntu script: echo Hello World! `, namespace)) - finallyTaskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + finallyTaskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: propagated-parameters-fully-echo-hello-finally namespace: %s @@ -259,12 +260,12 @@ status: image: ubuntu script: echo Hello World! `, namespace)) - return pipelineRun, expectedPipelineRun, []*v1beta1.TaskRun{taskRun, finallyTaskRun} + return pipelineRun, expectedPipelineRun, []*v1.TaskRun{taskRun, finallyTaskRun} } -func getPropagatedParamTaskLevelPipelineRun(t *testing.T, namespace string) (*v1beta1.PipelineRun, *v1beta1.PipelineRun, []*v1beta1.TaskRun) { +func getPropagatedParamTaskLevelPipelineRun(t *testing.T, namespace string) (*v1.PipelineRun, *v1.PipelineRun, []*v1.TaskRun) { t.Helper() - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: propagated-parameters-task-level namespace: %s @@ -284,12 +285,13 @@ spec: image: ubuntu script: echo $(params.HELLO) `, namespace)) - expectedPipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + expectedPipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: propagated-parameters-task-level namespace: %s spec: - timeout: 1h + timeouts: + pipeline: 1h params: - name: HELLO value: "Pipeline Hello World!" @@ -317,7 +319,7 @@ status: image: ubuntu script: echo Hello World! `, namespace)) - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: propagated-parameters-task-level-echo-hello namespace: %s @@ -342,12 +344,12 @@ status: image: ubuntu script: echo Hello World! `, namespace)) - return pipelineRun, expectedPipelineRun, []*v1beta1.TaskRun{taskRun} + return pipelineRun, expectedPipelineRun, []*v1.TaskRun{taskRun} } -func getPropagatedParamTaskLevelDefaultPipelineRun(t *testing.T, namespace string) (*v1beta1.PipelineRun, *v1beta1.PipelineRun, []*v1beta1.TaskRun) { +func getPropagatedParamTaskLevelDefaultPipelineRun(t *testing.T, namespace string) (*v1.PipelineRun, *v1.PipelineRun, []*v1.TaskRun) { t.Helper() - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: propagated-parameters-default-task-level namespace: %s @@ -368,12 +370,13 @@ spec: image: ubuntu script: echo $(params.HELLO) `, namespace)) - expectedPipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + expectedPipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: propagated-parameters-default-task-level namespace: %s spec: - timeout: 1h + timeouts: + pipeline: 1h params: - name: HELLO value: "Hello World!" @@ -403,7 +406,7 @@ status: image: ubuntu script: echo Hello World! `, namespace)) - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: propagated-parameters-default-task-level-echo-hello namespace: %s @@ -433,5 +436,5 @@ status: image: ubuntu script: echo Hello World! `, namespace)) - return pipelineRun, expectedPipelineRun, []*v1beta1.TaskRun{taskRun} + return pipelineRun, expectedPipelineRun, []*v1.TaskRun{taskRun} } diff --git a/test/remote_test.go b/test/remote_test.go index 5d8162d8d81..0806701887c 100644 --- a/test/remote_test.go +++ b/test/remote_test.go @@ -40,7 +40,7 @@ func TestCreateImage(t *testing.T) { defer s.Close() u, _ := url.Parse(s.URL) - task := parse.MustParseV1beta1Task(t, ` + task := parse.MustParseV1Task(t, ` metadata: name: test-create-image `) @@ -77,7 +77,7 @@ metadata: if diff := cmp.Diff(m.Layers[0].Annotations[tkremote.KindAnnotation], "task"); diff != "" { t.Error(diff) } - if diff := cmp.Diff(m.Layers[0].Annotations[tkremote.APIVersionAnnotation], "v1beta1"); diff != "" { + if diff := cmp.Diff(m.Layers[0].Annotations[tkremote.APIVersionAnnotation], "v1"); diff != "" { t.Error(diff) } diff --git a/test/resolution.go b/test/resolution.go index 7d46d6ac100..514988427f2 100644 --- a/test/resolution.go +++ b/test/resolution.go @@ -23,7 +23,7 @@ import ( "strings" "github.com/google/go-cmp/cmp" - pipelinev1beta1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + pipelinev1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" resolution "github.com/tektoncd/pipeline/pkg/resolution/common" "github.com/tektoncd/pipeline/test/diff" ) @@ -43,7 +43,7 @@ func NewRequester(resource resolution.ResolvedResource, err error) *Requester { // NewResolvedResource creates a mock resolved resource that is // populated with the given data and annotations or returns the given // error from its Data() method. -func NewResolvedResource(data []byte, annotations map[string]string, source *pipelinev1beta1.RefSource, dataErr error) *ResolvedResource { +func NewResolvedResource(data []byte, annotations map[string]string, source *pipelinev1.RefSource, dataErr error) *ResolvedResource { return &ResolvedResource{ ResolvedData: data, ResolvedAnnotations: annotations, @@ -61,7 +61,7 @@ type Requester struct { // An error to return when a request is submitted. SubmitErr error // Params that should match those on the request in order to return the resolved resource - Params []pipelinev1beta1.Param + Params []pipelinev1.Param } // Submit implements resolution.Requester, accepting the name of a @@ -71,7 +71,7 @@ func (r *Requester) Submit(ctx context.Context, resolverName resolution.Resolver if len(r.Params) == 0 { return r.ResolvedResource, r.SubmitErr } - reqParams := make(map[string]pipelinev1beta1.ParamValue) + reqParams := make(map[string]pipelinev1.ParamValue) for _, p := range req.Params() { reqParams[p.Name] = p.Value } @@ -102,7 +102,7 @@ type ResolvedResource struct { // Annotations to return when resolution is complete. ResolvedAnnotations map[string]string // ResolvedRefSource to return the source reference of the remote data - ResolvedRefSource *pipelinev1beta1.RefSource + ResolvedRefSource *pipelinev1.RefSource } // Data implements resolution.ResolvedResource and returns the mock @@ -119,7 +119,7 @@ func (r *ResolvedResource) Annotations() map[string]string { // RefSource is the source reference of the remote data that records where the remote // file came from including the url, digest and the entrypoint. -func (r *ResolvedResource) RefSource() *pipelinev1beta1.RefSource { +func (r *ResolvedResource) RefSource() *pipelinev1.RefSource { return r.ResolvedRefSource } @@ -130,7 +130,7 @@ type RawRequest struct { // the request namespace Namespace string // the params for the request - Params []pipelinev1beta1.Param + Params []pipelinev1.Param } // Request returns a Request interface based on the RawRequest. @@ -152,7 +152,7 @@ type Request struct { var _ resolution.Request = &Request{} // NewRequest creates a mock request that is populated with the given name namespace and params -func NewRequest(name, namespace string, params []pipelinev1beta1.Param) *Request { +func NewRequest(name, namespace string, params []pipelinev1.Param) *Request { return &Request{ RawRequest: RawRequest{ Name: name, @@ -173,6 +173,6 @@ func (r *Request) Namespace() string { } // Params implements resolution.Request and returns the mock params given to it on initialization. -func (r *Request) Params() pipelinev1beta1.Params { +func (r *Request) Params() pipelinev1.Params { return r.RawRequest.Params } diff --git a/test/resolvers_test.go b/test/resolvers_test.go index da9cdec612f..1464bbdc4df 100644 --- a/test/resolvers_test.go +++ b/test/resolvers_test.go @@ -64,14 +64,17 @@ var ( hubFeatureFlags = requireAllGates(map[string]string{ "enable-hub-resolver": "true", + "enable-api-fields": "beta", }) gitFeatureFlags = requireAllGates(map[string]string{ "enable-git-resolver": "true", + "enable-api-fields": "beta", }) clusterFeatureFlags = requireAllGates(map[string]string{ "enable-cluster-resolver": "true", + "enable-api-fields": "beta", }) ) @@ -86,7 +89,7 @@ func TestHubResolver(t *testing.T) { prName := helpers.ObjectNameForTest(t) - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -123,13 +126,13 @@ spec: value: "true" `, prName, namespace)) - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", prName, err) } } @@ -145,7 +148,7 @@ func TestHubResolver_Failure(t *testing.T) { prName := helpers.ObjectNameForTest(t) - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -182,7 +185,7 @@ spec: value: "true" `, prName, namespace)) - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } @@ -192,7 +195,7 @@ spec: Chain( FailedWithReason(pod.ReasonCouldntGetTask, prName), FailedWithMessage("requested resource 'https://artifacthub.io/api/v1/packages/tekton-task/tekton-catalog-tasks/git-clone-this-does-not-exist/0.7.0' not found on hub", prName), - ), "PipelineRunFailed", v1beta1Version); err != nil { + ), "PipelineRunFailed", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun to finish with expected error: %s", err) } } @@ -208,7 +211,7 @@ func TestGitResolver_Clone(t *testing.T) { prName := helpers.ObjectNameForTest(t) - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -245,13 +248,13 @@ spec: value: "true" `, prName, namespace)) - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", prName, err) } } @@ -309,7 +312,7 @@ func TestGitResolver_Clone_Failure(t *testing.T) { prName := helpers.ObjectNameForTest(t) - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -346,7 +349,7 @@ spec: value: "true" `, prName, namespace, url, pathInRepo, commit)) - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } @@ -356,7 +359,7 @@ spec: Chain( FailedWithReason(pod.ReasonCouldntGetTask, prName), FailedWithMessage(expectedErr, prName), - ), "PipelineRunFailed", v1beta1Version); err != nil { + ), "PipelineRunFailed", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun to finish with expected error: %s", err) } }) @@ -373,8 +376,8 @@ func TestClusterResolver(t *testing.T) { defer tearDown(ctx, t, c, namespace) pipelineName := helpers.ObjectNameForTest(t) - examplePipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` -apiVersion: tekton.dev/v1beta1 + examplePipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` +apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: %s @@ -392,14 +395,14 @@ spec: sleep 10 `, pipelineName, namespace)) - _, err := c.V1beta1PipelineClient.Create(ctx, examplePipeline, metav1.CreateOptions{}) + _, err := c.V1PipelineClient.Create(ctx, examplePipeline, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", pipelineName, err) } prName := helpers.ObjectNameForTest(t) - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -415,13 +418,13 @@ spec: value: %s `, prName, namespace, pipelineName, namespace)) - _, err = c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err = c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", prName, err) } } @@ -437,7 +440,7 @@ func TestClusterResolver_Failure(t *testing.T) { prName := helpers.ObjectNameForTest(t) - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -453,7 +456,7 @@ spec: value: %s `, prName, namespace, namespace)) - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } @@ -463,7 +466,7 @@ spec: Chain( FailedWithReason(pipelinerun.ReasonCouldntGetPipeline, prName), FailedWithMessage("pipelines.tekton.dev \"does-not-exist\" not found", prName), - ), "PipelineRunFailed", v1beta1Version); err != nil { + ), "PipelineRunFailed", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun to finish with expected error: %s", err) } } @@ -501,7 +504,7 @@ func TestGitResolver_API(t *testing.T) { defer resetConfigMap(ctx, t, c, resovlerNS, git.ConfigMapName, originalConfigMapData) trName := helpers.ObjectNameForTest(t) - tr := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + tr := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -519,13 +522,13 @@ spec: value: %s `, trName, namespace, scmRemoteBranch, scmRemoteTaskPath, scmRemoteOrg, scmRemoteRepo)) - _, err = c.V1beta1TaskRunClient.Create(ctx, tr, metav1.CreateOptions{}) + _, err = c.V1TaskRunClient.Create(ctx, tr, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create TaskRun: %v", err) } t.Logf("Waiting for TaskRun %s in namespace %s to complete", trName, namespace) - if err := WaitForTaskRunState(ctx, c, trName, TaskRunSucceed(trName), "TaskRunSuccess", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, trName, TaskRunSucceed(trName), "TaskRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for TaskRun %s to finish: %s", trName, err) } } @@ -575,7 +578,7 @@ func setupGitea(ctx context.Context, t *testing.T, c *clients, namespace string) giteaUserJSON := fmt.Sprintf(`{"admin":true,"email":"%s@example.com","full_name":"%s","login_name":"%s","must_change_password":false,"password":"%s","send_notify":false,"source_id":0,"username":"%s"}`, scmRemoteUser, scmRemoteUser, scmRemoteUser, scmRemoteUserPassword, scmRemoteUser) trName := helpers.AppendRandomString("git-resolver-setup-gitea-user") - giteaConfigTaskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + giteaConfigTaskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -599,22 +602,22 @@ spec: scmGiteaAdminPassword, giteaInternalHostname, giteaUserJSON, scmRemoteUser, scmRemoteUserPassword, giteaInternalHostname)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, giteaConfigTaskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, giteaConfigTaskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create gitea user setup TaskRun: %s", err) } t.Logf("Waiting for gitea user setup TaskRun in namespace %s to succeed", namespace) - if err := WaitForTaskRunState(ctx, c, trName, TaskRunSucceed(trName), "TaskRunSucceed", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, trName, TaskRunSucceed(trName), "TaskRunSucceed", v1Version); err != nil { t.Fatalf("Error waiting for gitea user setup TaskRun to finish: %s", err) } - tr, err := c.V1beta1TaskRunClient.Get(ctx, trName, metav1.GetOptions{}) + tr, err := c.V1TaskRunClient.Get(ctx, trName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected gitea user setup TaskRun %s: %s", trName, err) } token := "" - for _, trr := range tr.Status.TaskRunResults { + for _, trr := range tr.Status.Results { if trr.Name == "token" { token = trr.Value.StringVal } diff --git a/test/retry_test.go b/test/retry_test.go index f60f10789ca..7c53b81a32a 100644 --- a/test/retry_test.go +++ b/test/retry_test.go @@ -48,7 +48,7 @@ func TestTaskRunRetry(t *testing.T) { // configured to retry 5 times. pipelineRunName := helpers.ObjectNameForTest(t) numRetries := 5 - if _, err := c.V1beta1PipelineRunClient.Create(ctx, parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + if _, err := c.V1PipelineRunClient.Create(ctx, parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s spec: @@ -65,12 +65,12 @@ spec: } // Wait for the PipelineRun to fail, when retries are exhausted. - if err := WaitForPipelineRunState(ctx, c, pipelineRunName, 5*time.Minute, PipelineRunFailed(pipelineRunName), "PipelineRunFailed", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRunName, 5*time.Minute, PipelineRunFailed(pipelineRunName), "PipelineRunFailed", v1Version); err != nil { t.Fatalf("Waiting for PipelineRun to fail: %v", err) } // Get the status of the PipelineRun. - pr, err := c.V1beta1PipelineRunClient.Get(ctx, pipelineRunName, metav1.GetOptions{}) + pr, err := c.V1PipelineRunClient.Get(ctx, pipelineRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get PipelineRun %q: %v", pipelineRunName, err) } @@ -84,7 +84,7 @@ spec: } taskRunName := pr.Status.ChildReferences[0].Name - trByName, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + trByName, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get TaskRun %q: %v", taskRunName, err) } @@ -93,7 +93,7 @@ spec: } // There should only be one TaskRun created. - trs, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{}) + trs, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{}) if err != nil { t.Fatalf("Failed to list TaskRuns: %v", err) } else if len(trs.Items) != 1 { diff --git a/test/serviceaccount_test.go b/test/serviceaccount_test.go index a9ffbd062df..1de9d653f3a 100644 --- a/test/serviceaccount_test.go +++ b/test/serviceaccount_test.go @@ -114,7 +114,7 @@ func TestPipelineRunWithServiceAccounts(t *testing.T) { } // Create a Pipeline with multiple tasks - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -136,38 +136,39 @@ spec: - image: ubuntu script: echo task3 `, helpers.ObjectNameForTest(t), namespace)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", pipeline.Name, err) } // Create a PipelineRun that uses those ServiceAccount - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s spec: pipelineRef: name: %s - serviceAccountName: sa1 + taskRunTemplate: + serviceAccountName: sa1 taskRunSpecs: - pipelineTaskName: task2 - taskServiceAccountName: sa2 + serviceAccountName: sa2 - pipelineTaskName: task3 - taskServiceAccountName: sa3 + serviceAccountName: sa3 `, helpers.ObjectNameForTest(t), namespace, pipeline.Name)) - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", pipelineRun.Name, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", pipelineRun.Name, namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunSucceed(pipelineRun.Name), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunSucceed(pipelineRun.Name), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", pipelineRun.Name, err) } // Verify it used those serviceAccount - taskRuns, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", pipelineRun.Name)}) + taskRuns, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", pipelineRun.Name)}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", pipelineRun.Name, err) } @@ -231,7 +232,7 @@ func TestPipelineRunWithServiceAccountNameAndTaskRunSpec(t *testing.T) { } // Create a Pipeline with multiple tasks - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -244,37 +245,38 @@ spec: - image: ubuntu script: echo task1 `, helpers.ObjectNameForTest(t), namespace)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", pipeline.Name, err) } dnsPolicy := corev1.DNSClusterFirst // Create a PipelineRun that uses those ServiceAccount - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s spec: pipelineRef: name: %s - serviceAccountName: sa1 + taskRunTemplate: + serviceAccountName: sa1 taskRunSpecs: - pipelineTaskName: task1 taskPodTemplate: dnsPolicy: %s `, helpers.ObjectNameForTest(t), namespace, pipeline.Name, dnsPolicy)) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", pipelineRun.Name, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", pipelineRun.Name, namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunSucceed(pipelineRun.Name), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunSucceed(pipelineRun.Name), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", pipelineRun.Name, err) } // Verify it used those serviceAccount - taskRuns, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", pipelineRun.Name)}) + taskRuns, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", pipelineRun.Name)}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", pipelineRun.Name, err) } diff --git a/test/sidecar_test.go b/test/sidecar_test.go index 46cc4277ce2..79a50bf5202 100644 --- a/test/sidecar_test.go +++ b/test/sidecar_test.go @@ -73,7 +73,7 @@ func TestSidecarTaskSupport(t *testing.T) { sidecarTaskName := helpers.ObjectNameForTest(t) sidecarTaskRunName := helpers.ObjectNameForTest(t) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -88,7 +88,7 @@ spec: command: [%s] `, sidecarTaskName, namespace, primaryContainerName, stringSliceToYAMLArray(test.stepCommand), sidecarContainerName, stringSliceToYAMLArray(test.sidecarCommand))) - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -99,20 +99,20 @@ spec: `, sidecarTaskRunName, namespace, sidecarTaskName)) t.Logf("Creating Task %q", sidecarTaskName) - if _, err := clients.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := clients.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task %q: %v", sidecarTaskName, err) } t.Logf("Creating TaskRun %q", sidecarTaskRunName) - if _, err := clients.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := clients.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun %q: %v", sidecarTaskRunName, err) } - if err := WaitForTaskRunState(ctx, clients, sidecarTaskRunName, Succeed(sidecarTaskRunName), "TaskRunSucceed", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, clients, sidecarTaskRunName, Succeed(sidecarTaskRunName), "TaskRunSucceed", v1Version); err != nil { t.Fatalf("Error waiting for TaskRun %q to finish: %v", sidecarTaskRunName, err) } - tr, err := clients.V1beta1TaskRunClient.Get(ctx, sidecarTaskRunName, metav1.GetOptions{}) + tr, err := clients.V1TaskRunClient.Get(ctx, sidecarTaskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Error getting Taskrun: %v", err) } @@ -159,7 +159,7 @@ spec: t.Errorf("Either the primary or sidecar containers did not terminate") } - trCheckSidecarStatus, err := clients.V1beta1TaskRunClient.Get(ctx, sidecarTaskRunName, metav1.GetOptions{}) + trCheckSidecarStatus, err := clients.V1TaskRunClient.Get(ctx, sidecarTaskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Error getting TaskRun: %v", err) } @@ -167,7 +167,7 @@ spec: sidecarFromStatus := trCheckSidecarStatus.Status.Sidecars[0] // Check if Sidecar ContainerName is present for SidecarStatus - if sidecarFromStatus.ContainerName != fmt.Sprintf("sidecar-%s", sidecarContainerName) { + if sidecarFromStatus.Container != fmt.Sprintf("sidecar-%s", sidecarContainerName) { t.Errorf("Sidecar ContainerName should be: %s", sidecarContainerName) } diff --git a/test/start_time_test.go b/test/start_time_test.go index 2d4a2b4611a..48812ae9218 100644 --- a/test/start_time_test.go +++ b/test/start_time_test.go @@ -49,7 +49,7 @@ func TestStartTime(t *testing.T) { knativetest.CleanupOnInterrupt(func() { tearDown(ctx, t, c, namespace) }, t.Logf) defer tearDown(ctx, t, c, namespace) t.Logf("Creating TaskRun in namespace %q", namespace) - tr, err := c.V1beta1TaskRunClient.Create(ctx, parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + tr, err := c.V1TaskRunClient.Create(ctx, parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -72,10 +72,10 @@ spec: } t.Logf("Created TaskRun %q in namespace %q", tr.Name, namespace) // Wait for the TaskRun to complete. - if err := WaitForTaskRunState(ctx, c, tr.Name, TaskRunSucceed(tr.Name), "TaskRunSuccess", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, tr.Name, TaskRunSucceed(tr.Name), "TaskRunSuccess", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to succeed: %v", err) } - tr, err = c.V1beta1TaskRunClient.Get(ctx, tr.Name, metav1.GetOptions{}) + tr, err = c.V1TaskRunClient.Get(ctx, tr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Error getting TaskRun: %v", err) } diff --git a/test/status_test.go b/test/status_test.go index d37c6b31291..3496bd66f79 100644 --- a/test/status_test.go +++ b/test/status_test.go @@ -29,7 +29,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" "github.com/tektoncd/pipeline/pkg/apis/config" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/diff" "github.com/tektoncd/pipeline/test/parse" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -39,7 +39,7 @@ import ( ) var ( - ignoreFeatureFlags = cmpopts.IgnoreFields(v1beta1.Provenance{}, "FeatureFlags") + ignoreFeatureFlags = cmpopts.IgnoreFields(v1.Provenance{}, "FeatureFlags") ) // TestTaskRunPipelineRunStatus is an integration test that will @@ -56,7 +56,7 @@ func TestTaskRunPipelineRunStatus(t *testing.T) { defer tearDown(ctx, t, c, namespace) t.Logf("Creating Task and TaskRun in namespace %s", namespace) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s spec: @@ -64,26 +64,26 @@ spec: - name: foo image: busybox command: ['ls', '-la']`, helpers.ObjectNameForTest(t))) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task: %s", err) } - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s spec: taskRef: name: %s serviceAccountName: inexistent`, helpers.ObjectNameForTest(t), task.Name)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to fail", namespace) - if err := WaitForTaskRunState(ctx, c, taskRun.Name, TaskRunFailed(taskRun.Name), "BuildValidationFailed", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRun.Name, TaskRunFailed(taskRun.Name), "BuildValidationFailed", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish: %s", err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s spec: @@ -91,22 +91,23 @@ spec: - name: foo taskRef: name: %s`, helpers.ObjectNameForTest(t), task.Name)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", pipeline.Name, err) } - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s spec: pipelineRef: name: %s - serviceAccountName: inexistent`, helpers.ObjectNameForTest(t), pipeline.Name)) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + taskRunTemplate: + serviceAccountName: inexistent`, helpers.ObjectNameForTest(t), pipeline.Name)) + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", pipelineRun.Name, err) } t.Logf("Waiting for PipelineRun in namespace %s to fail", namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunFailed(pipelineRun.Name), "BuildValidationFailed", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, PipelineRunFailed(pipelineRun.Name), "BuildValidationFailed", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish: %s", err) } } @@ -124,14 +125,14 @@ func TestProvenanceFieldInPipelineRunTaskRunStatus(t *testing.T) { ctx := context.Background() ctx, cancel := context.WithCancel(ctx) defer cancel() - c, namespace := setup(ctx, t) + c, namespace := setup(ctx, t, requireAnyGate(map[string]string{"enable-api-fields": "beta"})) knativetest.CleanupOnInterrupt(func() { tearDown(ctx, t, c, namespace) }, t.Logf) defer tearDown(ctx, t, c, namespace) // example task taskName := helpers.ObjectNameForTest(t) - exampleTask, err := c.V1beta1TaskClient.Create(ctx, getExampleTask(t, taskName, namespace), metav1.CreateOptions{}) + exampleTask, err := c.V1TaskClient.Create(ctx, getExampleTask(t, taskName, namespace), metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create Task `%s`: %s", taskName, err) } @@ -139,20 +140,16 @@ func TestProvenanceFieldInPipelineRunTaskRunStatus(t *testing.T) { if err != nil { t.Fatalf("couldn't marshal task spec: %v", err) } - expectedTaskRunProvenance := &v1beta1.Provenance{ - ConfigSource: &v1beta1.ConfigSource{ - URI: fmt.Sprintf("/apis/%s/namespaces/%s/%s/%s@%s", v1beta1.SchemeGroupVersion.String(), namespace, "task", exampleTask.Name, exampleTask.UID), - Digest: map[string]string{"sha256": sha256CheckSum(taskSpec)}, - }, - RefSource: &v1beta1.RefSource{ - URI: fmt.Sprintf("/apis/%s/namespaces/%s/%s/%s@%s", v1beta1.SchemeGroupVersion.String(), namespace, "task", exampleTask.Name, exampleTask.UID), + expectedTaskRunProvenance := &v1.Provenance{ + RefSource: &v1.RefSource{ + URI: fmt.Sprintf("/apis/%s/namespaces/%s/%s/%s@%s", v1.SchemeGroupVersion.String(), namespace, "task", exampleTask.Name, exampleTask.UID), Digest: map[string]string{"sha256": sha256CheckSum(taskSpec)}, }, } // example pipeline pipelineName := helpers.ObjectNameForTest(t) - examplePipeline, err := c.V1beta1PipelineClient.Create(ctx, getExamplePipeline(t, pipelineName, taskName, namespace), metav1.CreateOptions{}) + examplePipeline, err := c.V1PipelineClient.Create(ctx, getExamplePipeline(t, pipelineName, taskName, namespace), metav1.CreateOptions{}) if err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", pipelineName, err) } @@ -160,13 +157,9 @@ func TestProvenanceFieldInPipelineRunTaskRunStatus(t *testing.T) { if err != nil { t.Fatalf("couldn't marshal pipeline spec: %v", err) } - expectedPipelineRunProvenance := &v1beta1.Provenance{ - ConfigSource: &v1beta1.ConfigSource{ - URI: fmt.Sprintf("/apis/%s/namespaces/%s/%s/%s@%s", v1beta1.SchemeGroupVersion.String(), namespace, "pipeline", examplePipeline.Name, examplePipeline.UID), - Digest: map[string]string{"sha256": sha256CheckSum(pipelineSpec)}, - }, - RefSource: &v1beta1.RefSource{ - URI: fmt.Sprintf("/apis/%s/namespaces/%s/%s/%s@%s", v1beta1.SchemeGroupVersion.String(), namespace, "pipeline", examplePipeline.Name, examplePipeline.UID), + expectedPipelineRunProvenance := &v1.Provenance{ + RefSource: &v1.RefSource{ + URI: fmt.Sprintf("/apis/%s/namespaces/%s/%s/%s@%s", v1.SchemeGroupVersion.String(), namespace, "pipeline", examplePipeline.Name, examplePipeline.UID), Digest: map[string]string{"sha256": sha256CheckSum(pipelineSpec)}, }, FeatureFlags: &config.FeatureFlags{ @@ -176,17 +169,17 @@ func TestProvenanceFieldInPipelineRunTaskRunStatus(t *testing.T) { // pipelinerun prName := helpers.ObjectNameForTest(t) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, getExamplePipelineRun(t, prName, pipelineName, namespace), metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, getExamplePipelineRun(t, prName, pipelineName, namespace), metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", prName, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", prName, namespace) - if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, prName, timeout, PipelineRunSucceed(prName), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", prName, err) } // Get the updated status of the PipelineRun. - pr, err := c.V1beta1PipelineRunClient.Get(ctx, prName, metav1.GetOptions{}) + pr, err := c.V1PipelineRunClient.Get(ctx, prName, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get PipelineRun %q after it completed: %v", prName, err) } @@ -213,11 +206,11 @@ func TestProvenanceFieldInPipelineRunTaskRunStatus(t *testing.T) { } t.Logf("Waiting for TaskRun %s in namespace %s to complete", taskRunName, namespace) - if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "TaskRunSuccess", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "TaskRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for TaskRun %s to finish: %s", taskRunName, err) } // Get the TaskRun. - taskRun, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + taskRun, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Failed to get TaskRun %q: %v", taskRunName, err) } @@ -232,9 +225,9 @@ func TestProvenanceFieldInPipelineRunTaskRunStatus(t *testing.T) { } } -func getExampleTask(t *testing.T, taskName, namespace string) *v1beta1.Task { +func getExampleTask(t *testing.T, taskName, namespace string) *v1.Task { t.Helper() - return parse.MustParseV1beta1Task(t, fmt.Sprintf(` + return parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -250,10 +243,10 @@ spec: `, taskName, namespace)) } -func getExamplePipeline(t *testing.T, pipelineName, taskName, namespace string) *v1beta1.Pipeline { +func getExamplePipeline(t *testing.T, pipelineName, taskName, namespace string) *v1.Pipeline { t.Helper() - return parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` -apiVersion: tekton.dev/v1beta1 + return parse.MustParseV1Pipeline(t, fmt.Sprintf(` +apiVersion: tekton.dev/v1 kind: Pipeline metadata: name: %s @@ -273,9 +266,9 @@ spec: `, pipelineName, namespace, taskName, namespace)) } -func getExamplePipelineRun(t *testing.T, prName, pipelineName, namespace string) *v1beta1.PipelineRun { +func getExamplePipelineRun(t *testing.T, prName, pipelineName, namespace string) *v1.PipelineRun { t.Helper() - return parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + return parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s diff --git a/test/step_output_test.go b/test/step_output_test.go index 5b64c5e61e9..16e02611f87 100644 --- a/test/step_output_test.go +++ b/test/step_output_test.go @@ -25,7 +25,7 @@ import ( "testing" "time" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" knativetest "knative.dev/pkg/test" @@ -45,11 +45,11 @@ func TestStepOutput(t *testing.T) { wantResultName := "step-cat-stdout" wantResultValue := "hello world" - taskRun := &v1beta1.TaskRun{ + taskRun := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Name: helpers.ObjectNameForTest(t), Namespace: namespace}, - Spec: v1beta1.TaskRunSpec{ - TaskSpec: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + Spec: v1.TaskRunSpec{ + TaskSpec: &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "echo", Image: "busybox", VolumeMounts: []corev1.VolumeMount{{ @@ -57,7 +57,7 @@ func TestStepOutput(t *testing.T) { MountPath: "/data", }}, Script: fmt.Sprintf("echo -n %s", wantResultValue), - StdoutConfig: &v1beta1.StepOutputConfig{ + StdoutConfig: &v1.StepOutputConfig{ Path: "/data/step-echo-stdout", }, }, { @@ -68,14 +68,14 @@ func TestStepOutput(t *testing.T) { MountPath: "/data", }}, Script: "cat /data/step-echo-stdout", - StdoutConfig: &v1beta1.StepOutputConfig{ + StdoutConfig: &v1.StepOutputConfig{ Path: fmt.Sprintf("$(results.%s.path)", wantResultName), }, }}, Volumes: []corev1.Volume{{ Name: "data", }}, - Results: []v1beta1.TaskResult{{ + Results: []v1.TaskResult{{ Name: wantResultName, }}, }, @@ -83,21 +83,21 @@ func TestStepOutput(t *testing.T) { } t.Logf("Creating TaskRun %q in namespace %q", taskRun.Name, taskRun.Namespace) - if _, err := clients.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := clients.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun %q: %s", taskRun.Name, err) } t.Logf("Waiting for TaskRun %q to finish", taskRun.Name) - if err := WaitForTaskRunState(ctx, clients, taskRun.Name, Succeed(taskRun.Name), "TaskRunSucceed", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, clients, taskRun.Name, Succeed(taskRun.Name), "TaskRunSucceed", v1Version); err != nil { t.Errorf("Error waiting for TaskRun %q to finish: %v", taskRun.Name, err) } - tr, err := clients.V1beta1TaskRunClient.Get(ctx, taskRun.Name, metav1.GetOptions{}) + tr, err := clients.V1TaskRunClient.Get(ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Errorf("Error getting Taskrun %q: %v", taskRun.Name, err) } var found bool - for _, result := range tr.Status.TaskRunResults { + for _, result := range tr.Status.Results { if result.Name == wantResultName { found = true if got, want := result.Value.StringVal, wantResultValue; got != want { @@ -123,34 +123,34 @@ func TestStepOutputWithWorkspace(t *testing.T) { wantResultName := "step-cat-stdout" wantResultValue := "hello world" - taskRun := &v1beta1.TaskRun{ + taskRun := &v1.TaskRun{ ObjectMeta: metav1.ObjectMeta{Name: helpers.ObjectNameForTest(t), Namespace: namespace}, - Spec: v1beta1.TaskRunSpec{ - Workspaces: []v1beta1.WorkspaceBinding{{ + Spec: v1.TaskRunSpec{ + Workspaces: []v1.WorkspaceBinding{{ Name: "data", EmptyDir: &corev1.EmptyDirVolumeSource{}, }}, - TaskSpec: &v1beta1.TaskSpec{ - Steps: []v1beta1.Step{{ + TaskSpec: &v1.TaskSpec{ + Steps: []v1.Step{{ Name: "echo", Image: "busybox", Script: fmt.Sprintf("echo -n %s", wantResultValue), - StdoutConfig: &v1beta1.StepOutputConfig{ + StdoutConfig: &v1.StepOutputConfig{ Path: "/data/step-echo-stdout", }, }, { Name: "cat", Image: "busybox", Script: "cat /data/step-echo-stdout", - StdoutConfig: &v1beta1.StepOutputConfig{ + StdoutConfig: &v1.StepOutputConfig{ Path: fmt.Sprintf("$(results.%s.path)", wantResultName), }, }}, - Workspaces: []v1beta1.WorkspaceDeclaration{{ + Workspaces: []v1.WorkspaceDeclaration{{ Name: "data", MountPath: "/data", }}, - Results: []v1beta1.TaskResult{{ + Results: []v1.TaskResult{{ Name: wantResultName, }}, }, @@ -158,21 +158,21 @@ func TestStepOutputWithWorkspace(t *testing.T) { } t.Logf("Creating TaskRun %q in namespace %q", taskRun.Name, taskRun.Namespace) - if _, err := clients.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := clients.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun %q: %s", taskRun.Name, err) } t.Logf("Waiting for TaskRun %q to finish", taskRun.Name) - if err := WaitForTaskRunState(ctx, clients, taskRun.Name, Succeed(taskRun.Name), "TaskRunSucceed", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, clients, taskRun.Name, Succeed(taskRun.Name), "TaskRunSucceed", v1Version); err != nil { t.Errorf("Error waiting for TaskRun %q to finish: %v", taskRun.Name, err) } - tr, err := clients.V1beta1TaskRunClient.Get(ctx, taskRun.Name, metav1.GetOptions{}) + tr, err := clients.V1TaskRunClient.Get(ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Errorf("Error getting Taskrun %q: %v", taskRun.Name, err) } var found bool - for _, result := range tr.Status.TaskRunResults { + for _, result := range tr.Status.Results { if result.Name == wantResultName { found = true if got, want := result.Value.StringVal, wantResultValue; got != want { diff --git a/test/taskrun_test.go b/test/taskrun_test.go index 3cf8762c3e9..f772c53eff1 100644 --- a/test/taskrun_test.go +++ b/test/taskrun_test.go @@ -28,7 +28,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/pod" "github.com/tektoncd/pipeline/test/parse" corev1 "k8s.io/api/core/v1" @@ -51,7 +51,7 @@ func TestTaskRunFailure(t *testing.T) { taskRunName := helpers.ObjectNameForTest(t) t.Logf("Creating Task and TaskRun in namespace %s", namespace) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -67,10 +67,10 @@ spec: command: ['/bin/sh'] args: ['-c', 'sleep 30s'] `, helpers.ObjectNameForTest(t), namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task: %s", err) } - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -78,29 +78,29 @@ spec: taskRef: name: %s `, taskRunName, namespace, task.Name)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to fail", namespace) - if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunFailed(taskRunName), "TaskRunFailed", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunFailed(taskRunName), "TaskRunFailed", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish: %s", err) } - taskrun, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + taskrun, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected TaskRun %s: %s", taskRunName, err) } - expectedStepState := []v1beta1.StepState{{ + expectedStepState := []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 0, Reason: "Completed", }, }, - Name: "unnamed-0", - ContainerName: "step-unnamed-0", + Name: "unnamed-0", + Container: "step-unnamed-0", }, { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ @@ -108,8 +108,8 @@ spec: Reason: "Error", }, }, - Name: "unnamed-1", - ContainerName: "step-unnamed-1", + Name: "unnamed-1", + Container: "step-unnamed-1", }, { ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ @@ -117,11 +117,11 @@ spec: Reason: "Error", }, }, - Name: "unnamed-2", - ContainerName: "step-unnamed-2", + Name: "unnamed-2", + Container: "step-unnamed-2", }} ignoreTerminatedFields := cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID") - ignoreStepFields := cmpopts.IgnoreFields(v1beta1.StepState{}, "ImageID") + ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID") if d := cmp.Diff(taskrun.Status.Steps, expectedStepState, ignoreTerminatedFields, ignoreStepFields); d != "" { t.Fatalf("-got, +want: %v", d) } @@ -149,7 +149,7 @@ func TestTaskRunStatus(t *testing.T) { fqImageName := getTestImage(busyboxImage) t.Logf("Creating Task and TaskRun in namespace %s", namespace) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -159,10 +159,10 @@ spec: command: ['/bin/sh'] args: ['-c', 'echo hello'] `, helpers.ObjectNameForTest(t), namespace, fqImageName)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task: %s", err) } - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -170,33 +170,33 @@ spec: taskRef: name: %s `, taskRunName, namespace, task.Name)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to fail", namespace) - if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "TaskRunSucceed", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "TaskRunSucceed", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish: %s", err) } - taskrun, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + taskrun, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected TaskRun %s: %s", taskRunName, err) } - expectedStepState := []v1beta1.StepState{{ + expectedStepState := []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 0, Reason: "Completed", }, }, - Name: "unnamed-0", - ContainerName: "step-unnamed-0", + Name: "unnamed-0", + Container: "step-unnamed-0", }} ignoreTerminatedFields := cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID") - ignoreStepFields := cmpopts.IgnoreFields(v1beta1.StepState{}, "ImageID") + ignoreStepFields := cmpopts.IgnoreFields(v1.StepState{}, "ImageID") if d := cmp.Diff(taskrun.Status.Steps, expectedStepState, ignoreTerminatedFields, ignoreStepFields); d != "" { t.Fatalf("-got, +want: %v", d) } diff --git a/test/tektonbundles_test.go b/test/tektonbundles_test.go index 7444f5aee02..de300c5b5f0 100644 --- a/test/tektonbundles_test.go +++ b/test/tektonbundles_test.go @@ -53,8 +53,9 @@ var bundleFeatureFlags = requireAnyGate(map[string]string{ "enable-api-fields": "alpha", }) -var resolverFeatureFlags = requireAnyGate(map[string]string{ +var resolverFeatureFlags = requireAllGates(map[string]string{ "enable-bundles-resolver": "true", + "enable-api-fields": "beta", }) // TestTektonBundlesSimpleWorkingExample is an integration test which tests a simple, working Tekton bundle using OCI @@ -196,7 +197,7 @@ spec: setupBundle(ctx, t, c, namespace, repo, task, pipeline) // Now generate a PipelineRun to invoke this pipeline and task. - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s spec: @@ -210,16 +211,16 @@ spec: - name: kind value: pipeline `, pipelineRunName, repo, pipelineName)) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pr, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pr, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun: %s", err) } t.Logf("Waiting for PipelineRun in namespace %s to finish", namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRunName, timeout, PipelineRunSucceed(pipelineRunName), "PipelineRunCompleted", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRunName, timeout, PipelineRunSucceed(pipelineRunName), "PipelineRunCompleted", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun to finish with error: %s", err) } - trs, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{}) + trs, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{}) if err != nil { t.Errorf("Error retrieving taskrun: %s", err) } diff --git a/test/timeout_test.go b/test/timeout_test.go index 253b30d7c7b..1667d24fb62 100644 --- a/test/timeout_test.go +++ b/test/timeout_test.go @@ -28,7 +28,7 @@ import ( "time" "github.com/google/go-cmp/cmp" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/parse" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -51,7 +51,7 @@ func TestPipelineRunTimeout(t *testing.T) { defer tearDown(context.Background(), t, c, namespace) t.Logf("Creating Task in namespace %s", namespace) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -61,11 +61,11 @@ spec: command: ['/bin/sh'] args: ['-c', 'sleep 10'] `, helpers.ObjectNameForTest(t), namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task `%s`: %s", task.Name, err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -75,34 +75,35 @@ spec: taskRef: name: %s `, helpers.ObjectNameForTest(t), namespace, task.Name)) - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s spec: pipelineRef: name: %s - timeout: 5s + timeouts: + pipeline: 5s `, helpers.ObjectNameForTest(t), namespace, pipeline.Name)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", pipeline.Name, err) } - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", pipelineRun.Name, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to be timed out", pipelineRun.Name, namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1beta1.PipelineRunReasonTimedOut.String(), pipelineRun.Name), "PipelineRunTimedOut", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1.PipelineRunReasonTimedOut.String(), pipelineRun.Name), "PipelineRunTimedOut", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun %s to finish: %s", pipelineRun.Name, err) } - taskrunList, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", pipelineRun.Name)}) + taskrunList, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", pipelineRun.Name)}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", pipelineRun.Name, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to be timed out", pipelineRun.Name, namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1beta1.PipelineRunReasonTimedOut.String(), pipelineRun.Name), "PipelineRunTimedOut", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1.PipelineRunReasonTimedOut.String(), pipelineRun.Name), "PipelineRunTimedOut", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun %s to finish: %s", pipelineRun.Name, err) } @@ -112,7 +113,7 @@ spec: wg.Add(1) go func(name string) { defer wg.Done() - err := WaitForTaskRunState(ctx, c, name, FailedWithReason(v1beta1.TaskRunReasonCancelled.String(), name), v1beta1.TaskRunReasonCancelled.String(), v1beta1Version) + err := WaitForTaskRunState(ctx, c, name, FailedWithReason(v1.TaskRunReasonCancelled.String(), name), v1.TaskRunReasonCancelled.String(), v1Version) if err != nil { t.Errorf("Error waiting for TaskRun %s to timeout: %s", name, err) } @@ -120,13 +121,13 @@ spec: } wg.Wait() - if _, err := c.V1beta1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Get(ctx, pipelineRun.Name, metav1.GetOptions{}); err != nil { t.Fatalf("Failed to get PipelineRun `%s`: %s", pipelineRun.Name, err) } // Verify that we can create a second Pipeline using the same Task without a Pipeline-level timeout that will not // time out - secondPipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + secondPipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -136,7 +137,7 @@ spec: taskRef: name: %s `, helpers.ObjectNameForTest(t), namespace, task.Name)) - secondPipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + secondPipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -144,15 +145,15 @@ spec: pipelineRef: name: %s `, helpers.ObjectNameForTest(t), namespace, secondPipeline.Name)) - if _, err := c.V1beta1PipelineClient.Create(ctx, secondPipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, secondPipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", secondPipeline.Name, err) } - if _, err := c.V1beta1PipelineRunClient.Create(ctx, secondPipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, secondPipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", secondPipelineRun.Name, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to complete", secondPipelineRun.Name, namespace) - if err := WaitForPipelineRunState(ctx, c, secondPipelineRun.Name, timeout, PipelineRunSucceed(secondPipelineRun.Name), "PipelineRunSuccess", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, secondPipelineRun.Name, timeout, PipelineRunSucceed(secondPipelineRun.Name), "PipelineRunSuccess", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", secondPipelineRun.Name, err) } } @@ -169,7 +170,7 @@ func TestStepTimeout(t *testing.T) { t.Logf("Creating Task with Step step-no-timeout, Step step-timeout, and Step step-canceled in namespace %s", namespace) - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -189,18 +190,18 @@ spec: script: sleep 1 `, helpers.ObjectNameForTest(t), namespace)) t.Logf("Creating TaskRun %s in namespace %s", taskRun.Name, namespace) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun `%s`: %s", taskRun.Name, err) } failMsg := "\"step-timeout\" exited because the step exceeded the specified timeout limit" t.Logf("Waiting for %s in namespace %s to time out", "step-timeout", namespace) - if err := WaitForTaskRunState(ctx, c, taskRun.Name, FailedWithMessage(failMsg, taskRun.Name), "StepTimeout", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRun.Name, FailedWithMessage(failMsg, taskRun.Name), "StepTimeout", v1Version); err != nil { t.Logf("Error in taskRun %s status: %s\n", taskRun.Name, err) t.Errorf("Expected: %s", failMsg) } - tr, err := c.V1beta1TaskRunClient.Get(ctx, taskRun.Name, metav1.GetOptions{}) + tr, err := c.V1TaskRunClient.Get(ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Errorf("Error getting Taskrun: %v", err) } @@ -229,7 +230,7 @@ func TestStepTimeoutWithWS(t *testing.T) { knativetest.CleanupOnInterrupt(func() { tearDown(context.Background(), t, c, namespace) }, t.Logf) defer tearDown(context.Background(), t, c, namespace) - taskRun := parse.MustParseV1beta1TaskRun(t, ` + taskRun := parse.MustParseV1TaskRun(t, ` metadata: name: taskrun-with-timeout-step spec: @@ -246,13 +247,13 @@ spec: timeout: 1ms`) t.Logf("Creating TaskRun %s in namespace %s", taskRun.Name, namespace) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun `%s`: %s", taskRun.Name, err) } failMsg := "\"step-timeout\" exited because the step exceeded the specified timeout limit" t.Logf("Waiting for %s in namespace %s to time out", "step-timeout", namespace) - if err := WaitForTaskRunState(ctx, c, taskRun.Name, FailedWithMessage(failMsg, taskRun.Name), "StepTimeout", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRun.Name, FailedWithMessage(failMsg, taskRun.Name), "StepTimeout", v1Version); err != nil { t.Logf("Error in taskRun %s status: %s\n", taskRun.Name, err) t.Errorf("Expected: %s", failMsg) } @@ -270,7 +271,7 @@ func TestTaskRunTimeout(t *testing.T) { defer tearDown(context.Background(), t, c, namespace) t.Logf("Creating Task and TaskRun in namespace %s", namespace) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -280,10 +281,10 @@ spec: command: ['/bin/sh'] args: ['-c', 'sleep 3000'] `, helpers.ObjectNameForTest(t), namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task `%s`: %s", task.Name, err) } - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -292,16 +293,16 @@ spec: name: %s timeout: %s `, helpers.ObjectNameForTest(t), namespace, task.Name, timeout)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun `%s`: %s", taskRun.Name, err) } t.Logf("Waiting for TaskRun %s in namespace %s to complete", taskRun.Name, namespace) - if err := WaitForTaskRunState(ctx, c, taskRun.Name, FailedWithReason(v1beta1.TaskRunReasonTimedOut.String(), taskRun.Name), v1beta1.TaskRunReasonTimedOut.String(), v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRun.Name, FailedWithReason(v1.TaskRunReasonTimedOut.String(), taskRun.Name), v1.TaskRunReasonTimedOut.String(), v1Version); err != nil { t.Errorf("Error waiting for TaskRun %s to finish: %s", taskRun.Name, err) } - tr, err := c.V1beta1TaskRunClient.Get(ctx, taskRun.Name, metav1.GetOptions{}) + tr, err := c.V1TaskRunClient.Get(ctx, taskRun.Name, metav1.GetOptions{}) if err != nil { t.Errorf("Error retrieving TaskRun %s: %v", taskRun.Name, err) } @@ -310,7 +311,7 @@ spec: if step.Terminated == nil { t.Errorf("TaskRun %s step %s does not have a terminated state but should", taskRun.Name, step.Name) } - if d := cmp.Diff(step.Terminated.Reason, v1beta1.TaskRunReasonTimedOut.String()); d != "" { + if d := cmp.Diff(step.Terminated.Reason, v1.TaskRunReasonTimedOut.String()); d != "" { t.Fatalf("-got, +want: %v", d) } } @@ -326,7 +327,7 @@ func TestPipelineTaskTimeout(t *testing.T) { defer tearDown(context.Background(), t, c, namespace) t.Logf("Creating Tasks in namespace %s", namespace) - task1 := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task1 := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -336,7 +337,7 @@ spec: command: ['/bin/sh'] args: ['-c', 'sleep 1s'] `, helpers.ObjectNameForTest(t), namespace)) - task2 := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task2 := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -347,14 +348,14 @@ spec: args: ['-c', 'sleep 10s'] `, helpers.ObjectNameForTest(t), namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task1, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task1, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task `%s`: %s", task1.Name, err) } - if _, err := c.V1beta1TaskClient.Create(ctx, task2, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task2, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task `%s`: %s", task2.Name, err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -369,7 +370,7 @@ spec: name: %s timeout: 5s `, helpers.ObjectNameForTest(t), namespace, task1.Name, task2.Name)) - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -378,19 +379,19 @@ spec: name: %s `, helpers.ObjectNameForTest(t), namespace, pipeline.Name)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", pipeline.Name, err) } - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", pipelineRun.Name, err) } t.Logf("Waiting for PipelineRun %s with PipelineTask timeout in namespace %s to fail", pipelineRun.Name, namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1beta1.PipelineRunReasonFailed.String(), pipelineRun.Name), "PipelineRunTimedOut", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1.PipelineRunReasonFailed.String(), pipelineRun.Name), "PipelineRunTimedOut", v1Version); err != nil { t.Fatalf("Error waiting for PipelineRun %s to finish: %s", pipelineRun.Name, err) } - taskrunList, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", pipelineRun.Name)}) + taskrunList, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", pipelineRun.Name)}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", pipelineRun.Name, err) } @@ -399,7 +400,7 @@ spec: var wg sync.WaitGroup for _, taskrunItem := range taskrunList.Items { wg.Add(1) - go func(tr v1beta1.TaskRun) { + go func(tr v1.TaskRun) { defer wg.Done() name := tr.Name err := WaitForTaskRunState(ctx, c, name, func(ca apis.ConditionAccessor) (bool, error) { @@ -415,7 +416,7 @@ spec: } if tr.Spec.TaskRef.Name == task2.Name && cond.Status == corev1.ConditionFalse { - if cond.Reason == v1beta1.TaskRunReasonTimedOut.String() { + if cond.Reason == v1.TaskRunReasonTimedOut.String() { return true, nil } return true, fmt.Errorf("taskRun %q completed with the wrong reason: %s", task2.Name, cond.Reason) @@ -424,7 +425,7 @@ spec: } } return false, nil - }, v1beta1.TaskRunReasonCancelled.String(), v1beta1Version) + }, v1.TaskRunReasonCancelled.String(), v1Version) if err != nil { t.Errorf("Error waiting for TaskRun %s to timeout: %s", name, err) } @@ -447,7 +448,7 @@ func TestPipelineRunTasksTimeout(t *testing.T) { defer tearDown(context.Background(), t, c, namespace) t.Logf("Creating Task in namespace %s", namespace) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -457,12 +458,12 @@ spec: command: ['/bin/sh'] args: ['-c', 'sleep 30'] `, helpers.ObjectNameForTest(t), namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task `%s`: %s", task.Name, err) } t.Logf("Creating Finally Task in namespace %s", namespace) - fTask := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + fTask := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -472,11 +473,11 @@ spec: command: ['/bin/sh'] args: ['-c', 'sleep 1'] `, helpers.ObjectNameForTest(t), namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, fTask, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, fTask, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task `%s`: %s", fTask.Name, err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -490,7 +491,7 @@ spec: taskRef: name: %s `, helpers.ObjectNameForTest(t), namespace, task.Name, fTask.Name)) - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -502,19 +503,19 @@ spec: tasks: 20s finally: 20s `, helpers.ObjectNameForTest(t), namespace, pipeline.Name)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline `%s`: %s", pipeline.Name, err) } - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", pipelineRun.Name, err) } t.Logf("Waiting for PipelineRun %s in namespace %s to be failed", pipelineRun.Name, namespace) - if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1beta1.PipelineRunReasonFailed.String(), pipelineRun.Name), "PipelineRunFailed", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRun.Name, timeout, FailedWithReason(v1.PipelineRunReasonFailed.String(), pipelineRun.Name), "PipelineRunFailed", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun %s to finish: %s", pipelineRun.Name, err) } - taskrunList, err := c.V1beta1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", pipelineRun.Name)}) + taskrunList, err := c.V1TaskRunClient.List(ctx, metav1.ListOptions{LabelSelector: fmt.Sprintf("tekton.dev/pipelineRun=%s", pipelineRun.Name)}) if err != nil { t.Fatalf("Error listing TaskRuns for PipelineRun %s: %s", pipelineRun.Name, err) } @@ -523,7 +524,7 @@ spec: var wg sync.WaitGroup for _, taskrunItem := range taskrunList.Items { wg.Add(1) - go func(tr v1beta1.TaskRun) { + go func(tr v1.TaskRun) { defer wg.Done() name := tr.Name err := WaitForTaskRunState(ctx, c, name, func(ca apis.ConditionAccessor) (bool, error) { @@ -539,10 +540,10 @@ spec: } if tr.Spec.TaskRef.Name == task.Name && cond.Status == corev1.ConditionFalse { - if !strings.Contains(cond.Message, string(v1beta1.TaskRunCancelledByPipelineTimeoutMsg)) { + if !strings.Contains(cond.Message, string(v1.TaskRunCancelledByPipelineTimeoutMsg)) { return true, fmt.Errorf("taskRun %s completed with the wrong message: %s", task.Name, cond.Message) } - if cond.Reason == v1beta1.TaskRunReasonCancelled.String() { + if cond.Reason == v1.TaskRunReasonCancelled.String() { return true, nil } return true, fmt.Errorf("taskRun %q completed with the wrong reason: %s", task.Name, cond.Reason) @@ -551,7 +552,7 @@ spec: } } return false, nil - }, v1beta1.TaskRunReasonCancelled.String(), v1beta1Version) + }, v1.TaskRunReasonCancelled.String(), v1Version) if err != nil { t.Errorf("Error waiting for TaskRun %s to timeout: %s", name, err) diff --git a/test/trusted_resources_test.go b/test/trusted_resources_test.go index 2b1f6eeb8f6..f1b74c2c4b6 100644 --- a/test/trusted_resources_test.go +++ b/test/trusted_resources_test.go @@ -85,7 +85,7 @@ spec: } fqImageName := getTestImage(busyboxImage) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -96,15 +96,15 @@ spec: args: ['-c', 'echo hello'] `, helpers.ObjectNameForTest(t), namespace, fqImageName)) - signedTask, err := GetSignedV1beta1Task(task, signer, "signedtask") + signedTask, err := GetSignedV1Task(task, signer, "signedtask") if err != nil { t.Errorf("error getting signed task: %v", err) } - if _, err := c.V1beta1TaskClient.Create(ctx, signedTask, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, signedTask, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task: %s", err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -123,16 +123,16 @@ spec: value: %s `, helpers.ObjectNameForTest(t), namespace, signedTask.Name, namespace)) - signedPipeline, err := GetSignedV1beta1Pipeline(pipeline, signer, "signedpipeline") + signedPipeline, err := GetSignedV1Pipeline(pipeline, signer, "signedpipeline") if err != nil { t.Errorf("error getting signed pipeline: %v", err) } - if _, err := c.V1beta1PipelineClient.Create(ctx, signedPipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, signedPipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline: %s", err) } - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -150,16 +150,16 @@ spec: `, helpers.ObjectNameForTest(t), namespace, signedPipeline.Name, namespace)) t.Logf("Creating PipelineRun %s", pr.Name) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pr, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pr, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", pr.Name, err) } t.Logf("Waiting for PipelineRun in namespace %s to succeed", namespace) - if err := WaitForPipelineRunState(ctx, c, pr.Name, timeout, PipelineRunSucceed(pr.Name), "PipelineRunSucceed", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pr.Name, timeout, PipelineRunSucceed(pr.Name), "PipelineRunSucceed", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun to finish: %s", err) } - pr, err = c.V1beta1PipelineRunClient.Get(ctx, pr.Name, metav1.GetOptions{}) + pr, err = c.V1PipelineRunClient.Get(ctx, pr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected PipelineRun %s: %s", pr.Name, err) } @@ -199,7 +199,7 @@ spec: } fqImageName := getTestImage(busyboxImage) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -210,17 +210,17 @@ spec: args: ['-c', 'echo hello'] `, helpers.ObjectNameForTest(t), namespace, fqImageName)) - signedTask, err := GetSignedV1beta1Task(task, signer, "signedtask") + signedTask, err := GetSignedV1Task(task, signer, "signedtask") if err != nil { t.Errorf("error getting signed task: %v", err) } // modify the task to fail the verification signedTask.Annotations["foo"] = "bar" - if _, err := c.V1beta1TaskClient.Create(ctx, signedTask, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, signedTask, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task: %s", err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -239,16 +239,16 @@ spec: value: %s `, helpers.ObjectNameForTest(t), namespace, signedTask.Name, namespace)) - signedPipeline, err := GetSignedV1beta1Pipeline(pipeline, signer, "signedpipeline") + signedPipeline, err := GetSignedV1Pipeline(pipeline, signer, "signedpipeline") if err != nil { t.Errorf("error getting signed pipeline: %v", err) } - if _, err := c.V1beta1PipelineClient.Create(ctx, signedPipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, signedPipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline: %s", err) } - pr := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pr := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -266,16 +266,16 @@ spec: `, helpers.ObjectNameForTest(t), namespace, signedPipeline.Name, namespace)) t.Logf("Creating PipelineRun %s", pr.Name) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pr, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pr, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun `%s`: %s", pr.Name, err) } t.Logf("Waiting for PipelineRun in namespace %s to fail", namespace) - if err := WaitForPipelineRunState(ctx, c, pr.Name, timeout, PipelineRunFailed(pr.Name), "PipelineRunFailed", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pr.Name, timeout, PipelineRunFailed(pr.Name), "PipelineRunFailed", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun to finish: %s", err) } - pr, err = c.V1beta1PipelineRunClient.Get(ctx, pr.Name, metav1.GetOptions{}) + pr, err = c.V1PipelineRunClient.Get(ctx, pr.Name, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected PipelineRun %s: %s", pr.Name, err) } diff --git a/test/trustedresources.go b/test/trustedresources.go index e887603567c..d2d9980a2b9 100644 --- a/test/trustedresources.go +++ b/test/trustedresources.go @@ -34,10 +34,10 @@ import ( "github.com/sigstore/sigstore/pkg/cryptoutils" "github.com/sigstore/sigstore/pkg/signature" "github.com/tektoncd/pipeline/pkg/apis/config" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1alpha1" "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" corev1 "k8s.io/api/core/v1" - v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" fakek8s "k8s.io/client-go/kubernetes/fake" "knative.dev/pkg/logging" @@ -132,7 +132,7 @@ func SetupVerificationPolicies(t *testing.T) (signature.SignerVerifier, *ecdsa.P t.Fatalf("failed to generate keys %v", err) } - secret := &v1.Secret{ + secret := &corev1.Secret{ Data: map[string][]byte{"cosign.pub": pub}, ObjectMeta: metav1.ObjectMeta{ Name: "verification-secrets", @@ -164,7 +164,7 @@ func SetupVerificationPolicies(t *testing.T) (signature.SignerVerifier, *ecdsa.P { Name: "pubkey", Key: &v1alpha1.KeyRef{ - SecretRef: &v1.SecretReference{ + SecretRef: &corev1.SecretReference{ Name: secret.Name, Namespace: secret.Namespace, }, @@ -199,7 +199,7 @@ func SetupVerificationPolicies(t *testing.T) (signature.SignerVerifier, *ecdsa.P { Name: "pubkey", Key: &v1alpha1.KeyRef{ - SecretRef: &v1.SecretReference{ + SecretRef: &corev1.SecretReference{ Name: secret.Name, Namespace: secret.Namespace, }, @@ -224,7 +224,7 @@ func SetupMatchAllVerificationPolicies(t *testing.T, namespace string) (signatur t.Fatalf("failed to generate keys %v", err) } - secret := &v1.Secret{ + secret := &corev1.Secret{ Data: map[string][]byte{"cosign.pub": pub}, ObjectMeta: metav1.ObjectMeta{ Name: "verification-secrets", @@ -354,6 +354,36 @@ func GetSignedV1beta1Task(unsigned *v1beta1.Task, signer signature.Signer, name return signedTask, nil } +// GetSignedV1Pipeline signed the given pipeline and rename it with given name +func GetSignedV1Pipeline(unsigned *v1.Pipeline, signer signature.Signer, name string) (*v1.Pipeline, error) { + signedPipeline := unsigned.DeepCopy() + signedPipeline.Name = name + if signedPipeline.Annotations == nil { + signedPipeline.Annotations = map[string]string{} + } + signature, err := signInterface(signer, signedPipeline) + if err != nil { + return nil, err + } + signedPipeline.Annotations[signatureAnnotation] = base64.StdEncoding.EncodeToString(signature) + return signedPipeline, nil +} + +// GetSignedV1Task signed the given task and rename it with given name +func GetSignedV1Task(unsigned *v1.Task, signer signature.Signer, name string) (*v1.Task, error) { + signedTask := unsigned.DeepCopy() + signedTask.Name = name + if signedTask.Annotations == nil { + signedTask.Annotations = map[string]string{} + } + signature, err := signInterface(signer, signedTask) + if err != nil { + return nil, err + } + signedTask.Annotations[signatureAnnotation] = base64.StdEncoding.EncodeToString(signature) + return signedTask, nil +} + func getPass(confirm bool) ([]byte, error) { read := read(confirm) return read() diff --git a/test/wait.go b/test/wait.go index b22e3111074..70ad1b0466f 100644 --- a/test/wait.go +++ b/test/wait.go @@ -62,6 +62,7 @@ import ( const ( interval = 1 * time.Second timeout = 10 * time.Minute + v1Version = "v1" v1beta1Version = "v1beta1" ) @@ -91,7 +92,7 @@ func WaitForTaskRunState(ctx context.Context, c *clients, name string, inState C return pollImmediateWithContext(ctx, func() (bool, error) { switch version { - case "v1": + case v1Version: r, err := c.V1TaskRunClient.Get(ctx, name, metav1.GetOptions{}) if err != nil { return true, err diff --git a/test/wait_example_test.go b/test/wait_example_test.go index c33df4ddd99..fec2aab629d 100644 --- a/test/wait_example_test.go +++ b/test/wait_example_test.go @@ -54,7 +54,7 @@ func ExampleWaitForTaskRunState() { } } return false, nil - }, "TaskRunHasCondition", v1beta1Version); err != nil { + }, "TaskRunHasCondition", v1Version); err != nil { t.Errorf("Error waiting for TaskRun taskRunName to finish: %s", err) } } @@ -73,7 +73,7 @@ func ExampleWaitForPipelineRunState() { } } return false, nil - }, "PipelineRunHasCondition", v1beta1Version); err != nil { + }, "PipelineRunHasCondition", v1Version); err != nil { t.Errorf("Error waiting for PipelineRun pipelineRunName to finish: %s", err) } } diff --git a/test/windows_script_test.go b/test/windows_script_test.go index 61e5460c2f9..0185aad2ced 100644 --- a/test/windows_script_test.go +++ b/test/windows_script_test.go @@ -22,7 +22,7 @@ import ( "testing" "github.com/google/go-cmp/cmp" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/parse" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -44,7 +44,7 @@ func TestWindowsScript(t *testing.T) { taskRunName := helpers.ObjectNameForTest(t) t.Logf("Creating TaskRun in namespace %s", namespace) - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -63,21 +63,21 @@ spec: #!win echo Hello `, taskRunName, namespace)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to finish", namespace) - if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "TaskRunSucceeded", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "TaskRunSucceeded", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish: %s", err) } - taskrun, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + taskrun, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected TaskRun %s: %s", taskRunName, err) } - expectedStepState := []v1beta1.StepState{{ + expectedStepState := []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 0, @@ -115,7 +115,7 @@ func TestWindowsScriptFailure(t *testing.T) { taskRunName := helpers.ObjectNameForTest(t) t.Logf("Creating TaskRun in namespace %s", namespace) - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -138,21 +138,21 @@ spec: #!win pwsh.exe -File echo Hello `, taskRunName, namespace)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to fail", namespace) - if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunFailed(taskRunName), "TaskRunFailed", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunFailed(taskRunName), "TaskRunFailed", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish: %s", err) } - taskrun, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + taskrun, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected TaskRun %s: %s", taskRunName, err) } - expectedStepState := []v1beta1.StepState{{ + expectedStepState := []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 0, diff --git a/test/windows_test.go b/test/windows_test.go index a6277337ff4..5b77b603645 100644 --- a/test/windows_test.go +++ b/test/windows_test.go @@ -26,7 +26,7 @@ import ( "github.com/google/go-cmp/cmp" "github.com/google/go-cmp/cmp/cmpopts" - "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1beta1" + v1 "github.com/tektoncd/pipeline/pkg/apis/pipeline/v1" "github.com/tektoncd/pipeline/test/parse" corev1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" @@ -36,7 +36,7 @@ import ( var ( ignoreTerminatedFields = cmpopts.IgnoreFields(corev1.ContainerStateTerminated{}, "StartedAt", "FinishedAt", "ContainerID") - ignoreStepFields = cmpopts.IgnoreFields(v1beta1.StepState{}, "ImageID") + ignoreStepFields = cmpopts.IgnoreFields(v1.StepState{}, "ImageID") ) func TestWindows(t *testing.T) { @@ -53,7 +53,7 @@ func TestWindows(t *testing.T) { taskRunName := helpers.ObjectNameForTest(t) t.Logf("Creating TaskRun in namespace %s", namespace) - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -67,21 +67,21 @@ spec: command: ['cmd.exe'] image: mcr.microsoft.com/windows/nanoserver:1809 `, taskRunName, namespace)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to finish", namespace) - if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "TaskRunSucceeded", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "TaskRunSucceeded", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish: %s", err) } - taskrun, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + taskrun, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected TaskRun %s: %s", taskRunName, err) } - expectedStepState := []v1beta1.StepState{{ + expectedStepState := []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 0, @@ -110,7 +110,7 @@ func TestWindowsFailure(t *testing.T) { taskRunName := helpers.ObjectNameForTest(t) t.Logf("Creating TaskRun in namespace %s", namespace) - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -130,21 +130,21 @@ spec: command: ['cmd.exe'] image: mcr.microsoft.com/windows/nanoserver:1809 `, taskRunName, namespace)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to fail", namespace) - if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunFailed(taskRunName), "TaskRunFailed", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunFailed(taskRunName), "TaskRunFailed", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish: %s", err) } - taskrun, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + taskrun, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Fatalf("Couldn't get expected TaskRun %s: %s", taskRunName, err) } - expectedStepState := []v1beta1.StepState{{ + expectedStepState := []v1.StepState{{ ContainerState: corev1.ContainerState{ Terminated: &corev1.ContainerStateTerminated{ ExitCode: 0, diff --git a/test/workingdir_test.go b/test/workingdir_test.go index 7d725a5a184..5fc67c516e3 100644 --- a/test/workingdir_test.go +++ b/test/workingdir_test.go @@ -45,7 +45,7 @@ func TestWorkingDirCreated(t *testing.T) { wdTaskName := helpers.ObjectNameForTest(t) wdTaskRunName := helpers.ObjectNameForTest(t) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -55,12 +55,12 @@ spec: workingDir: /workspace/HELLOMOTO args: ['-c', 'echo YES'] `, wdTaskName, namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task: %s", err) } t.Logf("Creating TaskRun namespace %s", namespace) - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -69,16 +69,16 @@ spec: name: %s serviceAccountName: default `, wdTaskRunName, namespace, wdTaskName)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to finish successfully", namespace) - if err := WaitForTaskRunState(ctx, c, wdTaskRunName, TaskRunSucceed(wdTaskRunName), "TaskRunSuccess", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, wdTaskRunName, TaskRunSucceed(wdTaskRunName), "TaskRunSuccess", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish successfully: %s", err) } - tr, err := c.V1beta1TaskRunClient.Get(ctx, wdTaskRunName, metav1.GetOptions{}) + tr, err := c.V1TaskRunClient.Get(ctx, wdTaskRunName, metav1.GetOptions{}) if err != nil { t.Errorf("Error retrieving taskrun: %s", err) } @@ -118,7 +118,7 @@ func TestWorkingDirIgnoredNonSlashWorkspace(t *testing.T) { wdTaskName := helpers.ObjectNameForTest(t) wdTaskRunName := helpers.ObjectNameForTest(t) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -128,12 +128,12 @@ spec: workingDir: /HELLOMOTO args: ['-c', 'echo YES'] `, wdTaskName, namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task: %s", err) } t.Logf("Creating TaskRun namespace %s", namespace) - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -142,16 +142,16 @@ spec: name: %s serviceAccountName: default `, wdTaskRunName, namespace, wdTaskName)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to finish successfully", namespace) - if err := WaitForTaskRunState(ctx, c, wdTaskRunName, TaskRunSucceed(wdTaskRunName), "TaskRunSuccess", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, wdTaskRunName, TaskRunSucceed(wdTaskRunName), "TaskRunSuccess", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish successfully: %s", err) } - tr, err := c.V1beta1TaskRunClient.Get(ctx, wdTaskRunName, metav1.GetOptions{}) + tr, err := c.V1TaskRunClient.Get(ctx, wdTaskRunName, metav1.GetOptions{}) if err != nil { t.Errorf("Error retrieving taskrun: %s", err) } diff --git a/test/workspace_test.go b/test/workspace_test.go index cce3d25d0e7..8a03ed1ce4e 100644 --- a/test/workspace_test.go +++ b/test/workspace_test.go @@ -45,7 +45,7 @@ func TestWorkspaceReadOnlyDisallowsWrite(t *testing.T) { knativetest.CleanupOnInterrupt(func() { tearDown(ctx, t, c, namespace) }, t.Logf) defer tearDown(ctx, t, c, namespace) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -59,11 +59,11 @@ spec: mountPath: /workspace/test readOnly: true `, taskName, namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task: %s", err) } - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -75,16 +75,16 @@ spec: - name: test emptyDir: {} `, taskRunName, namespace, taskName)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to finish", namespace) - if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunFailed(taskRunName), "error", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunFailed(taskRunName), "error", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish with error: %s", err) } - tr, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + tr, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Errorf("Error retrieving taskrun: %s", err) } @@ -123,7 +123,7 @@ func TestWorkspacePipelineRunDuplicateWorkspaceEntriesInvalid(t *testing.T) { knativetest.CleanupOnInterrupt(func() { tearDown(ctx, t, c, namespace) }, t.Logf) defer tearDown(ctx, t, c, namespace) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -137,11 +137,11 @@ spec: mountPath: /workspace/test readOnly: true `, taskName, namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task: %s", err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -156,11 +156,11 @@ spec: - name: test workspace: foo `, pipelineName, namespace, taskName)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline: %s", err) } - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -173,7 +173,7 @@ spec: - name: foo emptyDir: {} `, pipelineRunName, namespace, pipelineName)) - _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) + _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}) if err == nil || !strings.Contains(err.Error(), "provided by pipelinerun more than once") { t.Fatalf("Expected error when creating pipelinerun with duplicate workspace entries but received: %v", err) @@ -193,7 +193,7 @@ func TestWorkspacePipelineRunMissingWorkspaceInvalid(t *testing.T) { knativetest.CleanupOnInterrupt(func() { tearDown(ctx, t, c, namespace) }, t.Logf) defer tearDown(ctx, t, c, namespace) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -207,11 +207,11 @@ spec: mountPath: /workspace/test readOnly: true `, taskName, namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task: %s", err) } - pipeline := parse.MustParseV1beta1Pipeline(t, fmt.Sprintf(` + pipeline := parse.MustParseV1Pipeline(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -226,11 +226,11 @@ spec: - name: test workspace: foo `, pipelineName, namespace, taskName)) - if _, err := c.V1beta1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineClient.Create(ctx, pipeline, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Pipeline: %s", err) } - pipelineRun := parse.MustParseV1beta1PipelineRun(t, fmt.Sprintf(` + pipelineRun := parse.MustParseV1PipelineRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -238,11 +238,11 @@ spec: pipelineRef: name: %s `, pipelineRunName, namespace, pipelineName)) - if _, err := c.V1beta1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1PipelineRunClient.Create(ctx, pipelineRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create PipelineRun: %s", err) } - if err := WaitForPipelineRunState(ctx, c, pipelineRunName, 10*time.Second, FailedWithMessage(`pipeline requires workspace with name "foo" be provided by pipelinerun`, pipelineRunName), "PipelineRunHasCondition", v1beta1Version); err != nil { + if err := WaitForPipelineRunState(ctx, c, pipelineRunName, 10*time.Second, FailedWithMessage(`pipeline requires workspace with name "foo" be provided by pipelinerun`, pipelineRunName), "PipelineRunHasCondition", v1Version); err != nil { t.Fatalf("Failed to wait for PipelineRun %q to finish: %s", pipelineRunName, err) } } @@ -262,7 +262,7 @@ func TestWorkspaceVolumeNameMatchesVolumeVariableReplacement(t *testing.T) { knativetest.CleanupOnInterrupt(func() { tearDown(ctx, t, c, namespace) }, t.Logf) defer tearDown(ctx, t, c, namespace) - task := parse.MustParseV1beta1Task(t, fmt.Sprintf(` + task := parse.MustParseV1Task(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -278,11 +278,11 @@ spec: mountPath: /workspace/test/file readOnly: true `, taskName, namespace)) - if _, err := c.V1beta1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskClient.Create(ctx, task, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create Task: %s", err) } - taskRun := parse.MustParseV1beta1TaskRun(t, fmt.Sprintf(` + taskRun := parse.MustParseV1TaskRun(t, fmt.Sprintf(` metadata: name: %s namespace: %s @@ -294,16 +294,16 @@ spec: - name: test emptyDir: {} `, taskRunName, namespace, taskName)) - if _, err := c.V1beta1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { + if _, err := c.V1TaskRunClient.Create(ctx, taskRun, metav1.CreateOptions{}); err != nil { t.Fatalf("Failed to create TaskRun: %s", err) } t.Logf("Waiting for TaskRun in namespace %s to finish", namespace) - if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "success", v1beta1Version); err != nil { + if err := WaitForTaskRunState(ctx, c, taskRunName, TaskRunSucceed(taskRunName), "success", v1Version); err != nil { t.Errorf("Error waiting for TaskRun to finish with error: %s", err) } - tr, err := c.V1beta1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) + tr, err := c.V1TaskRunClient.Get(ctx, taskRunName, metav1.GetOptions{}) if err != nil { t.Errorf("Error retrieving taskrun: %s", err) } diff --git a/test/yamls/v1beta1/pipelineruns/pipelinerun-with-final-tasks.yaml b/test/yamls/v1beta1/beta/pipelineruns/pipelinerun-with-final-tasks.yaml similarity index 100% rename from test/yamls/v1beta1/pipelineruns/pipelinerun-with-final-tasks.yaml rename to test/yamls/v1beta1/beta/pipelineruns/pipelinerun-with-final-tasks.yaml diff --git a/test/yamls/v1beta1/pipelineruns/pipelinerun.yaml b/test/yamls/v1beta1/beta/pipelineruns/pipelinerun.yaml similarity index 100% rename from test/yamls/v1beta1/pipelineruns/pipelinerun.yaml rename to test/yamls/v1beta1/beta/pipelineruns/pipelinerun.yaml