mirror of
https://github.com/goreleaser/goreleaser.git
synced 2025-01-08 03:31:59 +02:00
adding docker images into the release notes
This commit is contained in:
parent
5ac2918380
commit
c320f338ea
@ -35,6 +35,7 @@ type Context struct {
|
||||
Git GitInfo
|
||||
Binaries map[string]map[string][]Binary
|
||||
Artifacts []string
|
||||
Dockers []string
|
||||
ReleaseNotes string
|
||||
Version string
|
||||
Validate bool
|
||||
@ -45,6 +46,7 @@ type Context struct {
|
||||
}
|
||||
|
||||
var artifactsLock sync.Mutex
|
||||
var dockersLock sync.Mutex
|
||||
var binariesLock sync.Mutex
|
||||
|
||||
// AddArtifact adds a file to upload list
|
||||
@ -56,6 +58,14 @@ func (ctx *Context) AddArtifact(file string) {
|
||||
log.WithField("artifact", file).Info("new release artifact")
|
||||
}
|
||||
|
||||
// AddDocker adds a docker image to the docker images list
|
||||
func (ctx *Context) AddDocker(image string) {
|
||||
dockersLock.Lock()
|
||||
defer dockersLock.Unlock()
|
||||
ctx.Dockers = append(ctx.Dockers, image)
|
||||
log.WithField("image", image).Info("new docker image")
|
||||
}
|
||||
|
||||
// AddBinary adds a built binary to the current context
|
||||
func (ctx *Context) AddBinary(platform, folder, name, path string) {
|
||||
binariesLock.Lock()
|
||||
|
@ -95,6 +95,7 @@ func process(ctx *context.Context, folder string, docker config.Docker, binary c
|
||||
return err
|
||||
}
|
||||
}
|
||||
ctx.AddDocker(image)
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -10,23 +10,36 @@ import (
|
||||
|
||||
const bodyTemplate = `{{ .ReleaseNotes }}
|
||||
|
||||
{{- if .DockerImages }}
|
||||
|
||||
Docker images:
|
||||
{{ range $element := .DockerImages }}
|
||||
- {{ . -}}
|
||||
{{ end -}}
|
||||
{{- end }}
|
||||
|
||||
---
|
||||
Automated with [GoReleaser](https://github.com/goreleaser)
|
||||
Built with {{ .GoVersion }}
|
||||
`
|
||||
Built with {{ .GoVersion }}`
|
||||
|
||||
func describeBody(ctx *context.Context) (bytes.Buffer, error) {
|
||||
var out bytes.Buffer
|
||||
bts, err := exec.Command("go", "version").CombinedOutput()
|
||||
if err != nil {
|
||||
return out, err
|
||||
return bytes.Buffer{}, err
|
||||
}
|
||||
return describeBodyVersion(ctx, string(bts))
|
||||
}
|
||||
|
||||
func describeBodyVersion(ctx *context.Context, version string) (bytes.Buffer, error) {
|
||||
var out bytes.Buffer
|
||||
var template = template.Must(template.New("release").Parse(bodyTemplate))
|
||||
err = template.Execute(&out, struct {
|
||||
err := template.Execute(&out, struct {
|
||||
ReleaseNotes, GoVersion string
|
||||
DockerImages []string
|
||||
}{
|
||||
ReleaseNotes: ctx.ReleaseNotes,
|
||||
GoVersion: string(bts),
|
||||
GoVersion: version,
|
||||
DockerImages: ctx.Dockers,
|
||||
})
|
||||
return out, err
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
package release
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
@ -13,12 +14,35 @@ func TestDescribeBody(t *testing.T) {
|
||||
var changelog = "\nfeature1: description\nfeature2: other description"
|
||||
var ctx = &context.Context{
|
||||
ReleaseNotes: changelog,
|
||||
Dockers: []string{
|
||||
"goreleaser/goreleaser:0.40.0",
|
||||
"goreleaser/godownloader:0.1.0",
|
||||
},
|
||||
}
|
||||
out, err := describeBody(ctx)
|
||||
out, err := describeBodyVersion(ctx, "go version go1.9 darwin/amd64")
|
||||
assert.NoError(err)
|
||||
assert.Contains(out.String(), changelog)
|
||||
assert.Contains(out.String(), "Automated with [GoReleaser]")
|
||||
assert.Contains(out.String(), "Built with go version go1.")
|
||||
|
||||
bts, err := ioutil.ReadFile("testdata/release1.txt")
|
||||
assert.NoError(err)
|
||||
ioutil.WriteFile("testdata/release1.txt", out.Bytes(), 0755)
|
||||
|
||||
assert.Equal(string(bts), out.String())
|
||||
}
|
||||
|
||||
func TestDescribeBodyNoDockerImages(t *testing.T) {
|
||||
var assert = assert.New(t)
|
||||
var changelog = "\nfeature1: description\nfeature2: other description"
|
||||
var ctx = &context.Context{
|
||||
ReleaseNotes: changelog,
|
||||
}
|
||||
out, err := describeBodyVersion(ctx, "go version go1.9 darwin/amd64")
|
||||
assert.NoError(err)
|
||||
|
||||
bts, err := ioutil.ReadFile("testdata/release2.txt")
|
||||
assert.NoError(err)
|
||||
ioutil.WriteFile("testdata/release2.txt", out.Bytes(), 0755)
|
||||
|
||||
assert.Equal(string(bts), out.String())
|
||||
}
|
||||
|
||||
func TestDontEscapeHTML(t *testing.T) {
|
||||
|
12
pipeline/release/testdata/release1.txt
vendored
Normal file
12
pipeline/release/testdata/release1.txt
vendored
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
feature1: description
|
||||
feature2: other description
|
||||
|
||||
Docker images:
|
||||
|
||||
- goreleaser/goreleaser:0.40.0
|
||||
- goreleaser/godownloader:0.1.0
|
||||
|
||||
---
|
||||
Automated with [GoReleaser](https://github.com/goreleaser)
|
||||
Built with go version go1.9 darwin/amd64
|
7
pipeline/release/testdata/release2.txt
vendored
Executable file
7
pipeline/release/testdata/release2.txt
vendored
Executable file
@ -0,0 +1,7 @@
|
||||
|
||||
feature1: description
|
||||
feature2: other description
|
||||
|
||||
---
|
||||
Automated with [GoReleaser](https://github.com/goreleaser)
|
||||
Built with go version go1.9 darwin/amd64
|
Loading…
Reference in New Issue
Block a user