diff --git a/pkg/apis/pipeline/v1beta1/taskref_conversion.go b/pkg/apis/pipeline/v1beta1/taskref_conversion.go index 36206f968a1..2bb4c92ba34 100644 --- a/pkg/apis/pipeline/v1beta1/taskref_conversion.go +++ b/pkg/apis/pipeline/v1beta1/taskref_conversion.go @@ -10,18 +10,38 @@ func (tr TaskRef) convertTo(ctx context.Context, sink *v1.TaskRef) { sink.Name = tr.Name sink.Kind = v1.TaskKind(tr.Kind) sink.APIVersion = tr.APIVersion - // TODO: handle bundle in #4546 new := v1.ResolverRef{} tr.ResolverRef.convertTo(ctx, &new) sink.ResolverRef = new + tr.convertBundleToResolver(sink) } func (tr *TaskRef) convertFrom(ctx context.Context, source v1.TaskRef) { tr.Name = source.Name tr.Kind = TaskKind(source.Kind) tr.APIVersion = source.APIVersion - // TODO: handle bundle in #4546 new := ResolverRef{} new.convertFrom(ctx, source.ResolverRef) tr.ResolverRef = new } + +// convertBundleToResolver converts v1beta1 bundle string to a remote reference with the bundle resolver in v1. +// The conversion from Resolver to Bundle is not being supported since remote resolution would be turned on by +// default and it will be in beta before the stored version of CRD getting swapped to v1. +func (tr TaskRef) convertBundleToResolver(sink *v1.TaskRef) { + if tr.Bundle != "" { + sink.ResolverRef = v1.ResolverRef{ + Resolver: "bundles", + Params: []v1.Param{{ + Name: "bundle", + Value: v1.ParamValue{StringVal: tr.Bundle}, + }, { + Name: "name", + Value: v1.ParamValue{StringVal: tr.Name}, + }, { + Name: "kind", + Value: v1.ParamValue{StringVal: "Task"}, + }}, + } + } +} diff --git a/pkg/apis/pipeline/v1beta1/taskrun_conversion_test.go b/pkg/apis/pipeline/v1beta1/taskrun_conversion_test.go index cebadc2250c..ba1aa91b187 100644 --- a/pkg/apis/pipeline/v1beta1/taskrun_conversion_test.go +++ b/pkg/apis/pipeline/v1beta1/taskrun_conversion_test.go @@ -280,6 +280,39 @@ func TestTaskRunConversionFromDeprecated(t *testing.T) { }, }, }, + }, { + name: "bundle", + in: &v1beta1.TaskRun{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "bar", + }, + Spec: v1beta1.TaskRunSpec{ + TaskRef: &v1beta1.TaskRef{ + Name: "test-bundle-name", + Bundle: "test-bundle", + }, + }, + }, + want: &v1beta1.TaskRun{ + ObjectMeta: metav1.ObjectMeta{ + Name: "foo", + Namespace: "bar", + }, + Spec: v1beta1.TaskRunSpec{ + TaskRef: &v1beta1.TaskRef{ + Name: "test-bundle-name", + ResolverRef: v1beta1.ResolverRef{ + Resolver: "bundles", + Params: []v1beta1.Param{ + {Name: "bundle", Value: v1beta1.ParamValue{StringVal: "test-bundle"}}, + {Name: "name", Value: v1beta1.ParamValue{StringVal: "test-bundle-name"}}, + {Name: "kind", Value: v1beta1.ParamValue{StringVal: "Task"}}, + }, + }, + }, + }, + }, }} for _, test := range tests { for _, version := range versions {