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:
parent
02a3486d4b
commit
de3f381f55
@ -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
|
||||
|
@ -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{},
|
||||
})
|
||||
})
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user