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

feat(build): template skip (#5089)

closes #5071
This commit is contained in:
Carlos Alexandro Becker 2024-08-18 16:57:59 -03:00 committed by GitHub
parent 4e699a4caf
commit 11aa7cfceb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 25 additions and 3 deletions

View File

@ -34,7 +34,11 @@ func (Pipe) String() string {
func (Pipe) Run(ctx *context.Context) error {
g := semerrgroup.New(ctx.Parallelism)
for _, build := range ctx.Config.Builds {
if build.Skip {
skip, err := tmpl.New(ctx).Bool(build.Skip)
if err != nil {
return err
}
if skip {
log.WithField("id", build.ID).Info("skip is set")
continue
}

View File

@ -405,7 +405,23 @@ func TestSkipBuild(t *testing.T) {
Dist: folder,
Builds: []config.Build{
{
Skip: true,
Skip: "true",
},
},
}
ctx := testctx.NewWithCfg(config, testctx.WithCurrentTag("2.4.5"))
require.NoError(t, Pipe{}.Run(ctx))
require.Empty(t, ctx.Artifacts.List())
}
func TestSkipBuildTmpl(t *testing.T) {
folder := testlib.Mktmp(t)
config := config.Project{
Dist: folder,
Env: []string{"FOO=bar"},
Builds: []config.Build{
{
Skip: "{{ eq .Env.FOO \"bar\" }}",
},
},
}

View File

@ -501,7 +501,7 @@ type Build struct {
Hooks BuildHookConfig `yaml:"hooks,omitempty" json:"hooks,omitempty"`
Builder string `yaml:"builder,omitempty" json:"builder,omitempty"`
ModTimestamp string `yaml:"mod_timestamp,omitempty" json:"mod_timestamp,omitempty"`
Skip bool `yaml:"skip,omitempty" json:"skip,omitempty"`
Skip string `yaml:"skip,omitempty" json:"skip,omitempty" jsonschema:"oneof_type=string;boolean"`
GoBinary string `yaml:"gobinary,omitempty" json:"gobinary,omitempty"`
Command string `yaml:"command,omitempty" json:"command,omitempty"`
NoUniqueDistDir bool `yaml:"no_unique_dist_dir,omitempty" json:"no_unique_dist_dir,omitempty"`

View File

@ -194,6 +194,8 @@ builds:
# If true, skip the build.
# Useful for library projects.
#
# Templates: allowed (since v2.3).
skip: false
# By default, GoReleaser will create your binaries inside