releaser: Adapt release logic to docs submodule
authorBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Thu, 15 Jun 2017 18:36:40 +0000 (20:36 +0200)
committerBjørn Erik Pedersen <bjorn.erik.pedersen@gmail.com>
Fri, 16 Jun 2017 06:51:43 +0000 (08:51 +0200)
releaser/git.go
releaser/releasenotes_writer.go
releaser/releaser.go

index 654ea78f083e5847cb9c8994215e4919e359cc86..4962c3693f23c7ecc3a5178f6ab9c484e784daba 100644 (file)
@@ -152,7 +152,7 @@ func git(args ...string) (string, error) {
        cmd := exec.Command("git", args...)
        out, err := cmd.CombinedOutput()
        if err != nil {
-               return "", fmt.Errorf("git failed: %q: %q", err, out)
+               return "", fmt.Errorf("git failed: %q: %q (%q)", err, out, args)
        }
        return string(out), nil
 }
index 9e3e6414d1cb7d4eb32d447ffd8647419f2d2ec5..d892eb7fa4980ee9ded76593835ab33001327473 100644 (file)
@@ -160,7 +160,7 @@ func writeReleaseNotes(version string, infos gitInfos, to io.Writer) error {
 }
 
 func fetchThemeCount() (int, error) {
-       resp, err := http.Get("https://github.com/gohugoio/hugoThemes/blob/master/.gitmodules")
+       resp, err := http.Get("https://raw.githubusercontent.com/gohugoio/hugoThemes/master/.gitmodules")
        if err != nil {
                return 0, err
        }
@@ -186,14 +186,14 @@ func writeReleaseNotesToTmpFile(version string, infos gitInfos) (string, error)
 }
 
 func getRelaseNotesDocsTempDirAndName(version string) (string, string) {
-       return hugoFilepath("docs/temp"), fmt.Sprintf("%s-relnotes.md", version)
+       return hugoFilepath("temp"), fmt.Sprintf("%s-relnotes.md", version)
 }
 
 func getRelaseNotesDocsTempFilename(version string) string {
        return filepath.Join(getRelaseNotesDocsTempDirAndName(version))
 }
 
-func writeReleaseNotesToDocsTemp(version string, infos gitInfos) (string, error) {
+func writeReleaseNotesToTemp(version string, infos gitInfos) (string, error) {
        docsTempPath, name := getRelaseNotesDocsTempDirAndName(version)
        os.Mkdir(docsTempPath, os.ModePerm)
 
index 17529acf29e6f52fb13f2721ace1bc0d7aacb60f..230a498e66d2abee731d3b4f86ce5ca8873da1fb 100644 (file)
@@ -128,7 +128,7 @@ func (r *ReleaseHandler) Run() error {
        }
 
        if r.shouldPrepareReleasenotes() {
-               releaseNotesFile, err := writeReleaseNotesToDocsTemp(version, gitCommits)
+               releaseNotesFile, err := writeReleaseNotesToTemp(version, gitCommits)
                if err != nil {
                        return err
                }
@@ -142,13 +142,24 @@ func (r *ReleaseHandler) Run() error {
        }
 
        if r.shouldPrepareVersions() {
-               if err := bumpVersions(newVersion); err != nil {
+               // Make sure the docs submodule is up to date.
+               if _, err := git("submodule", "update", "--remote", "--merge"); err != nil {
+                       return err
+               }
+               // TODO(bep) the above may not have changed anything.
+               if _, err := git("commit", "-a", "-m", fmt.Sprintf("%s Update /docs [ci skip]", commitPrefix)); err != nil {
                        return err
                }
 
-               if _, err := git("commit", "-a", "-m", fmt.Sprintf("%s Bump versions for release of %s\n\n[ci skip]", commitPrefix, newVersion)); err != nil {
+               if err := bumpVersions(newVersion); err != nil {
                        return err
                }
+
+               for _, repo := range []string{"docs", "."} {
+                       if _, err := git("-C", repo, "commit", "-a", "-m", fmt.Sprintf("%s Bump versions for release of %s\n\n[ci skip]", commitPrefix, newVersion)); err != nil {
+                               return err
+                       }
+               }
        }
 
        if !r.shouldRelease() {
@@ -164,19 +175,29 @@ func (r *ReleaseHandler) Run() error {
                return err
        }
 
-       if _, err := git("add", docFile); err != nil {
+       if _, err := git("-C", "docs", "add", docFile); err != nil {
                return err
        }
-       if _, err := git("commit", "-m", fmt.Sprintf("%s Add relase notes to /docs for release of %s\n\n[ci skip]", commitPrefix, newVersion)); err != nil {
+       if _, err := git("-C", "docs", "commit", "-m", fmt.Sprintf("%s Add relase notes to /docs for release of %s\n\n[ci skip]", commitPrefix, newVersion)); err != nil {
                return err
        }
 
-       if _, err := git("tag", "-a", tag, "-m", fmt.Sprintf("%s %s [ci deploy]", commitPrefix, newVersion)); err != nil {
-               return err
-       }
+       for i, repo := range []string{"docs", "."} {
+               if i == 1 {
+                       if _, err := git("add", "docs"); err != nil {
+                               return err
+                       }
+                       if _, err := git("commit", "-m", fmt.Sprintf("%s Update /docs to %s [ci skip]", commitPrefix, newVersion)); err != nil {
+                               return err
+                       }
+               }
+               if _, err := git("-C", repo, "tag", "-a", tag, "-m", fmt.Sprintf("%s %s [ci deploy]", commitPrefix, newVersion)); err != nil {
+                       return err
+               }
 
-       if _, err := git("push", "origin", tag); err != nil {
-               return err
+               if _, err := git("-C", repo, "push", "origin", tag); err != nil {
+                       return err
+               }
        }
 
        if err := r.release(releaseNotesFile); err != nil {
@@ -192,8 +213,10 @@ func (r *ReleaseHandler) Run() error {
                return err
        }
 
-       if _, err := git("commit", "-a", "-m", fmt.Sprintf("%s Prepare repository for %s\n\n[ci skip]", commitPrefix, finalVersion)); err != nil {
-               return err
+       for _, repo := range []string{"docs", "."} {
+               if _, err := git("-C", repo, "commit", "-a", "-m", fmt.Sprintf("%s Prepare repository for %s\n\n[ci skip]", commitPrefix, finalVersion)); err != nil {
+                       return err
+               }
        }
 
        return nil