diff --git a/cmd/deploy.go b/cmd/deploy.go index 5d10832de..f3a6a1dab 100644 --- a/cmd/deploy.go +++ b/cmd/deploy.go @@ -79,6 +79,8 @@ func (c DeployCmd) Run(opts DeployOpts) error { if opts.FixReleases { bytes, err = c.releaseUploader.UploadReleasesWithFix(bytes) + } else if opts.SkipUploadReleases { + c.ui.PrintLinef("Release-Check skipped.") } else { bytes, err = c.releaseUploader.UploadReleases(bytes) } @@ -125,6 +127,8 @@ func setFlags(flags []string, opts DeployOpts) DeployOpts { opts.Recreate = true case "recreate-persistent-disks": opts.RecreatePersistentDisks = true + case "skip-upload-releases": + opts.SkipUploadReleases = true } } diff --git a/cmd/deploy_test.go b/cmd/deploy_test.go index 18db567dc..28e884aa1 100644 --- a/cmd/deploy_test.go +++ b/cmd/deploy_test.go @@ -209,6 +209,16 @@ var _ = Describe("DeployCmd", func() { Expect(bytes).To(Equal([]byte("after-upload-manifest-with-fix"))) }) + It("skips the upload of all releases in the corresponding deployment", func() { + deployOpts.SkipUploadReleases = true + + err := act() + Expect(err).ToNot(HaveOccurred()) + Expect(releaseUploader.UploadReleasesWithFixCallCount()).To(Equal(0)) + Expect(releaseUploader.UploadReleasesCallCount()).To(Equal(0)) + Expect(ui.Said).To(ContainElement("Release-Check skipped.")) + }) + It("returns error and does not deploy if uploading releases fails", func() { deployOpts.Args.Manifest = opts.FileBytesArg{ Bytes: []byte(` diff --git a/cmd/opts/opts.go b/cmd/opts/opts.go index 1839e8ea4..d22b0cea0 100644 --- a/cmd/opts/opts.go +++ b/cmd/opts/opts.go @@ -508,6 +508,7 @@ type DeployOpts struct { Fix bool `long:"fix" description:"Recreate an instance with an unresponsive agent instead of erroring"` FixReleases bool `long:"fix-releases" description:"Reupload releases in manifest and replace corrupt or missing jobs/packages"` SkipDrain []boshdir.SkipDrain `long:"skip-drain" value-name:"[INSTANCE-GROUP[/INSTANCE-ID]]" description:"Skip running drain and pre-stop scripts for specific instance groups" optional:"true" optional-value:"*"` + SkipUploadReleases bool `long:"skip-upload-releases" description:"Skips the upload procedure for releases"` Canaries string `long:"canaries" description:"Override manifest values for canaries"` MaxInFlight string `long:"max-in-flight" description:"Override manifest values for max_in_flight"`