1
0
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:
Carlos Alexandro Becker 2017-09-16 15:31:20 -03:00
parent 5ac2918380
commit c320f338ea
No known key found for this signature in database
GPG Key ID: E61E2F7DC14AB940
6 changed files with 77 additions and 10 deletions

View File

@ -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()

View File

@ -95,6 +95,7 @@ func process(ctx *context.Context, folder string, docker config.Docker, binary c
return err
}
}
ctx.AddDocker(image)
return nil
}

View File

@ -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
}

View File

@ -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
View 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
View 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