From 8f0cede737ac4532e85d258ae282be9b6f29d3a4 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker <caarlos0@users.noreply.github.com> Date: Fri, 29 Nov 2024 15:04:48 -0300 Subject: [PATCH] fix(build): improve build overrides handling - jsonschema: make both goos and goarch mandatory - log.warn if any of them are empty - log.debug when it doesn't match refs #5322 --- internal/builders/golang/build.go | 21 +++++++++++++++------ pkg/config/config.go | 4 ++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/internal/builders/golang/build.go b/internal/builders/golang/build.go index 419e58dd7..ad442f5e4 100644 --- a/internal/builders/golang/build.go +++ b/internal/builders/golang/build.go @@ -145,6 +145,13 @@ func (*Builder) WithDefaults(build config.Build) (config.Build, error) { } build.Targets = slices.Collect(maps.Keys(targets)) } + + for _, o := range build.BuildDetailsOverrides { + if o.Goos == "" || o.Goarch == "" { + log.Warn("overrides must set, at least, both 'goos' and 'goarch'") + break + } + } return build, nil } @@ -324,12 +331,12 @@ func withOverrides(ctx *context.Context, build config.Build, target Target) (con if optsTarget == overrideTarget { dets := config.BuildDetails{ - Buildmode: build.BuildDetails.Buildmode, - Ldflags: build.BuildDetails.Ldflags, - Tags: build.BuildDetails.Tags, - Flags: build.BuildDetails.Flags, - Asmflags: build.BuildDetails.Asmflags, - Gcflags: build.BuildDetails.Gcflags, + Buildmode: build.Buildmode, + Ldflags: build.Ldflags, + Tags: build.Tags, + Flags: build.Flags, + Asmflags: build.Asmflags, + Gcflags: build.Gcflags, } if err := mergo.Merge(&dets, o.BuildDetails, mergo.WithOverride); err != nil { return build.BuildDetails, err @@ -338,6 +345,8 @@ func withOverrides(ctx *context.Context, build config.Build, target Target) (con dets.Env = context.ToEnv(append(build.Env, o.BuildDetails.Env...)).Strings() log.WithField("details", dets).Infof("overridden build details for %s", optsTarget) return dets, nil + } else { + log.Debugf("targets don't match: %s != %s", optsTarget, overrideTarget) } } diff --git a/pkg/config/config.go b/pkg/config/config.go index 0bc570e81..742a7c53f 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -526,8 +526,8 @@ type Build struct { } type BuildDetailsOverride struct { - Goos string `yaml:"goos,omitempty" json:"goos,omitempty"` - Goarch string `yaml:"goarch,omitempty" json:"goarch,omitempty"` + Goos string `yaml:"goos" json:"goos"` + Goarch string `yaml:"goarch" json:"goarch"` Goamd64 string `yaml:"goamd64,omitempty" json:"goamd64,omitempty"` Go386 string `yaml:"go386,omitempty" json:"go386,omitempty"` Goarm64 string `yaml:"goarm64,omitempty" json:"goarm64,omitempty"`