diff --git a/docs/release/release-tasks.md b/docs/release/release-tasks.md index 59c852ba60bc..8c6b0e41f678 100644 --- a/docs/release/release-tasks.md +++ b/docs/release/release-tasks.md @@ -367,10 +367,10 @@ The goal of this task is to keep the CAPI community updated on recent PRs that h RELEASE_TAG=v1.6.x make release-notes ``` - If this is a beta or RC release, add the --pre-release-version flag + If this is a beta or RC release: ```bash make release-notes-tool - ./bin/notes --release=${RELEASE_TAG} --pre-release-version > CHANGELOG/${RELEASE_TAG}.md + ./bin/notes --release=${RELEASE_TAG} > CHANGELOG/${RELEASE_TAG}.md ``` 1. This will generate a new release notes file at `CHANGELOG/.md`. Finalize the release notes: diff --git a/hack/tools/release/notes/main.go b/hack/tools/release/notes/main.go index 711336cbc1b5..fdf0c93cdfb3 100644 --- a/hack/tools/release/notes/main.go +++ b/hack/tools/release/notes/main.go @@ -52,7 +52,6 @@ type notesCmdConfig struct { newTag string branch string prefixAreaLabel bool - preReleaseVersion bool deprecation bool addKubernetesVersionSupport bool } @@ -67,7 +66,6 @@ func readCmdConfig() *notesCmdConfig { flag.StringVar(&config.newTag, "release", "", "The tag for the new release.") flag.BoolVar(&config.prefixAreaLabel, "prefix-area-label", true, "If enabled, will prefix the area label.") - flag.BoolVar(&config.preReleaseVersion, "pre-release-version", false, "If enabled, will add a pre-release warning header. (default false)") flag.BoolVar(&config.deprecation, "deprecation", true, "If enabled, will add a templated deprecation warning header.") flag.BoolVar(&config.addKubernetesVersionSupport, "add-kubernetes-version-support", true, "If enabled, will add the Kubernetes version support header.") @@ -103,7 +101,7 @@ func (cmd *notesCmd) run() error { from, to := parseRef(cmd.config.fromRef), parseRef(cmd.config.toRef) printer := newReleaseNotesPrinter(cmd.config.repo, from.value) - printer.isPreRelease = cmd.config.preReleaseVersion + printer.releaseType = releaseType(cmd.config.newTag) printer.printDeprecation = cmd.config.deprecation printer.printKubernetesSupport = cmd.config.addKubernetesVersionSupport @@ -117,6 +115,26 @@ func (cmd *notesCmd) run() error { return generator.run() } +func releaseType(newTagConfig string) string { + // Error handling can be ignored as the version has been validated in computeConfigDefaults already. + newTag, _ := semver.ParseTolerant(newTagConfig) + + // Return early if it is not a pre release. + if len(newTag.Pre) != 2 { + return "" + } + + // Only allow RC and beta releases. More types must be defined here. + // If a new type is not defined, no warning banner will be printed. + switch newTag.Pre[0].VersionStr { + case "rc": + return "RELEASE CANDIDATE" + case "beta": + return "BETA RELEASE" + } + return "" +} + func ensureInstalledDependencies() error { if !commandExists("gh") { return errors.New("gh GitHub CLI not available. GitHub CLI is required to be present in the PATH. Refer to https://cli.github.com/ for installation") diff --git a/hack/tools/release/notes/print.go b/hack/tools/release/notes/print.go index 2c0a4affbe83..dc72d9d0c9cc 100644 --- a/hack/tools/release/notes/print.go +++ b/hack/tools/release/notes/print.go @@ -41,7 +41,7 @@ var defaultOutputOrder = []string{ // the right format for the release notes. type releaseNotesPrinter struct { outputOrder []string - isPreRelease bool + releaseType string printKubernetesSupport bool printDeprecation bool fromTag string @@ -75,8 +75,8 @@ func (p *releaseNotesPrinter) print(entries []notesEntry, commitsInRelease int, } } - if p.isPreRelease { - fmt.Printf("🚨 This is a RELEASE CANDIDATE. Use it only for testing purposes. If you find any bugs, file an [issue](https://github.com/%s/issues/new).\n", p.repo) + if p.releaseType != "" { + fmt.Printf("🚨 This is a %s. Use it only for testing purposes. If you find any bugs, file an [issue](https://github.com/%s/issues/new).\n", p.releaseType, p.repo) } if p.printKubernetesSupport {