1
0
mirror of https://github.com/goreleaser/goreleaser.git synced 2025-03-17 20:47:50 +02:00

feat: add docker manifests to release notes (#1925)

* feat: add docker manifests to release notes

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>

* chore: fmt

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>

* refactor: improve code a bit

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>

* test: cover artifact.Type.String() with tests

Signed-off-by: Carlos Alexandro Becker <caarlos0@gmail.com>
This commit is contained in:
Carlos Alexandro Becker 2020-11-29 14:33:31 -03:00 committed by GitHub
parent 3fb2366bd4
commit 397ff3ba84
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 69 additions and 12 deletions

View File

@ -40,6 +40,8 @@ const (
PublishableDockerImage
// DockerImage is a published Docker image.
DockerImage
// DockerManifest is a published Docker manifest.
DockerManifest
// Checksum is a checksums file.
Checksum
// Signature is a signature file.
@ -60,6 +62,8 @@ func (t Type) String() string {
return "Linux Package"
case PublishableDockerImage, DockerImage:
return "Docker Image"
case DockerManifest:
return "Docker Manifest"
case PublishableSnapcraft, Snapcraft:
return "Snap"
case Checksum:

View File

@ -288,3 +288,28 @@ func TestByFormats(t *testing.T) {
require.Len(t, artifacts.Filter(ByFormats("zip")).items, 2)
require.Len(t, artifacts.Filter(ByFormats("zip", "tar.gz")).items, 3)
}
func TestTypeToString(t *testing.T) {
for _, a := range []Type{
UploadableArchive,
UploadableBinary,
UploadableFile,
Binary,
LinuxPackage,
PublishableSnapcraft,
Snapcraft,
PublishableDockerImage,
DockerImage,
DockerManifest,
Checksum,
Signature,
UploadableSourceArchive,
} {
t.Run(a.String(), func(t *testing.T) {
require.NotEqual(t, "unknown", a.String())
})
}
t.Run("unknown", func(t *testing.T) {
require.Equal(t, "unknown", Type(9999).String())
})
}

View File

@ -152,10 +152,10 @@ func TestRunPipe(t *testing.T) {
},
manifests: []config.DockerManifest{
{
NameTemplate: registry + "goreleaser/test_multiarch_fail:test",
ImageTemplates: []string{registry + "goreleaser/test_multiarch_fail:latest-amd64"},
CreateFlags: []string{"--insecure"},
PushFlags: []string{"--insecure"},
NameTemplate: registry + "goreleaser/test_multiarch_fail:test",
ImageTemplates: []string{registry + "goreleaser/test_multiarch_fail:latest-amd64"},
CreateFlags: []string{"--insecure"},
PushFlags: []string{"--insecure"},
},
},
expect: []string{registry + "goreleaser/test_multiarch_fail:latest-arm64v8"},
@ -176,8 +176,8 @@ func TestRunPipe(t *testing.T) {
},
manifests: []config.DockerManifest{
{
NameTemplate: registry + "goreleaser/test_multiarch_manifest_tmpl_error:{{ .Goos }",
ImageTemplates: []string{registry + "goreleaser/test_multiarch_manifest_tmpl_error"},
NameTemplate: registry + "goreleaser/test_multiarch_manifest_tmpl_error:{{ .Goos }",
ImageTemplates: []string{registry + "goreleaser/test_multiarch_manifest_tmpl_error"},
},
},
expect: []string{registry + "goreleaser/test_multiarch_manifest_tmpl_error"},
@ -198,8 +198,8 @@ func TestRunPipe(t *testing.T) {
},
manifests: []config.DockerManifest{
{
NameTemplate: registry + "goreleaser/test_multiarch_img_tmpl_error",
ImageTemplates: []string{registry + "goreleaser/test_multiarch_img_tmpl_error:{{ .Goos }"},
NameTemplate: registry + "goreleaser/test_multiarch_img_tmpl_error",
ImageTemplates: []string{registry + "goreleaser/test_multiarch_img_tmpl_error:{{ .Goos }"},
},
},
expect: []string{registry + "goreleaser/test_multiarch_img_tmpl_error"},
@ -220,8 +220,8 @@ func TestRunPipe(t *testing.T) {
},
manifests: []config.DockerManifest{
{
NameTemplate: " ",
ImageTemplates: []string{registry + "goreleaser/test_multiarch_no_mainifest_name"},
NameTemplate: " ",
ImageTemplates: []string{registry + "goreleaser/test_multiarch_no_mainifest_name"},
},
},
expect: []string{registry + "goreleaser/test_multiarch_no_mainifest_name"},
@ -242,8 +242,8 @@ func TestRunPipe(t *testing.T) {
},
manifests: []config.DockerManifest{
{
NameTemplate: "ignored",
ImageTemplates: []string{" ", " ", ""},
NameTemplate: "ignored",
ImageTemplates: []string{" ", " ", ""},
},
},
expect: []string{registry + "goreleaser/test_multiarch_no_mainifest_images"},

View File

@ -6,6 +6,7 @@ import (
"strings"
"github.com/apex/log"
"github.com/goreleaser/goreleaser/internal/artifact"
"github.com/goreleaser/goreleaser/internal/pipe"
"github.com/goreleaser/goreleaser/internal/semerrgroup"
"github.com/goreleaser/goreleaser/internal/tmpl"
@ -41,6 +42,11 @@ func (ManifestPipe) Publish(ctx *context.Context) error {
if err := dockerManifestCreate(ctx, name, images, manifest.CreateFlags); err != nil {
return err
}
ctx.Artifacts.Add(&artifact.Artifact{
Type: artifact.DockerManifest,
Name: name,
Path: name,
})
return dockerManifestPush(ctx, name, manifest.PushFlags)
})
}

View File

@ -23,6 +23,9 @@ 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() {
dockers = append(dockers, a.Name)
}
for _, a := range ctx.Artifacts.Filter(artifact.ByType(artifact.DockerImage)).List() {
dockers = append(dockers, a.Name)
}

View File

@ -21,6 +21,19 @@ func TestDescribeBody(t *testing.T) {
"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,

View File

@ -6,3 +6,9 @@ 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`