From 544f826dd6ab4e93178149c1d9e3f97e619a4095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Sun, 28 Jul 2019 14:33:56 +0200 Subject: [PATCH] releaser: Make it a one click release for patch releases --- releaser/releasenotes_writer.go | 41 ++++++++++++++++++++++----------- releaser/releaser.go | 16 +++++++++---- 2 files changed, 39 insertions(+), 18 deletions(-) diff --git a/releaser/releasenotes_writer.go b/releaser/releasenotes_writer.go index 15602dc4..146cee19 100644 --- a/releaser/releasenotes_writer.go +++ b/releaser/releasenotes_writer.go @@ -29,21 +29,29 @@ import ( ) const ( - issueLinkTemplate = "[#%d](https://github.com/gohugoio/hugo/issues/%d)" - linkTemplate = "[%s](%s)" - releaseNotesMarkdownTemplate = ` -{{- $patchRelease := isPatch . -}} -{{- $contribsPerAuthor := .All.ContribCountPerAuthor -}} -{{- $docsContribsPerAuthor := .Docs.ContribCountPerAuthor -}} -{{- if $patchRelease }} + issueLinkTemplate = "[#%d](https://github.com/gohugoio/hugo/issues/%d)" + linkTemplate = "[%s](%s)" + releaseNotesMarkdownTemplatePatchRelease = ` {{ if eq (len .All) 1 }} This is a bug-fix release with one important fix. {{ else }} This is a bug-fix release with a couple of important fixes. {{ end }} -{{ else }} -This release represents **{{ len .All }} contributions by {{ len $contribsPerAuthor }} contributors** to the main Hugo code base. +{{ range .All }} +{{- if .GitHubCommit -}} +* {{ .Subject }} {{ . | commitURL }} {{ . | authorURL }} {{ range .Issues }}{{ . | issue }}{{ end }} +{{ else -}} +* {{ .Subject }} {{ range .Issues }}{{ . | issue }}{{ end }} {{ end -}} +{{- end }} + + +` + releaseNotesMarkdownTemplate = ` +{{- $contribsPerAuthor := .All.ContribCountPerAuthor -}} +{{- $docsContribsPerAuthor := .Docs.ContribCountPerAuthor -}} + +This release represents **{{ len .All }} contributions by {{ len $contribsPerAuthor }} contributors** to the main Hugo code base. {{- if gt (len $contribsPerAuthor) 3 -}} {{- $u1 := index $contribsPerAuthor 0 -}} @@ -53,7 +61,6 @@ This release represents **{{ len .All }} contributions by {{ len $contribsPerAut {{- $u1.AuthorLink }} leads the Hugo development with a significant amount of contributions, but also a big shoutout to {{ $u2.AuthorLink }}, {{ $u3.AuthorLink }}, and {{ $u4.AuthorLink }} for their ongoing contributions. And a big thanks to [@digitalcraftsman](https://github.com/digitalcraftsman) and [@onedrawingperday](https://github.com/onedrawingperday) for their relentless work on keeping the themes site in pristine condition and to [@kaushalmodi](https://github.com/kaushalmodi) for his great work on the documentation site. {{ end }} -{{- if not $patchRelease }} Many have also been busy writing and fixing the documentation in [hugoDocs](https://github.com/gohugoio/hugoDocs), which has received **{{ len .Docs }} contributions by {{ len $docsContribsPerAuthor }} contributors**. {{- if gt (len $docsContribsPerAuthor) 3 -}} @@ -62,7 +69,7 @@ which has received **{{ len .Docs }} contributions by {{ len $docsContribsPerAut {{- $u3 := index $docsContribsPerAuthor 2 -}} {{- $u4 := index $docsContribsPerAuthor 3 }} A special thanks to {{ $u1.AuthorLink }}, {{ $u2.AuthorLink }}, {{ $u3.AuthorLink }}, and {{ $u4.AuthorLink }} for their work on the documentation site. {{ end }} -{{ end }} + Hugo now has: {{ with .Repo -}} @@ -151,7 +158,13 @@ func writeReleaseNotes(version string, infosMain, infosDocs gitInfos, to io.Writ changes.ThemeCount = themeCount } - tmpl, err := template.New("").Funcs(templateFuncs).Parse(releaseNotesMarkdownTemplate) + mtempl := releaseNotesMarkdownTemplate + + if !strings.HasSuffix(version, "0") { + mtempl = releaseNotesMarkdownTemplatePatchRelease + } + + tmpl, err := template.New("").Funcs(templateFuncs).Parse(mtempl) if err != nil { return err } @@ -225,9 +238,9 @@ func (r *ReleaseHandler) releaseNotesState(version string) (releaseNotesState, e } -func (r *ReleaseHandler) writeReleaseNotesToTemp(version string, infosMain, infosDocs gitInfos) (string, error) { +func (r *ReleaseHandler) writeReleaseNotesToTemp(version string, isPatch bool, infosMain, infosDocs gitInfos) (string, error) { - docsTempPath, name := getReleaseNotesDocsTempDirAndName(version, false) + docsTempPath, name := getReleaseNotesDocsTempDirAndName(version, isPatch) var ( w io.WriteCloser diff --git a/releaser/releaser.go b/releaser/releaser.go index 5430e1f8..178ad02a 100644 --- a/releaser/releaser.go +++ b/releaser/releaser.go @@ -94,6 +94,7 @@ func (r *ReleaseHandler) Run() error { version := newVersion.String() tag := "v" + version + isPatch := newVersion.PatchLevel > 0 // Exit early if tag already exists exists, err := tagExists(tag) @@ -128,8 +129,8 @@ func (r *ReleaseHandler) Run() error { return err } - prepareRelaseNotes := relNotesState == releaseNotesNone - shouldRelease := relNotesState == releaseNotesReady + prepareRelaseNotes := isPatch || relNotesState == releaseNotesNone + shouldRelease := isPatch || relNotesState == releaseNotesReady defer r.gitPush() // TODO(bep) @@ -152,7 +153,7 @@ func (r *ReleaseHandler) Run() error { } if prepareRelaseNotes { - releaseNotesFile, err := r.writeReleaseNotesToTemp(version, gitCommits, gitCommitsDocs) + releaseNotesFile, err := r.writeReleaseNotesToTemp(version, isPatch, gitCommits, gitCommitsDocs) if err != nil { return err } @@ -160,7 +161,14 @@ func (r *ReleaseHandler) Run() error { if _, err := r.git("add", releaseNotesFile); err != nil { return err } - if _, err := r.git("commit", "-m", fmt.Sprintf("%s Add release notes draft for %s\n\nRename to *-ready.md to continue. [ci skip]", commitPrefix, newVersion)); err != nil { + + commitMsg := fmt.Sprintf("%s Add release notes for %s", commitPrefix, newVersion) + if !isPatch { + commitMsg += "\n\nRename to *-ready.md to continue." + } + commitMsg += "\n[ci skip]" + + if _, err := r.git("commit", "-m", commitMsg); err != nil { return err } }