diff --git a/util/update-manifest-releases/compiledreleasesops/compiled_releases_opsfile.go b/util/update-manifest-releases/compiledreleasesops/compiled_releases_opsfile.go index 70e7a330..73464b7f 100644 --- a/util/update-manifest-releases/compiledreleasesops/compiled_releases_opsfile.go +++ b/util/update-manifest-releases/compiledreleasesops/compiled_releases_opsfile.go @@ -44,7 +44,7 @@ func UpdateCompiledReleases(releaseNames []string, buildDir string, opsFile []by matchingReleasePath := fmt.Sprintf("/releases/name=%s", releaseName) for i, op := range deserializedOpsFile { - if op.Path == matchingReleasePath { + if op.Path == matchingReleasePath || op.Path == matchingReleasePath+"?" { newRelease, err = getCompiledReleaseForBuild(buildDir, releaseName) if err != nil { return nil, "", err diff --git a/util/update-manifest-releases/compiledreleasesops/compiled_releases_opsfile_test.go b/util/update-manifest-releases/compiledreleasesops/compiled_releases_opsfile_test.go index c933c065..3bf85daa 100644 --- a/util/update-manifest-releases/compiledreleasesops/compiled_releases_opsfile_test.go +++ b/util/update-manifest-releases/compiledreleasesops/compiled_releases_opsfile_test.go @@ -85,4 +85,15 @@ var _ = Describe("UpdateCompiledReleases", func() { Expect(commitMessage).To(Equal("Updated compiled releases with no-stemcell-section 0.3.0")) Expect(string(updatedOpsFile)).To(Equal(desiredOpsFile)) }) + + It("updates an optional release (with '?' at end of path)", func() { + releaseNames := []string{"release-may-not-exist-in-template"} + desiredOpsFile, err = os.ReadFile("../fixtures/updated_compiled_releases_ops_file_with_optional_release.yml") + Expect(err).NotTo(HaveOccurred()) + + updatedOpsFile, commitMessage, err := compiledreleasesops.UpdateCompiledReleases(releaseNames, compiledReleaseBuildDir, originalOpsFile, yaml.Marshal, yaml.Unmarshal) + Expect(err).NotTo(HaveOccurred()) + Expect(commitMessage).To(Equal("Updated compiled releases with release-may-not-exist-in-template 0.0.1")) + Expect(updatedOpsFile).To(MatchYAML(desiredOpsFile)) + }) }) diff --git a/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template-compiled-release-tarball/release-may-not-exist-in-template b/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template-compiled-release-tarball/release-may-not-exist-in-template new file mode 100644 index 00000000..e69de29b diff --git a/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template-compiled-release-tarball/release-may-not-exist-in-template-0.0.1-awesome-stemcell-1.0-20180808-195254-497840039.tgz b/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template-compiled-release-tarball/release-may-not-exist-in-template-0.0.1-awesome-stemcell-1.0-20180808-195254-497840039.tgz new file mode 100644 index 00000000..a0ada4f7 Binary files /dev/null and b/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template-compiled-release-tarball/release-may-not-exist-in-template-0.0.1-awesome-stemcell-1.0-20180808-195254-497840039.tgz differ diff --git a/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template/sha256 b/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template/sha256 new file mode 100644 index 00000000..bf454d85 --- /dev/null +++ b/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template/sha256 @@ -0,0 +1 @@ +release-sha256 diff --git a/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template/url b/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template/url new file mode 100644 index 00000000..ad48a1eb --- /dev/null +++ b/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template/url @@ -0,0 +1 @@ +release-url diff --git a/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template/version b/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template/version new file mode 100644 index 00000000..6e8bf73a --- /dev/null +++ b/util/update-manifest-releases/fixtures/build-with-compiled-release/release-may-not-exist-in-template/version @@ -0,0 +1 @@ +0.1.0 diff --git a/util/update-manifest-releases/fixtures/original_compiled_releases_ops_file.yml b/util/update-manifest-releases/fixtures/original_compiled_releases_ops_file.yml index a2575963..c5191ed4 100644 --- a/util/update-manifest-releases/fixtures/original_compiled_releases_ops_file.yml +++ b/util/update-manifest-releases/fixtures/original_compiled_releases_ops_file.yml @@ -39,3 +39,13 @@ version: "0.0" url: https://storage.googleapis.com/cf-deployment-compiled-releases/more-than-1-0.0.0-cute-stemcell-0.0-20180808-202210-307673159.tgz version: 0.0.1 +- path: /releases/name=release-may-not-exist-in-template? + type: replace + value: + name: release-may-not-exist-in-template + sha1: sha256:b52cb52c940719d52588b5e8fc48e9b645bf1ce5a250f4bad00a1e3851a37874 + stemcell: + os: cute-stemcell + version: "0.0" + url: https://storage.googleapis.com/cf-deployment-compiled-releases/release-may-not-exist-in-template-0.0.0-cute-stemcell-0.0-20180808-202210-307673159.tgz + version: 0.0.1 \ No newline at end of file diff --git a/util/update-manifest-releases/fixtures/updated_compiled_releases_ops_file.yml b/util/update-manifest-releases/fixtures/updated_compiled_releases_ops_file.yml index 26a44047..83955d4a 100644 --- a/util/update-manifest-releases/fixtures/updated_compiled_releases_ops_file.yml +++ b/util/update-manifest-releases/fixtures/updated_compiled_releases_ops_file.yml @@ -39,3 +39,13 @@ version: "0.0" url: https://storage.googleapis.com/cf-deployment-compiled-releases/more-than-1-0.0.0-cute-stemcell-0.0-20180808-202210-307673159.tgz version: 0.0.1 +- path: /releases/name=release-may-not-exist-in-template? + type: replace + value: + name: release-may-not-exist-in-template + sha1: sha256:b52cb52c940719d52588b5e8fc48e9b645bf1ce5a250f4bad00a1e3851a37874 + stemcell: + os: cute-stemcell + version: "0.0" + url: https://storage.googleapis.com/cf-deployment-compiled-releases/release-may-not-exist-in-template-0.0.0-cute-stemcell-0.0-20180808-202210-307673159.tgz + version: 0.0.1 \ No newline at end of file diff --git a/util/update-manifest-releases/fixtures/updated_compiled_releases_ops_file_with_new_release.yml b/util/update-manifest-releases/fixtures/updated_compiled_releases_ops_file_with_new_release.yml index 3bbd10d1..a40b665c 100644 --- a/util/update-manifest-releases/fixtures/updated_compiled_releases_ops_file_with_new_release.yml +++ b/util/update-manifest-releases/fixtures/updated_compiled_releases_ops_file_with_new_release.yml @@ -38,6 +38,16 @@ version: "0.0" url: https://storage.googleapis.com/cf-deployment-compiled-releases/more-than-1-0.0.0-cute-stemcell-0.0-20180808-202210-307673159.tgz version: 0.0.1 +- path: /releases/name=release-may-not-exist-in-template? + type: replace + value: + name: release-may-not-exist-in-template + sha1: sha256:b52cb52c940719d52588b5e8fc48e9b645bf1ce5a250f4bad00a1e3851a37874 + stemcell: + os: cute-stemcell + version: "0.0" + url: https://storage.googleapis.com/cf-deployment-compiled-releases/release-may-not-exist-in-template-0.0.0-cute-stemcell-0.0-20180808-202210-307673159.tgz + version: 0.0.1 - path: /releases/name=extraneous type: replace value: diff --git a/util/update-manifest-releases/fixtures/updated_compiled_releases_ops_file_with_optional_release.yml b/util/update-manifest-releases/fixtures/updated_compiled_releases_ops_file_with_optional_release.yml new file mode 100644 index 00000000..2f9b5166 --- /dev/null +++ b/util/update-manifest-releases/fixtures/updated_compiled_releases_ops_file_with_optional_release.yml @@ -0,0 +1,51 @@ +--- +- path: /releases/name=test + type: replace + value: + name: test + sha1: sha256:280c8373b5cc2d96119e00f10e496b54e44e4e34fae2415718ac3b90558e26e5 + stemcell: + os: cute-stemcell + version: "0.0" + url: https://storage.googleapis.com/cf-deployment-compiled-releases/test-0.0.0-cute-stemcell-0.0-20180808-202210-307673159.tgz + version: 0.0.0 +- path: /releases/name=test-agent + type: replace + value: + name: test-agent + sha1: sha256:bb7252db83b8037f44696af7bdb80a8c92e2f79e6ca1001222db7171b3c694e8 + stemcell: + os: cute-stemcell + version: "0.0" + url: https://storage.googleapis.com/cf-deployment-compiled-releases/test-agent-0.0.0-cute-stemcell-0.0-20180808-202210-307673159.tgz + version: 0.0.0 +- path: /releases/name=no-version + type: replace + value: + name: no-version + sha1: sha256:085b6b4a335f5d6f54b55e831ff125c5b7f95ecb85c89e06a932dec56dc7d077 + stemcell: + os: cute-stemcell + version: "0.0" + url: https://storage.googleapis.com/cf-deployment-compiled-releases/no-version-0.0.0-cute-stemcell-0.0-20180808-202210-307673159.tgz + version: 0.0.1 +- path: /releases/name=more-than-1 + type: replace + value: + name: more-than-1 + sha1: sha256:a69d14ddcc53531e044e69c9c6db33a51500a5e3f851666ee3946d27cd5e3996 + stemcell: + os: cute-stemcell + version: "0.0" + url: https://storage.googleapis.com/cf-deployment-compiled-releases/more-than-1-0.0.0-cute-stemcell-0.0-20180808-202210-307673159.tgz + version: 0.0.1 +- path: /releases/name=release-may-not-exist-in-template? + type: replace + value: + name: release-may-not-exist-in-template + sha1: sha256:b52cb52c940719d52588b5e8fc48e9b645bf1ce5a250f4bad00a1e3851a37874 + stemcell: + os: awesome-stemcell + version: "1.0" + url: https://storage.googleapis.com/cf-deployment-compiled-releases/release-may-not-exist-in-template-0.0.1-awesome-stemcell-1.0-20180808-195254-497840039.tgz + version: 0.0.1 \ No newline at end of file