1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-03-17 20:47:50 +02:00

fix: build env overrides (#3232)

* fix: build env overrides

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* fix: review

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>

* test: fix

Signed-off-by: Carlos A Becker <caarlos0@users.noreply.github.com>
This commit is contained in:
Carlos Alexandro Becker 2022-07-07 22:15:51 -03:00 committed by GitHub
parent 02a3486d4b
commit de3f381f55
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 34 additions and 15 deletions

View File

@ -151,7 +151,12 @@ func (*Builder) Build(ctx *context.Context, build config.Build, options api.Opti
},
}
env := append(ctx.Env.Strings(), build.Env...)
details, err := withOverrides(ctx, build, options)
if err != nil {
return err
}
env := append(ctx.Env.Strings(), details.Env...)
env = append(
env,
"GOOS="+options.Goos,
@ -162,7 +167,7 @@ func (*Builder) Build(ctx *context.Context, build config.Build, options api.Opti
"GOAMD64="+options.Goamd64,
)
cmd, err := buildGoBuildLine(ctx, build, options, artifact, env)
cmd, err := buildGoBuildLine(ctx, build, details, options, artifact, env)
if err != nil {
return err
}
@ -206,25 +211,23 @@ func withOverrides(ctx *context.Context, build config.Build, options api.Options
Flags: build.BuildDetails.Flags,
Asmflags: build.BuildDetails.Asmflags,
Gcflags: build.BuildDetails.Gcflags,
Env: build.BuildDetails.Env,
}
if err := mergo.Merge(&dets, o.BuildDetails, mergo.WithOverride); err != nil {
return build.BuildDetails, err
}
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
}
}
return build.BuildDetails, nil
}
func buildGoBuildLine(ctx *context.Context, build config.Build, options api.Options, artifact *artifact.Artifact, env []string) ([]string, error) {
func buildGoBuildLine(ctx *context.Context, build config.Build, details config.BuildDetails, options api.Options, artifact *artifact.Artifact, env []string) ([]string, error) {
cmd := []string{build.GoBinary, build.Command}
details, err := withOverrides(ctx, build, options)
if err != nil {
return cmd, err
}
flags, err := processFlags(ctx, artifact, env, details.Flags, "")
if err != nil {
return cmd, err

View File

@ -1047,18 +1047,30 @@ func TestBuildModTimestamp(t *testing.T) {
func TestBuildGoBuildLine(t *testing.T) {
requireEqualCmd := func(tb testing.TB, build config.Build, expected []string) {
tb.Helper()
config := config.Project{
cfg := config.Project{
Builds: []config.Build{build},
}
ctx := context.New(config)
ctx := context.New(cfg)
ctx.Version = "1.2.3"
ctx.Git.Commit = "aaa"
line, err := buildGoBuildLine(ctx, config.Builds[0], api.Options{
Path: config.Builds[0].Binary,
options := api.Options{
Path: cfg.Builds[0].Binary,
Goos: "linux",
Goarch: "amd64",
}, &artifact.Artifact{}, []string{})
}
dets, err := withOverrides(ctx, build, options)
require.NoError(t, err)
line, err := buildGoBuildLine(
ctx,
build,
dets,
options,
&artifact.Artifact{},
[]string{},
)
require.NoError(t, err)
require.Equal(t, expected, line)
}
@ -1181,7 +1193,7 @@ func TestOverrides(t *testing.T) {
config.Build{
BuildDetails: config.BuildDetails{
Ldflags: []string{"original"},
Env: []string{"FOO=bar"},
Env: []string{"BAR=foo", "FOO=bar"},
},
BuildDetailsOverrides: []config.BuildDetailsOverride{
{
@ -1201,7 +1213,7 @@ func TestOverrides(t *testing.T) {
require.NoError(t, err)
require.Equal(t, dets, config.BuildDetails{
Ldflags: []string{"overridden"},
Env: []string{"FOO=overridden"},
Env: []string{"BAR=foo", "FOO=overridden"},
})
})
@ -1233,6 +1245,7 @@ func TestOverrides(t *testing.T) {
Gcflags: []string{"gcflag1"},
Asmflags: []string{"asm1"},
Tags: []string{"tag1"},
Env: []string{},
})
})
@ -1262,6 +1275,7 @@ func TestOverrides(t *testing.T) {
require.Equal(t, dets, config.BuildDetails{
Ldflags: []string{"overridden"},
Asmflags: []string{"asm1"},
Env: []string{},
})
})
@ -1308,6 +1322,7 @@ func TestOverrides(t *testing.T) {
require.NoError(t, err)
require.Equal(t, dets, config.BuildDetails{
Ldflags: []string{"overridden"},
Env: []string{},
})
})
@ -1337,6 +1352,7 @@ func TestOverrides(t *testing.T) {
require.NoError(t, err)
require.Equal(t, dets, config.BuildDetails{
Ldflags: []string{"overridden"},
Env: []string{},
})
})
}