diff --git a/internal/pipe/docker/docker.go b/internal/pipe/docker/docker.go index fb4b10b7569..c77a95ee77b 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 6475eed411b..7ac3f128d33 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 00000000000..d80af75e073 --- /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 00000000000..29b12ee591c --- /dev/null +++ b/internal/pipe/docker/testdata/Dockerfile.true @@ -0,0 +1,2 @@ +FROM alpine +RUN true