From 22952d9b2c6044e9511e33bdeeccb87435bd80b2 Mon Sep 17 00:00:00 2001 From: Snider Date: Tue, 3 Feb 2026 23:08:59 +0000 Subject: [PATCH] fix(build): make release dry-run by default and remove darwin/amd64 target Replace --dry-run (default false) with --we-are-go-for-launch (default false) so `core build release` is safe by default. Remove darwin/amd64 from default build targets (arm64 only for macOS). Fix cmd_project.go to use command context instead of context.Background(). Co-Authored-By: Claude Opus 4.5 --- pkg/build/buildcmd/cmd_build.go | 2 +- pkg/build/buildcmd/cmd_project.go | 3 +-- pkg/build/buildcmd/cmd_release.go | 12 ++++++------ pkg/build/config.go | 1 - pkg/build/config_test.go | 2 +- pkg/i18n/locales/en_GB.json | 2 +- pkg/release/config.go | 1 - pkg/release/config_test.go | 2 +- pkg/release/release.go | 1 - 9 files changed, 11 insertions(+), 15 deletions(-) diff --git a/pkg/build/buildcmd/cmd_build.go b/pkg/build/buildcmd/cmd_build.go index 87b268c8..b391b374 100644 --- a/pkg/build/buildcmd/cmd_build.go +++ b/pkg/build/buildcmd/cmd_build.go @@ -63,7 +63,7 @@ var buildCmd = &cobra.Command{ Short: i18n.T("cmd.build.short"), Long: i18n.T("cmd.build.long"), RunE: func(cmd *cobra.Command, args []string) error { - return runProjectBuild(buildType, ciMode, targets, outputDir, doArchive, doChecksum, configPath, format, push, imageName, noSign, notarize, verbose) + return runProjectBuild(cmd.Context(), buildType, ciMode, targets, outputDir, doArchive, doChecksum, configPath, format, push, imageName, noSign, notarize, verbose) }, } diff --git a/pkg/build/buildcmd/cmd_project.go b/pkg/build/buildcmd/cmd_project.go index da9abbdb..3429b765 100644 --- a/pkg/build/buildcmd/cmd_project.go +++ b/pkg/build/buildcmd/cmd_project.go @@ -21,7 +21,7 @@ import ( ) // runProjectBuild handles the main `core build` command with auto-detection. -func runProjectBuild(buildType string, ciMode bool, targetsFlag string, outputDir string, doArchive bool, doChecksum bool, configPath string, format string, push bool, imageName string, noSign bool, notarize bool, verbose bool) error { +func runProjectBuild(ctx context.Context, buildType string, ciMode bool, targetsFlag string, outputDir string, doArchive bool, doChecksum bool, configPath string, format string, push bool, imageName string, noSign bool, notarize bool, verbose bool) error { // Get current working directory as project root projectDir, err := os.Getwd() if err != nil { @@ -116,7 +116,6 @@ func runProjectBuild(buildType string, ciMode bool, targetsFlag string, outputDi } // Execute build - ctx := context.Background() artifacts, err := builder.Build(ctx, cfg, buildTargets) if err != nil { if !ciMode { diff --git a/pkg/build/buildcmd/cmd_release.go b/pkg/build/buildcmd/cmd_release.go index 3749b911..8c40a984 100644 --- a/pkg/build/buildcmd/cmd_release.go +++ b/pkg/build/buildcmd/cmd_release.go @@ -14,10 +14,10 @@ import ( // Flag variables for release command var ( - releaseVersion string - releaseDraft bool - releasePrerelease bool - releaseDryRun bool + releaseVersion string + releaseDraft bool + releasePrerelease bool + releaseGoForLaunch bool ) var releaseCmd = &cli.Command{ @@ -25,12 +25,12 @@ var releaseCmd = &cli.Command{ Short: i18n.T("cmd.build.release.short"), Long: i18n.T("cmd.build.release.long"), RunE: func(cmd *cli.Command, args []string) error { - return runRelease(cmd.Context(), releaseDryRun, releaseVersion, releaseDraft, releasePrerelease) + return runRelease(cmd.Context(), !releaseGoForLaunch, releaseVersion, releaseDraft, releasePrerelease) }, } func init() { - releaseCmd.Flags().BoolVar(&releaseDryRun, "dry-run", false, i18n.T("cmd.build.release.flag.dry_run")) + releaseCmd.Flags().BoolVar(&releaseGoForLaunch, "we-are-go-for-launch", false, i18n.T("cmd.build.release.flag.go_for_launch")) releaseCmd.Flags().StringVar(&releaseVersion, "version", "", i18n.T("cmd.build.release.flag.version")) releaseCmd.Flags().BoolVar(&releaseDraft, "draft", false, i18n.T("cmd.build.release.flag.draft")) releaseCmd.Flags().BoolVar(&releasePrerelease, "prerelease", false, i18n.T("cmd.build.release.flag.prerelease")) diff --git a/pkg/build/config.go b/pkg/build/config.go index 7ff68c85..3a396a0a 100644 --- a/pkg/build/config.go +++ b/pkg/build/config.go @@ -108,7 +108,6 @@ func DefaultConfig() *BuildConfig { Targets: []TargetConfig{ {OS: "linux", Arch: "amd64"}, {OS: "linux", Arch: "arm64"}, - {OS: "darwin", Arch: "amd64"}, {OS: "darwin", Arch: "arm64"}, {OS: "windows", Arch: "amd64"}, }, diff --git a/pkg/build/config_test.go b/pkg/build/config_test.go index 2723ce7a..f23359ce 100644 --- a/pkg/build/config_test.go +++ b/pkg/build/config_test.go @@ -188,7 +188,7 @@ func TestDefaultConfig_Good(t *testing.T) { assert.Empty(t, cfg.Build.Env) // Default targets cover common platforms - assert.Len(t, cfg.Targets, 5) + assert.Len(t, cfg.Targets, 4) hasLinuxAmd64 := false hasDarwinArm64 := false hasWindowsAmd64 := false diff --git a/pkg/i18n/locales/en_GB.json b/pkg/i18n/locales/en_GB.json index 1e670247..4f6d8f4f 100644 --- a/pkg/i18n/locales/en_GB.json +++ b/pkg/i18n/locales/en_GB.json @@ -233,7 +233,7 @@ "sdk.complete": "SDK generation complete", "release.short": "Build, archive, and publish a release", "release.long": "Build all targets, create archives, generate checksums, and publish to configured destinations. Requires .core/release.yaml configuration.", - "release.flag.dry_run": "Show what would be done without publishing", + "release.flag.go_for_launch": "Actually publish to configured targets (default: dry-run only)", "release.flag.version": "Version to release (overrides config)", "release.flag.draft": "Create as draft release", "release.flag.prerelease": "Mark as pre-release", diff --git a/pkg/release/config.go b/pkg/release/config.go index 24b035c7..2beefbf5 100644 --- a/pkg/release/config.go +++ b/pkg/release/config.go @@ -210,7 +210,6 @@ func DefaultConfig() *Config { Targets: []TargetConfig{ {OS: "linux", Arch: "amd64"}, {OS: "linux", Arch: "arm64"}, - {OS: "darwin", Arch: "amd64"}, {OS: "darwin", Arch: "arm64"}, {OS: "windows", Arch: "amd64"}, }, diff --git a/pkg/release/config_test.go b/pkg/release/config_test.go index d214c185..4cc714af 100644 --- a/pkg/release/config_test.go +++ b/pkg/release/config_test.go @@ -161,7 +161,7 @@ func TestDefaultConfig_Good(t *testing.T) { assert.Empty(t, cfg.Project.Repository) // Default targets - assert.Len(t, cfg.Build.Targets, 5) + assert.Len(t, cfg.Build.Targets, 4) hasLinuxAmd64 := false hasDarwinArm64 := false hasWindowsAmd64 := false diff --git a/pkg/release/release.go b/pkg/release/release.go index f5dd53b5..46f9d412 100644 --- a/pkg/release/release.go +++ b/pkg/release/release.go @@ -227,7 +227,6 @@ func buildArtifacts(ctx context.Context, cfg *Config, projectDir, version string targets = []build.Target{ {OS: "linux", Arch: "amd64"}, {OS: "linux", Arch: "arm64"}, - {OS: "darwin", Arch: "amd64"}, {OS: "darwin", Arch: "arm64"}, {OS: "windows", Arch: "amd64"}, }