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:
parent
3fb2366bd4
commit
397ff3ba84
@ -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:
|
||||
|
@ -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())
|
||||
})
|
||||
}
|
||||
|
@ -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"},
|
||||
|
@ -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)
|
||||
})
|
||||
}
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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,
|
||||
|
@ -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`
|
||||
|
Loading…
x
Reference in New Issue
Block a user