From 7f6430d84d68765536b8758b1331a4b84db04c84 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B8rn=20Erik=20Pedersen?= Date: Thu, 13 Apr 2017 16:59:05 +0200 Subject: Automate the Hugo release process This commit adds a work flow aroung GoReleaser to get the Hugo release process automated and more uniform: * It can be run fully automated or in two steps to allow for manual edits of the relase notes. * It supports both patch and full releases. * It fetches author, issue, repo info. etc. for the release notes from GitHub. * The file names produced are mainly the same as before, but we no use tar.gz as archive for all Unix versions. * There isn't a fully automated CI setup in place yet, but the release tag is marked in the commit message with "[ci deploy]" Fixes #3358 --- commands/genman.go | 2 +- commands/hugo.go | 2 +- commands/release.go | 62 +++++++++++++++++++++++++++++++++++++++++++++++++++++ commands/version.go | 4 ++-- 4 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 commands/release.go (limited to 'commands') diff --git a/commands/genman.go b/commands/genman.go index 7b26afeed..cd5c8c84e 100644 --- a/commands/genman.go +++ b/commands/genman.go @@ -36,7 +36,7 @@ in the "man" directory under the current directory.`, header := &doc.GenManHeader{ Section: "1", Manual: "Hugo Manual", - Source: fmt.Sprintf("Hugo %s", helpers.HugoVersion()), + Source: fmt.Sprintf("Hugo %s", helpers.CurrentHugoVersion), } if !strings.HasSuffix(genmandir, helpers.FilePathSeparator) { genmandir += helpers.FilePathSeparator diff --git a/commands/hugo.go b/commands/hugo.go index 73dde5d2d..4260f6e56 100644 --- a/commands/hugo.go +++ b/commands/hugo.go @@ -399,7 +399,7 @@ func InitializeConfig(subCmdVs ...*cobra.Command) (*deps.DepsCfg, error) { if themeVersionMismatch { cfg.Logger.ERROR.Printf("Current theme does not support Hugo version %s. Minimum version required is %s\n", - helpers.HugoReleaseVersion(), minVersion) + helpers.CurrentHugoVersion.ReleaseVersion(), minVersion) } return cfg, nil diff --git a/commands/release.go b/commands/release.go new file mode 100644 index 000000000..f6d98e29f --- /dev/null +++ b/commands/release.go @@ -0,0 +1,62 @@ +// +build release + +// Copyright 2017-present The Hugo Authors. All rights reserved. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package commands + +import ( + "github.com/spf13/cobra" + "github.com/spf13/hugo/releaser" +) + +func init() { + HugoCmd.AddCommand(createReleaser().cmd) +} + +type releaseCommandeer struct { + cmd *cobra.Command + + // Will be zero for main releases. + patchLevel int + + skipPublish bool + + step int +} + +func createReleaser() *releaseCommandeer { + // Note: This is a command only meant for internal use and must be run + // via "go run -tags release main.go release" on the actual code base that is in the release. + r := &releaseCommandeer{ + cmd: &cobra.Command{ + Use: "release", + Short: "Release a new version of Hugo.", + Hidden: true, + }, + } + + r.cmd.RunE = func(cmd *cobra.Command, args []string) error { + return r.release() + } + + r.cmd.PersistentFlags().IntVarP(&r.patchLevel, "patch", "p", 0, "Patch level, defaults to 0 for main releases") + r.cmd.PersistentFlags().IntVarP(&r.step, "step", "s", -1, "Release step, defaults to -1 for all steps.") + r.cmd.PersistentFlags().BoolVarP(&r.skipPublish, "skip-publish", "", false, "Skip all publishing pipes of the release") + + return r +} + +func (r *releaseCommandeer) release() error { + return releaser.New(r.patchLevel, r.step, r.skipPublish).Run() +} diff --git a/commands/version.go b/commands/version.go index f026c13a5..9e673b817 100644 --- a/commands/version.go +++ b/commands/version.go @@ -44,9 +44,9 @@ func printHugoVersion() { formatBuildDate() // format the compile time } if hugolib.CommitHash == "" { - jww.FEEDBACK.Printf("Hugo Static Site Generator v%s %s/%s BuildDate: %s\n", helpers.HugoVersion(), runtime.GOOS, runtime.GOARCH, hugolib.BuildDate) + jww.FEEDBACK.Printf("Hugo Static Site Generator v%s %s/%s BuildDate: %s\n", helpers.CurrentHugoVersion, runtime.GOOS, runtime.GOARCH, hugolib.BuildDate) } else { - jww.FEEDBACK.Printf("Hugo Static Site Generator v%s-%s %s/%s BuildDate: %s\n", helpers.HugoVersion(), strings.ToUpper(hugolib.CommitHash), runtime.GOOS, runtime.GOARCH, hugolib.BuildDate) + jww.FEEDBACK.Printf("Hugo Static Site Generator v%s-%s %s/%s BuildDate: %s\n", helpers.CurrentHugoVersion, strings.ToUpper(hugolib.CommitHash), runtime.GOOS, runtime.GOARCH, hugolib.BuildDate) } } -- cgit v1.2.3