diff --git a/internal/pipe/release/body.go b/internal/pipe/release/body.go index c73aad280..5526e78a1 100644 --- a/internal/pipe/release/body.go +++ b/internal/pipe/release/body.go @@ -26,8 +26,10 @@ func describeBody(ctx *context.Context) (bytes.Buffer, error) { for _, a := range ctx.Artifacts.Filter(artifact.ByType(artifact.DockerManifest)).List() { dockers = append(dockers, a.Name) } - for _, a := range ctx.Artifacts.Filter(artifact.ByType(artifact.DockerImage)).List() { - dockers = append(dockers, a.Name) + if len(dockers) == 0 { + for _, a := range ctx.Artifacts.Filter(artifact.ByType(artifact.DockerImage)).List() { + dockers = append(dockers, a.Name) + } } var bodyTemplate = template.Must(template.New("release").Parse(bodyTemplateText)) err := bodyTemplate.Execute(&out, struct { diff --git a/internal/pipe/release/body_test.go b/internal/pipe/release/body_test.go index 080cd1c48..2e99561ad 100644 --- a/internal/pipe/release/body_test.go +++ b/internal/pipe/release/body_test.go @@ -13,7 +13,35 @@ import ( var update = flag.Bool("update", false, "update .golden files") + func TestDescribeBody(t *testing.T) { + var changelog = "feature1: description\nfeature2: other description" + var ctx = context.New(config.Project{}) + ctx.ReleaseNotes = changelog + for _, d := range []string{ + "goreleaser/goreleaser:0.40.0", + "goreleaser/goreleaser:latest", + "goreleaser/godownloader:v0.1.0", + } { + ctx.Artifacts.Add(&artifact.Artifact{ + Name: d, + Type: artifact.DockerImage, + }) + } + out, err := describeBody(ctx) + require.NoError(t, err) + + var golden = "testdata/release1.golden" + if *update { + _ = ioutil.WriteFile(golden, out.Bytes(), 0755) + } + bts, err := ioutil.ReadFile(golden) + require.NoError(t, err) + require.Equal(t, string(bts), out.String()) +} + + +func TestDescribeBodyWithDockerManifest(t *testing.T) { var changelog = "feature1: description\nfeature2: other description" var ctx = context.New(config.Project{}) ctx.ReleaseNotes = changelog @@ -43,7 +71,7 @@ func TestDescribeBody(t *testing.T) { out, err := describeBody(ctx) require.NoError(t, err) - var golden = "testdata/release1.golden" + var golden = "testdata/release3.golden" if *update { _ = ioutil.WriteFile(golden, out.Bytes(), 0755) } diff --git a/internal/pipe/release/testdata/release1.golden b/internal/pipe/release/testdata/release1.golden index 50aa260ef..1005de7a8 100755 --- a/internal/pipe/release/testdata/release1.golden +++ b/internal/pipe/release/testdata/release1.golden @@ -6,9 +6,3 @@ feature2: other description - `docker pull goreleaser/goreleaser:0.40.0` - `docker pull goreleaser/goreleaser:latest` - `docker pull goreleaser/godownloader:v0.1.0` -- `docker pull goreleaser/goreleaser:0.40.0-amd64` -- `docker pull goreleaser/goreleaser:latest-amd64` -- `docker pull goreleaser/godownloader:v0.1.0-amd64` -- `docker pull goreleaser/goreleaser:0.40.0-arm64` -- `docker pull goreleaser/goreleaser:latest-arm64` -- `docker pull goreleaser/godownloader:v0.1.0-arm64` diff --git a/internal/pipe/release/testdata/release3.golden b/internal/pipe/release/testdata/release3.golden new file mode 100755 index 000000000..1005de7a8 --- /dev/null +++ b/internal/pipe/release/testdata/release3.golden @@ -0,0 +1,8 @@ +feature1: description +feature2: other description + +## Docker images + +- `docker pull goreleaser/goreleaser:0.40.0` +- `docker pull goreleaser/goreleaser:latest` +- `docker pull goreleaser/godownloader:v0.1.0` diff --git a/www/docs/customization/docker_manifest.md b/www/docs/customization/docker_manifest.md index b35f4cbb2..71ce15b02 100644 --- a/www/docs/customization/docker_manifest.md +++ b/www/docs/customization/docker_manifest.md @@ -10,6 +10,10 @@ For it to work, it [has to be enabled in the client configurations](https://gith Please make sure `docker manifest` works before opening issues. +Notice that if you have something in the `docker_manifests` section in your +config file, GoReleaser will add the manifest's to the release notes +instead of the Docker images names. + !!! warning Please note that this is a beta feature, and it may change or be removed at any time.