From 22fa9947c869b42f3e9b50e95c4b8619396b48c1 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Mon, 4 Dec 2023 23:00:11 -0300 Subject: [PATCH] feat: allow to template builds.gobinary (#4454) closes #4453 TODO: tests --- internal/pipe/build/build.go | 7 ++++--- internal/pipe/build/build_test.go | 18 ++++++++++++++++++ www/docs/customization/builds.md | 1 + 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/internal/pipe/build/build.go b/internal/pipe/build/build.go index 9d755452a1a..f286908158f 100644 --- a/internal/pipe/build/build.go +++ b/internal/pipe/build/build.go @@ -195,12 +195,13 @@ func buildOptionsForTarget(ctx *context.Context, build config.Build, target stri Goamd64: goamd64, } - binary, err := tmpl.New(ctx).WithBuildOptions(buildOpts).Apply(build.Binary) - if err != nil { + if err := tmpl.New(ctx).WithBuildOptions(buildOpts).ApplyAll( + &build.Binary, + &build.GoBinary, + ); err != nil { return nil, err } - build.Binary = binary name := build.Binary + ext dir := fmt.Sprintf("%s_%s", build.ID, target) if build.NoUniqueDistDir { diff --git a/internal/pipe/build/build_test.go b/internal/pipe/build/build_test.go index dab306dad56..f1e90f0a05a 100644 --- a/internal/pipe/build/build_test.go +++ b/internal/pipe/build/build_test.go @@ -570,6 +570,24 @@ func TestPipeOnBuild_hooksRunPerTarget(t *testing.T) { require.FileExists(t, filepath.Join(tmpDir, "post-hook-windows_amd64")) } +func TestPipeOnBuild_invalidGoBinary(t *testing.T) { + build := config.Build{ + Builder: "fake", + GoBinary: "testing.v{{.XYZ}}", + Targets: []string{ + "linux_amd64", + }, + } + ctx := testctx.NewWithCfg(config.Project{ + Builds: []config.Build{ + build, + }, + }) + g := semerrgroup.New(ctx.Parallelism) + runPipeOnBuild(ctx, g, build) + testlib.RequireTemplateError(t, g.Wait()) +} + func TestPipeOnBuild_invalidBinaryTpl(t *testing.T) { build := config.Build{ Builder: "fake", diff --git a/www/docs/customization/builds.md b/www/docs/customization/builds.md index 472f70a9cd6..1db34758bc5 100644 --- a/www/docs/customization/builds.md +++ b/www/docs/customization/builds.md @@ -169,6 +169,7 @@ builds: # It is safe to ignore this option in most cases. # # Default is "go" + # Templates: allowed (since v1.23). gobinary: "go1.13.4" # Sets the command to run to build.