1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-04-13 11:50:34 +02:00

feat: ability to skip Docker update for pre-releases (#977) (#978)

This commit is contained in:
Roman Volosatovs 2019-03-06 17:17:53 +01:00 committed by Carlos Alexandro Becker
parent 3d110afc77
commit 9081caba5e
5 changed files with 22 additions and 13 deletions

View File

@ -188,10 +188,18 @@ func process(ctx *context.Context, docker config.Docker, bins []artifact.Artifac
if err := dockerBuild(ctx, tmp, images, buildFlags); err != nil {
return err
}
if docker.SkipPush {
// TODO: this should also be better handled
log.Warn(pipe.Skip("skip_push is set").Error())
return nil
if strings.TrimSpace(docker.SkipPush) == "true" {
return pipe.Skip("docker.skip_push is set")
}
if ctx.SkipPublish {
return pipe.ErrSkipPublishEnabled
}
if ctx.Config.Release.Draft {
return pipe.Skip("release is marked as draft")
}
if strings.TrimSpace(docker.SkipPush) == "auto" && ctx.Semver.Prerelease != "" {
return pipe.Skip("prerelease detected with 'auto' push, skipping docker publish")
}
for _, img := range images {
ctx.Artifacts.Add(artifact.Artifact{

View File

@ -13,6 +13,7 @@ import (
"github.com/goreleaser/goreleaser/internal/artifact"
"github.com/goreleaser/goreleaser/internal/pipe"
"github.com/goreleaser/goreleaser/internal/testlib"
"github.com/goreleaser/goreleaser/pkg/config"
"github.com/goreleaser/goreleaser/pkg/context"
"github.com/stretchr/testify/assert"
@ -223,15 +224,14 @@ func TestRunPipe(t *testing.T) {
Goarch: "amd64",
Dockerfile: "testdata/Dockerfile",
Binaries: []string{"mybin"},
SkipPush: true,
SkipPush: "true",
},
},
expect: []string{
registry + "goreleaser/test_run_pipe:latest",
},
assertImageLabels: noLabels,
assertError: shouldNotErr,
pubAssertError: shouldNotErr,
assertError: testlib.AssertSkipped,
},
"valid_no_latest": {
dockers: []config.Docker{
@ -384,7 +384,7 @@ func TestRunPipe(t *testing.T) {
Goarch: "amd64",
Dockerfile: "testdata/Dockerfile",
Binaries: []string{"mybin"},
SkipPush: true,
SkipPush: "true",
},
},
env: map[string]string{
@ -395,8 +395,7 @@ func TestRunPipe(t *testing.T) {
registry + "goreleaser/mybin:latest",
},
assertImageLabels: noLabels,
assertError: shouldNotErr,
pubAssertError: shouldNotErr,
assertError: testlib.AssertSkipped,
},
"no_permissions": {
dockers: []config.Docker{
@ -768,7 +767,7 @@ func Test_processImageTemplates(t *testing.T) {
"gcr.io/image:{{.Tag}}-{{.Env.FOO}}",
"gcr.io/image:v{{.Major}}.{{.Minor}}",
},
SkipPush: true,
SkipPush: "true",
},
},
},

View File

@ -23,7 +23,7 @@ func TestPublish(t *testing.T) {
var ctx = context.New(config.Project{})
ctx.Config.Release.Disable = true
for i := range ctx.Config.Dockers {
ctx.Config.Dockers[i].SkipPush = true
ctx.Config.Dockers[i].SkipPush = "true"
}
require.NoError(t, Pipe{}.Run(ctx))
}

View File

@ -251,7 +251,7 @@ type Docker struct {
Image string `yaml:",omitempty"`
Dockerfile string `yaml:",omitempty"`
ImageTemplates []string `yaml:"image_templates,omitempty"`
SkipPush bool `yaml:"skip_push,omitempty"`
SkipPush string `yaml:"skip_push,omitempty"`
TagTemplates []string `yaml:"tag_templates,omitempty"`
Files []string `yaml:"extra_files,omitempty"`
BuildFlagTemplates []string `yaml:"build_flag_templates,omitempty"`

View File

@ -65,6 +65,8 @@ dockers:
- "myuser/myimage:v{{ .Major }}"
- "gcr.io/myuser/myimage:latest"
# Skips the docker push. Could be useful if you also do draft releases.
# If set to auto, the release will not be pushed to the docker repository
# in case there is an indicator for prerelease in the tag e.g. v1.0.0-rc1
# Defaults to false.
skip_push: false
# Path to the Dockerfile (from the project root).