gitee.com/mirrors_opencollective/goreleaser@v0.45.0/pipeline/release/body.go (about) 1 package release 2 3 import ( 4 "bytes" 5 "os/exec" 6 "text/template" 7 8 "github.com/goreleaser/goreleaser/context" 9 "github.com/goreleaser/goreleaser/internal/artifact" 10 ) 11 12 const bodyTemplate = `{{ .ReleaseNotes }} 13 14 {{- if .DockerImages }} 15 16 ## Docker images 17 {{ range $element := .DockerImages }} 18 - ` + "`docker pull {{ . -}}`" + ` 19 {{- end -}} 20 {{- end }} 21 22 --- 23 Automated with [GoReleaser](https://github.com/goreleaser) 24 Built with {{ .GoVersion }}` 25 26 func describeBody(ctx *context.Context) (bytes.Buffer, error) { 27 /* #nosec */ 28 bts, err := exec.CommandContext(ctx, "go", "version").CombinedOutput() 29 if err != nil { 30 return bytes.Buffer{}, err 31 } 32 return describeBodyVersion(ctx, string(bts)) 33 } 34 35 func describeBodyVersion(ctx *context.Context, version string) (bytes.Buffer, error) { 36 var out bytes.Buffer 37 var template = template.Must(template.New("release").Parse(bodyTemplate)) 38 var dockers []string 39 for _, a := range ctx.Artifacts.Filter(artifact.ByType(artifact.DockerImage)).List() { 40 dockers = append(dockers, a.Name) 41 } 42 err := template.Execute(&out, struct { 43 ReleaseNotes, GoVersion string 44 DockerImages []string 45 }{ 46 ReleaseNotes: ctx.ReleaseNotes, 47 GoVersion: version, 48 DockerImages: dockers, 49 }) 50 return out, err 51 }