From 792b883f59ed807cc8e3b3e0fc5d98ac22ee1725 Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Sun, 6 Oct 2019 15:53:38 -0300 Subject: [PATCH] fix: docker: skip push skips other builds (#1177) * fix: skip aware semerrgroup Signed-off-by: Carlos Alexandro Becker * fix: docker: skip push skips other builds Signed-off-by: Carlos Alexandro Becker --- internal/pipe/docker/docker.go | 2 +- internal/pipe/docker/docker_test.go | 30 +++++++++++++++++++ .../pipe/docker/testdata/Dockerfile.false | 2 ++ internal/pipe/docker/testdata/Dockerfile.true | 2 ++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 internal/pipe/docker/testdata/Dockerfile.false create mode 100644 internal/pipe/docker/testdata/Dockerfile.true diff --git a/internal/pipe/docker/docker.go b/internal/pipe/docker/docker.go index fb4b10b75..c77a95ee7 100644 --- a/internal/pipe/docker/docker.go +++ b/internal/pipe/docker/docker.go @@ -80,7 +80,7 @@ func (Pipe) Publish(ctx *context.Context) error { } func doRun(ctx *context.Context) error { - var g = semerrgroup.New(ctx.Parallelism) + var g = semerrgroup.NewSkipAware(semerrgroup.New(ctx.Parallelism)) for _, docker := range ctx.Config.Dockers { docker := docker g.Go(func() error { diff --git a/internal/pipe/docker/docker_test.go b/internal/pipe/docker/docker_test.go index 6475eed41..7ac3f128d 100644 --- a/internal/pipe/docker/docker_test.go +++ b/internal/pipe/docker/docker_test.go @@ -232,6 +232,35 @@ func TestRunPipe(t *testing.T) { assertImageLabels: noLabels, assertError: testlib.AssertSkipped, }, + "one_img_error_with_skip_push": { + dockers: []config.Docker{ + { + ImageTemplates: []string{ + registry + "goreleaser/one_img_error_with_skip_push:true", + }, + Goos: "linux", + Goarch: "amd64", + Dockerfile: "testdata/Dockerfile.true", + Binaries: []string{"mybin"}, + SkipPush: "true", + }, + { + ImageTemplates: []string{ + registry + "goreleaser/one_img_error_with_skip_push:false", + }, + Goos: "linux", + Goarch: "amd64", + Dockerfile: "testdata/Dockerfile.false", + Binaries: []string{"mybin"}, + SkipPush: "true", + }, + }, + expect: []string{ + registry + "goreleaser/one_img_error_with_skip_push:true", + }, + assertImageLabels: noLabels, + assertError: shouldErr("failed to build docker image"), + }, "valid_no_latest": { dockers: []config.Docker{ { @@ -531,6 +560,7 @@ func TestRunPipe(t *testing.T) { Dist: dist, Dockers: docker.dockers, }) + ctx.Parallelism = 1 ctx.Env = docker.env ctx.Version = "1.0.0" ctx.Git = context.GitInfo{ diff --git a/internal/pipe/docker/testdata/Dockerfile.false b/internal/pipe/docker/testdata/Dockerfile.false new file mode 100644 index 000000000..d80af75e0 --- /dev/null +++ b/internal/pipe/docker/testdata/Dockerfile.false @@ -0,0 +1,2 @@ +FROM alpine +RUN false diff --git a/internal/pipe/docker/testdata/Dockerfile.true b/internal/pipe/docker/testdata/Dockerfile.true new file mode 100644 index 000000000..29b12ee59 --- /dev/null +++ b/internal/pipe/docker/testdata/Dockerfile.true @@ -0,0 +1,2 @@ +FROM alpine +RUN true