diff --git a/pkg/renovate/bump/bump.go b/pkg/renovate/bump/bump.go index bb713b535..542c162f7 100644 --- a/pkg/renovate/bump/bump.go +++ b/pkg/renovate/bump/bump.go @@ -217,7 +217,7 @@ func updateGitCheckout(ctx context.Context, node *yaml.Node, expectedGitSha stri if err != nil { log.Infof("git-checkout node does not contain a tag, assume we need to update the expected-commit sha") } else { - if !strings.Contains(tag.Value, "${{package.version}}") { + if !strings.Contains(tag.Value, "${{package.version}}") && !strings.Contains(tag.Value, "${{vars.mangled-package-version}}") { log.Infof("Skipping git-checkout node as it does not contain a version substitution so assuming it is not the main checkout") return nil } diff --git a/pkg/renovate/bump/bump_test.go b/pkg/renovate/bump/bump_test.go index d9870ee73..4dbb5604c 100644 --- a/pkg/renovate/bump/bump_test.go +++ b/pkg/renovate/bump/bump_test.go @@ -109,32 +109,35 @@ func TestBump_withExpectedCommit(t *testing.T) { func TestBump_withMultipleCheckouts(t *testing.T) { dir := t.TempDir() - filename := "multiple_checkouts.yaml" + filenames := []string{"multiple_checkouts.yaml", "multiple_checkouts_transforms.yaml"} - data, err := os.ReadFile(filepath.Join("testdata", filename)) - assert.NoError(t, err) + for _, filename := range filenames { + data, err := os.ReadFile(filepath.Join("testdata", filename)) + assert.NoError(t, err) - // write the modified melange config to our working temp folder - err = os.WriteFile(filepath.Join(dir, filename), data, 0755) - assert.NoError(t, err) + // write the modified melange config to our working temp folder + err = os.WriteFile(filepath.Join(dir, filename), data, 0755) + assert.NoError(t, err) - rctx, err := renovate.New(renovate.WithConfig(filepath.Join(dir, filename))) - assert.NoError(t, err) + rctx, err := renovate.New(renovate.WithConfig(filepath.Join(dir, filename))) + assert.NoError(t, err) - ctx := slogtest.TestContextWithLogger(t) + ctx := slogtest.TestContextWithLogger(t) - bumpRenovator := New(ctx, - WithTargetVersion("6.8"), - WithExpectedCommit("1234abcd"), - ) + bumpRenovator := New(ctx, + WithTargetVersion("6.8"), + WithExpectedCommit("1234abcd"), + ) - err = rctx.Renovate(slogtest.TestContextWithLogger(t), bumpRenovator) - assert.NoError(t, err) + err = rctx.Renovate(slogtest.TestContextWithLogger(t), bumpRenovator) + assert.NoError(t, err) + + rs, err := config.ParseConfiguration(ctx, filepath.Join(dir, filename)) + require.NoError(t, err) + assert.Equal(t, rs.Pipeline[0].With["expected-commit"], "1234abcd") // this is the only commit we expect to change + assert.Equal(t, rs.Pipeline[1].With["expected-commit"], "bar") // should not change as it is not the main checkout + } - rs, err := config.ParseConfiguration(ctx, filepath.Join(dir, filename)) - require.NoError(t, err) - assert.Equal(t, rs.Pipeline[0].With["expected-commit"], "1234abcd") - assert.Equal(t, rs.Pipeline[1].With["expected-commit"], "bar") } func setupTestServer(t *testing.T) (error, *httptest.Server) { diff --git a/pkg/renovate/bump/testdata/multiple_checkouts_transforms.yaml b/pkg/renovate/bump/testdata/multiple_checkouts_transforms.yaml new file mode 100644 index 000000000..974d56668 --- /dev/null +++ b/pkg/renovate/bump/testdata/multiple_checkouts_transforms.yaml @@ -0,0 +1,17 @@ +package: + name: cheese + version: 6.8 + epoch: 2 + description: "a cheesy library" + +pipeline: + - uses: git-checkout + with: + repository: cheese/crisps + expected-commit: foo + tag: v${{vars.mangled-package-version}} + - uses: git-checkout + with: + repository: cheese/cheese + expected-commit: bar + tag: crackers