mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-04-11 11:42:15 +02:00
feat: remove docker images from changelog (#2708)
refs #2707 Signed-off-by: Carlos A Becker <caarlos0@gmail.com>
This commit is contained in:
parent
6a30b0e55d
commit
30ff48a5a6
@ -2,55 +2,26 @@ package release
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
"github.com/goreleaser/goreleaser/internal/artifact"
|
||||
"github.com/goreleaser/goreleaser/internal/tmpl"
|
||||
"github.com/goreleaser/goreleaser/pkg/context"
|
||||
)
|
||||
|
||||
const bodyTemplateText = `{{ with .Header }}{{ . }}{{ "\n" }}{{ end }}
|
||||
{{- .ReleaseNotes }}
|
||||
|
||||
{{- with .DockerImages }}
|
||||
|
||||
## Docker images
|
||||
{{ range $element := . }}
|
||||
- ` + "`docker pull {{ . -}}`" + `
|
||||
{{- end -}}
|
||||
{{- end }}
|
||||
{{- with .Footer }}{{ "\n" }}{{ . }}{{ end }}
|
||||
`
|
||||
|
||||
func isLatest(img string) bool {
|
||||
return strings.HasSuffix(img, ":latest") || !strings.Contains(img, ":")
|
||||
}
|
||||
|
||||
func describeBody(ctx *context.Context) (bytes.Buffer, error) {
|
||||
var out bytes.Buffer
|
||||
// nolint:prealloc
|
||||
var dockers []string
|
||||
for _, a := range ctx.Artifacts.Filter(artifact.ByType(artifact.DockerManifest)).List() {
|
||||
if isLatest(a.Name) {
|
||||
continue
|
||||
}
|
||||
dockers = append(dockers, a.Name)
|
||||
}
|
||||
if len(dockers) == 0 {
|
||||
for _, a := range ctx.Artifacts.Filter(artifact.ByType(artifact.DockerImage)).List() {
|
||||
if isLatest(a.Name) {
|
||||
continue
|
||||
}
|
||||
dockers = append(dockers, a.Name)
|
||||
}
|
||||
}
|
||||
t := tmpl.New(ctx)
|
||||
|
||||
header, err := tmpl.New(ctx).Apply(ctx.Config.Release.Header)
|
||||
header, err := t.Apply(ctx.Config.Release.Header)
|
||||
if err != nil {
|
||||
return out, err
|
||||
}
|
||||
footer, err := tmpl.New(ctx).Apply(ctx.Config.Release.Footer)
|
||||
footer, err := t.Apply(ctx.Config.Release.Footer)
|
||||
if err != nil {
|
||||
return out, err
|
||||
}
|
||||
@ -60,12 +31,10 @@ func describeBody(ctx *context.Context) (bytes.Buffer, error) {
|
||||
Header string
|
||||
Footer string
|
||||
ReleaseNotes string
|
||||
DockerImages []string
|
||||
}{
|
||||
Header: header,
|
||||
Footer: footer,
|
||||
ReleaseNotes: ctx.ReleaseNotes,
|
||||
DockerImages: dockers,
|
||||
})
|
||||
return out, err
|
||||
}
|
||||
|
@ -3,7 +3,6 @@ package release
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/goreleaser/goreleaser/internal/artifact"
|
||||
"github.com/goreleaser/goreleaser/internal/golden"
|
||||
"github.com/goreleaser/goreleaser/pkg/config"
|
||||
"github.com/goreleaser/goreleaser/pkg/context"
|
||||
@ -14,61 +13,6 @@ func TestDescribeBody(t *testing.T) {
|
||||
changelog := "feature1: description\nfeature2: other description"
|
||||
ctx := context.New(config.Project{})
|
||||
ctx.ReleaseNotes = changelog
|
||||
for _, d := range []string{
|
||||
"goreleaser/goreleaser:0.40.0",
|
||||
"goreleaser/goreleaser:latest",
|
||||
"goreleaser/goreleaser",
|
||||
"goreleaser/godownloader:v0.1.0",
|
||||
} {
|
||||
ctx.Artifacts.Add(&artifact.Artifact{
|
||||
Name: d,
|
||||
Type: artifact.DockerImage,
|
||||
})
|
||||
}
|
||||
out, err := describeBody(ctx)
|
||||
require.NoError(t, err)
|
||||
|
||||
golden.RequireEqual(t, out.Bytes())
|
||||
}
|
||||
|
||||
func TestDescribeBodyWithDockerManifest(t *testing.T) {
|
||||
changelog := "feature1: description\nfeature2: other description"
|
||||
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.DockerManifest,
|
||||
})
|
||||
}
|
||||
for _, d := range []string{
|
||||
"goreleaser/goreleaser:0.40.0-amd64",
|
||||
"goreleaser/goreleaser:latest-amd64",
|
||||
"goreleaser/godownloader:v0.1.0-amd64",
|
||||
"goreleaser/goreleaser:0.40.0-arm64",
|
||||
"goreleaser/goreleaser:latest-arm64",
|
||||
"goreleaser/godownloader:v0.1.0-arm64",
|
||||
} {
|
||||
ctx.Artifacts.Add(&artifact.Artifact{
|
||||
Name: d,
|
||||
Type: artifact.DockerImage,
|
||||
})
|
||||
}
|
||||
out, err := describeBody(ctx)
|
||||
require.NoError(t, err)
|
||||
|
||||
golden.RequireEqual(t, out.Bytes())
|
||||
}
|
||||
|
||||
func TestDescribeBodyNoDockerImagesNoBrews(t *testing.T) {
|
||||
changelog := "feature1: description\nfeature2: other description"
|
||||
ctx := &context.Context{
|
||||
ReleaseNotes: changelog,
|
||||
}
|
||||
out, err := describeBody(ctx)
|
||||
require.NoError(t, err)
|
||||
|
||||
@ -95,10 +39,6 @@ func TestDescribeBodyWithHeaderAndFooter(t *testing.T) {
|
||||
})
|
||||
ctx.ReleaseNotes = changelog
|
||||
ctx.Git = context.GitInfo{CurrentTag: "v1.0"}
|
||||
ctx.Artifacts.Add(&artifact.Artifact{
|
||||
Name: "goreleaser/goreleaser:v1.2.3",
|
||||
Type: artifact.DockerImage,
|
||||
})
|
||||
out, err := describeBody(ctx)
|
||||
require.NoError(t, err)
|
||||
|
||||
|
@ -1,7 +1,2 @@
|
||||
feature1: description
|
||||
feature2: other description
|
||||
|
||||
## Docker images
|
||||
|
||||
- `docker pull goreleaser/goreleaser:0.40.0`
|
||||
- `docker pull goreleaser/godownloader:v0.1.0`
|
||||
|
@ -4,10 +4,6 @@ something
|
||||
feature1: description
|
||||
feature2: other description
|
||||
|
||||
## Docker images
|
||||
|
||||
- `docker pull goreleaser/goreleaser:v1.2.3`
|
||||
|
||||
---
|
||||
|
||||
Get images at docker.io/foo/bar:v1.0
|
||||
|
Loading…
x
Reference in New Issue
Block a user