Skip to content

Commit

Permalink
V1: Add conversion for PipelineRunSpec.PipelineRef.Bundle
Browse files Browse the repository at this point in the history
This commit adds support for PipelineRef.Bundle when converting between
v1beta1 and v1 versions of PipelineRef. This allows us to release v1
PipelineRuns in a backwards compatible way by ensuring that v1beta1
PipelineRuns with Bundle converted to v1 pipelineRuns.
  • Loading branch information
JeromeJu authored and tekton-robot committed Sep 13, 2022
1 parent 2ab7fa9 commit f9e275c
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 15 deletions.
5 changes: 2 additions & 3 deletions pkg/apis/pipeline/v1beta1/pipeline_conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,6 @@ func TestPipelineConversionBadType(t *testing.T) {
}

func TestPipelineConversion(t *testing.T) {
versions := []apis.Convertible{&v1.Pipeline{}}

tests := []struct {
name string
in *v1beta1.Pipeline
Expand Down Expand Up @@ -150,6 +148,7 @@ func TestPipelineConversion(t *testing.T) {
}}

for _, test := range tests {
versions := []apis.Convertible{&v1.Pipeline{}}
for _, version := range versions {
t.Run(test.name, func(t *testing.T) {
ver := version
Expand All @@ -172,7 +171,6 @@ func TestPipelineConversion(t *testing.T) {
}

func TestPipelineConversionFromDeprecated(t *testing.T) {
versions := []apis.Convertible{&v1.Pipeline{}}
tests := []struct {
name string
in *v1beta1.Pipeline
Expand Down Expand Up @@ -219,6 +217,7 @@ func TestPipelineConversionFromDeprecated(t *testing.T) {
}}

for _, test := range tests {
versions := []apis.Convertible{&v1.Pipeline{}}
for _, version := range versions {
t.Run(test.name, func(t *testing.T) {
ver := version
Expand Down
24 changes: 22 additions & 2 deletions pkg/apis/pipeline/v1beta1/pipelineref_conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,17 +9,37 @@ import (
func (pr PipelineRef) convertTo(ctx context.Context, sink *v1.PipelineRef) {
sink.Name = pr.Name
sink.APIVersion = pr.APIVersion
// TODO: handle bundle in #4546
new := v1.ResolverRef{}
pr.ResolverRef.convertTo(ctx, &new)
sink.ResolverRef = new
pr.convertBundleToResolver(sink)
}

func (pr *PipelineRef) convertFrom(ctx context.Context, source v1.PipelineRef) {
pr.Name = source.Name
pr.APIVersion = source.APIVersion
// TODO: handle bundle in #4546
new := ResolverRef{}
new.convertFrom(ctx, source.ResolverRef)
pr.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 (pr PipelineRef) convertBundleToResolver(sink *v1.PipelineRef) {
if pr.Bundle != "" {
sink.ResolverRef = v1.ResolverRef{
Resolver: "bundles",
Params: []v1.Param{{
Name: "bundle",
Value: v1.ParamValue{StringVal: pr.Bundle},
}, {
Name: "name",
Value: v1.ParamValue{StringVal: pr.Name},
}, {
Name: "kind",
Value: v1.ParamValue{StringVal: "Task"},
}},
}
}
}
39 changes: 35 additions & 4 deletions pkg/apis/pipeline/v1beta1/pipelinerun_conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,6 @@ func TestPipelineRunConversionBadType(t *testing.T) {
}

func TestPipelineRunConversion(t *testing.T) {
versions := []apis.Convertible{&v1.PipelineRun{}}

tests := []struct {
name string
in *v1beta1.PipelineRun
Expand Down Expand Up @@ -148,6 +146,7 @@ func TestPipelineRunConversion(t *testing.T) {
},
}}
for _, test := range tests {
versions := []apis.Convertible{&v1.PipelineRun{}}
for _, version := range versions {
t.Run(test.name, func(t *testing.T) {
ver := version
Expand All @@ -170,7 +169,6 @@ func TestPipelineRunConversion(t *testing.T) {
}

func TestPipelineRunConversionFromDeprecated(t *testing.T) {
versions := []apis.Convertible{&v1.PipelineRun{}}
tests := []struct {
name string
in *v1beta1.PipelineRun
Expand Down Expand Up @@ -233,9 +231,42 @@ func TestPipelineRunConversionFromDeprecated(t *testing.T) {
},
},
},
}, {
name: "bundle",
in: &v1beta1.PipelineRun{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Namespace: "bar",
},
Spec: v1beta1.PipelineRunSpec{
PipelineRef: &v1beta1.PipelineRef{
Name: "test-bundle-name",
Bundle: "test-bundle",
},
},
},
want: &v1beta1.PipelineRun{
ObjectMeta: metav1.ObjectMeta{
Name: "foo",
Namespace: "bar",
},
Spec: v1beta1.PipelineRunSpec{
PipelineRef: &v1beta1.PipelineRef{
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"}},
},
},
},
},
},
}}
// TODO add the cases for bundles #4546
for _, test := range tests {
versions := []apis.Convertible{&v1.PipelineRun{}}
for _, version := range versions {
t.Run(test.name, func(t *testing.T) {
ver := version
Expand Down
5 changes: 2 additions & 3 deletions pkg/apis/pipeline/v1beta1/task_conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,6 @@ func TestTaskConversionBadType(t *testing.T) {
}

func TestTaskConversion(t *testing.T) {
versions := []apis.Convertible{&v1.Task{}}

tests := []struct {
name string
in *v1beta1.Task
Expand Down Expand Up @@ -165,6 +163,7 @@ func TestTaskConversion(t *testing.T) {
}}

for _, test := range tests {
versions := []apis.Convertible{&v1.Task{}}
for _, version := range versions {
t.Run(test.name, func(t *testing.T) {
ver := version
Expand All @@ -187,7 +186,6 @@ func TestTaskConversion(t *testing.T) {
}

func TestTaskConversionFromDeprecated(t *testing.T) {
versions := []apis.Convertible{&v1.Task{}}
tests := []struct {
name string
in *v1beta1.Task
Expand Down Expand Up @@ -244,6 +242,7 @@ func TestTaskConversionFromDeprecated(t *testing.T) {
},
}}
for _, test := range tests {
versions := []apis.Convertible{&v1.Task{}}
for _, version := range versions {
t.Run(test.name, func(t *testing.T) {
ver := version
Expand Down
5 changes: 2 additions & 3 deletions pkg/apis/pipeline/v1beta1/taskrun_conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,8 +49,6 @@ func TestTaskRunConversionBadType(t *testing.T) {
}

func TestTaskrunConversion(t *testing.T) {
versions := []apis.Convertible{&v1.TaskRun{}}

tests := []struct {
name string
in *v1beta1.TaskRun
Expand Down Expand Up @@ -173,6 +171,7 @@ func TestTaskrunConversion(t *testing.T) {
}}

for _, test := range tests {
versions := []apis.Convertible{&v1.TaskRun{}}
for _, version := range versions {
t.Run(test.name, func(t *testing.T) {
ver := version
Expand All @@ -195,7 +194,6 @@ func TestTaskrunConversion(t *testing.T) {
}

func TestTaskRunConversionFromDeprecated(t *testing.T) {
versions := []apis.Convertible{&v1.TaskRun{}}
tests := []struct {
name string
in *v1beta1.TaskRun
Expand Down Expand Up @@ -315,6 +313,7 @@ func TestTaskRunConversionFromDeprecated(t *testing.T) {
},
}}
for _, test := range tests {
versions := []apis.Convertible{&v1.TaskRun{}}
for _, version := range versions {
t.Run(test.name, func(t *testing.T) {
ver := version
Expand Down

0 comments on commit f9e275c

Please sign in to comment.