From 7d9098661ebced1d3ca31c99e1332aabbf069859 Mon Sep 17 00:00:00 2001 From: Gerard Nguyen Date: Thu, 28 May 2026 22:07:36 +1000 Subject: [PATCH 1/3] return warnings on promoting lower semver verisonLabel --- cli/cmd/release_create.go | 8 +++++++- cli/cmd/release_promote.go | 13 ++++++++++--- pkg/types/release.go | 1 + 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/cli/cmd/release_create.go b/cli/cmd/release_create.go index 0f5d0713e..f501b1ef6 100644 --- a/cli/cmd/release_create.go +++ b/cli/cmd/release_create.go @@ -486,7 +486,13 @@ Prepared to create release with defaults: log.FinishSpinner() // ignore error since operation was successful - log.ChildActionWithoutSpinner("Channel %s successfully set to release %d\n", promoteChanID, release.Sequence) + log.ChildActionWithoutSpinner("Channel %s successfully set to release %d", promoteChanID, release.Sequence) + + if len(promoteResp.Warnings) > 0 { + for _, w := range promoteResp.Warnings { + log.ChildActionWithoutSpinner("Warning: %s\n", w) + } + } if r.appType == "kots" && r.args.createReleasePromoteWaitForAirgap { if err := r.waitForAirgapBuilds(promoteResp, r.args.createReleasePromoteWaitForAirgapTimeout, log); err != nil { diff --git a/cli/cmd/release_promote.go b/cli/cmd/release_promote.go index 2eedb9128..f610c8b95 100644 --- a/cli/cmd/release_promote.go +++ b/cli/cmd/release_promote.go @@ -108,13 +108,15 @@ func (r *runners) releasePromote(cmd *cobra.Command, args []string) (err error) log.Silence() out := struct { - Channel string `json:"channel"` - ReleaseSequence int64 `json:"release_sequence"` - VersionLabel string `json:"version_label"` + Channel string `json:"channel"` + ReleaseSequence int64 `json:"release_sequence"` + VersionLabel string `json:"version_label"` + Warnings []string `json:"warnings,omitempty"` }{ Channel: newID, ReleaseSequence: seq, VersionLabel: r.args.releaseVersion, + Warnings: promoteResp.Warnings, } enc := json.NewEncoder(r.w) enc.SetIndent("", " ") @@ -123,6 +125,11 @@ func (r *runners) releasePromote(cmd *cobra.Command, args []string) (err error) } } else { fmt.Fprintf(r.w, "Channel %s successfully set to release %d\n", channelName, seq) + if len(promoteResp.Warnings) > 0 { + for _, w := range promoteResp.Warnings { + fmt.Fprintf(r.w, "Warning: %s\n", w) + } + } } if r.appType == "kots" && r.args.releasePromoteWaitForAirgap { diff --git a/pkg/types/release.go b/pkg/types/release.go index 03ab39251..1049e1b41 100644 --- a/pkg/types/release.go +++ b/pkg/types/release.go @@ -90,6 +90,7 @@ type AirgapBuildSummary struct { type PromoteReleaseResponse struct { Release KotsAppRelease `json:"release"` AirgapBuilds []AirgapBuildSummary `json:"airgapBuilds"` + Warnings []string `json:"warnings,omitempty"` } type KotsAppRelease struct { From c27a597f7eeadb52c4de4fc5a2e6fedfa024e2eb Mon Sep 17 00:00:00 2001 From: Gerard Nguyen Date: Thu, 28 May 2026 22:22:21 +1000 Subject: [PATCH 2/3] changes for code review --- cli/cmd/release_create.go | 2 +- cli/cmd/release_promote.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/cli/cmd/release_create.go b/cli/cmd/release_create.go index f501b1ef6..c98879a1f 100644 --- a/cli/cmd/release_create.go +++ b/cli/cmd/release_create.go @@ -490,7 +490,7 @@ Prepared to create release with defaults: if len(promoteResp.Warnings) > 0 { for _, w := range promoteResp.Warnings { - log.ChildActionWithoutSpinner("Warning: %s\n", w) + log.ChildActionWithoutSpinner("Warning: %s", w) } } diff --git a/cli/cmd/release_promote.go b/cli/cmd/release_promote.go index f610c8b95..7cec60ba6 100644 --- a/cli/cmd/release_promote.go +++ b/cli/cmd/release_promote.go @@ -116,8 +116,12 @@ func (r *runners) releasePromote(cmd *cobra.Command, args []string) (err error) Channel: newID, ReleaseSequence: seq, VersionLabel: r.args.releaseVersion, - Warnings: promoteResp.Warnings, } + + if promoteResp != nil && len(promoteResp.Warnings) > 0 { + out.Warnings = promoteResp.Warnings + } + enc := json.NewEncoder(r.w) enc.SetIndent("", " ") if err := enc.Encode(out); err != nil { From a051a72808a72c7e9ca10600417d4b045a0f19b1 Mon Sep 17 00:00:00 2001 From: Gerard Nguyen Date: Fri, 29 May 2026 12:23:56 +1000 Subject: [PATCH 3/3] update from code review --- cli/cmd/release_create.go | 5 ++--- cli/cmd/release_promote.go | 3 ++- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cli/cmd/release_create.go b/cli/cmd/release_create.go index c98879a1f..13af6cb1f 100644 --- a/cli/cmd/release_create.go +++ b/cli/cmd/release_create.go @@ -485,13 +485,12 @@ Prepared to create release with defaults: } log.FinishSpinner() - // ignore error since operation was successful - log.ChildActionWithoutSpinner("Channel %s successfully set to release %d", promoteChanID, release.Sequence) - if len(promoteResp.Warnings) > 0 { for _, w := range promoteResp.Warnings { log.ChildActionWithoutSpinner("Warning: %s", w) } + } else { + log.ChildActionWithoutSpinner("Channel %s successfully set to release %d", promoteChanID, release.Sequence) } if r.appType == "kots" && r.args.createReleasePromoteWaitForAirgap { diff --git a/cli/cmd/release_promote.go b/cli/cmd/release_promote.go index 7cec60ba6..99f6d1d82 100644 --- a/cli/cmd/release_promote.go +++ b/cli/cmd/release_promote.go @@ -128,11 +128,12 @@ func (r *runners) releasePromote(cmd *cobra.Command, args []string) (err error) return errors.Wrap(err, "encode json output") } } else { - fmt.Fprintf(r.w, "Channel %s successfully set to release %d\n", channelName, seq) if len(promoteResp.Warnings) > 0 { for _, w := range promoteResp.Warnings { fmt.Fprintf(r.w, "Warning: %s\n", w) } + } else { + fmt.Fprintf(r.w, "Channel %s successfully set to release %d\n", channelName, seq) } }