Skip to content

Commit 842e81d

Browse files
committed
Update release-provider-issues-tool for alpha/rc
1 parent 54fd2d9 commit 842e81d

File tree

2 files changed

+51
-17
lines changed

2 files changed

+51
-17
lines changed

hack/tools/release/internal/update_providers/provider_issues.go

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -75,15 +75,17 @@ type IssueResponse struct {
7575
// releaseDetails is the struct for the release details.
7676
type releaseDetails struct {
7777
ReleaseTag string
78-
BetaTag string
78+
PreReleaseTag string
7979
ReleaseLink string
8080
ReleaseDate string
8181
ReleaseNotesLink string
8282
}
8383

8484
// Example command:
8585
//
86+
// GITHUB_ISSUE_OPENER_TOKEN="fake" RELEASE_TAG="v1.6.0-alpha.0" RELEASE_DATE="2023-11-28" PROVIDER_ISSUES_DRY_RUN="true" make release-provider-issues-tool
8687
// GITHUB_ISSUE_OPENER_TOKEN="fake" RELEASE_TAG="v1.6.0-beta.0" RELEASE_DATE="2023-11-28" PROVIDER_ISSUES_DRY_RUN="true" make release-provider-issues-tool
88+
// GITHUB_ISSUE_OPENER_TOKEN="fake" RELEASE_TAG="v1.6.0-rc.0" RELEASE_DATE="2023-11-28" PROVIDER_ISSUES_DRY_RUN="true" make release-provider-issues-tool
8789
func main() {
8890
githubToken, keySet := os.LookupEnv("GITHUB_ISSUE_OPENER_TOKEN")
8991
if !keySet || githubToken == "" {
@@ -264,11 +266,11 @@ func getReleaseDetails() (releaseDetails, error) {
264266
return releaseDetails{}, errors.New("release tag is a required. Refer to README.md in folder for more information")
265267
}
266268

267-
// allow patterns like v1.7.0-beta.0
268-
pattern := `^v\d+\.\d+\.\d+-beta\.\d+$`
269+
// allow patterns like v1.7.0-alpha.0, v1.7.0-beta.0, v1.7.0-rc.0
270+
pattern := `^v\d+\.\d+\.\d+-(alpha|beta|rc)\.\d+$`
269271
match, err := regexp.MatchString(pattern, releaseSemVer)
270272
if err != nil || !match {
271-
return releaseDetails{}, errors.New("release tag must be in format `^v\\d+\\.\\d+\\.\\d+-beta\\.\\d+$` e.g. v1.7.0-beta.0")
273+
return releaseDetails{}, errors.New("release tag must be in format `^v\\d+\\.\\d+\\.\\d+-(alpha|beta|rc)\\.\\d+$` e.g. v1.7.0-beta.0")
272274
}
273275

274276
major, minor, patch := "", "", ""
@@ -296,14 +298,13 @@ func getReleaseDetails() (releaseDetails, error) {
296298

297299
majorMinorWithoutPrefixV := fmt.Sprintf("%s.%s", major, minor) // e.g. 1.7 . Note that there is no "v" in the majorMinor
298300
releaseTag := fmt.Sprintf("v%s.%s.%s", major, minor, patch) // e.g. v1.7.0
299-
betaTag := fmt.Sprintf("%s%s", releaseTag, "-beta.0") // e.g. v1.7.0-beta.0
300301
releaseLink := fmt.Sprintf("https://github.com/kubernetes-sigs/cluster-api/tree/main/docs/release/releases/release-%s.md#timeline", majorMinorWithoutPrefixV)
301-
releaseNotesLink := fmt.Sprintf("https://github.com/kubernetes-sigs/cluster-api/releases/tag/%s", betaTag)
302+
releaseNotesLink := fmt.Sprintf("https://github.com/kubernetes-sigs/cluster-api/releases/tag/%s", releaseSemVer)
302303

303304
return releaseDetails{
304305
ReleaseDate: formattedReleaseDate,
305306
ReleaseTag: releaseTag,
306-
BetaTag: betaTag,
307+
PreReleaseTag: releaseSemVer,
307308
ReleaseLink: releaseLink,
308309
ReleaseNotesLink: releaseNotesLink,
309310
}, nil
@@ -339,13 +340,13 @@ func formatDate(inputDate string) (string, error) {
339340
func getIssueBody() *template.Template {
340341
// do not indent the body
341342
// indenting the body will result in the body being posted as a code snippet
342-
issueBody, err := template.New("issue").Parse(`CAPI {{.BetaTag}} has been released and is ready for testing.
343+
issueBody, err := template.New("issue").Parse(`CAPI {{.PreReleaseTag}} has been released and is ready for testing.
343344
Looking forward to your feedback before {{.ReleaseTag}} release!
344345
345346
## For quick reference
346347
347348
<!-- body -->
348-
- [CAPI {{.BetaTag}} release notes]({{.ReleaseNotesLink}})
349+
- [CAPI {{.PreReleaseTag}} release notes]({{.ReleaseNotesLink}})
349350
- [Shortcut to CAPI git issues](https://github.com/kubernetes-sigs/cluster-api/issues)
350351
351352
## Following are the planned dates for the upcoming releases
@@ -365,7 +366,7 @@ More details of the upcoming schedule can be seen at [CAPI {{.ReleaseTag}} relea
365366

366367
// getIssueTitle returns the issue title template.
367368
func getIssueTitle() *template.Template {
368-
issueTitle, err := template.New("title").Parse(`CAPI {{.BetaTag}} has been released and is ready for testing`)
369+
issueTitle, err := template.New("title").Parse(`CAPI {{.PreReleaseTag}} has been released and is ready for testing`)
369370
if err != nil {
370371
panic(err)
371372
}

hack/tools/release/internal/update_providers/provider_issues_test.go

Lines changed: 40 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,38 +35,71 @@ func Test_GetReleaseDetails(t *testing.T) {
3535
err string
3636
}{
3737
{
38-
name: "Correct RELEASE_TAG and RELEASE_DATE are set",
38+
name: "Correct RELEASE_TAG and RELEASE_DATE are set for alpha",
39+
releaseTag: "v1.7.0-alpha.0",
40+
releaseDate: "2024-04-16",
41+
want: releaseDetails{
42+
ReleaseDate: "Tuesday, 16th April 2024",
43+
ReleaseTag: "v1.7.0",
44+
PreReleaseTag: "v1.7.0-alpha.0",
45+
ReleaseLink: "https://github.com/kubernetes-sigs/cluster-api/tree/main/docs/release/releases/release-1.7.md#timeline",
46+
ReleaseNotesLink: "https://github.com/kubernetes-sigs/cluster-api/releases/tag/v1.7.0-alpha.0",
47+
},
48+
expectErr: false,
49+
},
50+
{
51+
name: "Correct RELEASE_TAG and RELEASE_DATE are set for beta",
3952
releaseTag: "v1.7.0-beta.0",
4053
releaseDate: "2024-04-16",
4154
want: releaseDetails{
4255
ReleaseDate: "Tuesday, 16th April 2024",
4356
ReleaseTag: "v1.7.0",
44-
BetaTag: "v1.7.0-beta.0",
57+
PreReleaseTag: "v1.7.0-beta.0",
4558
ReleaseLink: "https://github.com/kubernetes-sigs/cluster-api/tree/main/docs/release/releases/release-1.7.md#timeline",
4659
ReleaseNotesLink: "https://github.com/kubernetes-sigs/cluster-api/releases/tag/v1.7.0-beta.0",
4760
},
4861
expectErr: false,
4962
},
5063
{
51-
name: "RELEASE_TAG is not in the format ^v\\d+\\.\\d+\\.\\d+-beta\\.\\d+$",
64+
name: "Correct RELEASE_TAG and RELEASE_DATE are set for rc",
65+
releaseTag: "v1.7.0-rc.0",
66+
releaseDate: "2024-04-16",
67+
want: releaseDetails{
68+
ReleaseDate: "Tuesday, 16th April 2024",
69+
ReleaseTag: "v1.7.0",
70+
PreReleaseTag: "v1.7.0-rc.0",
71+
ReleaseLink: "https://github.com/kubernetes-sigs/cluster-api/tree/main/docs/release/releases/release-1.7.md#timeline",
72+
ReleaseNotesLink: "https://github.com/kubernetes-sigs/cluster-api/releases/tag/v1.7.0-rc.0",
73+
},
74+
expectErr: false,
75+
},
76+
{
77+
name: "RELEASE_TAG is not in the correct format",
5278
releaseTag: "v1.7.0.1",
5379
releaseDate: "2024-04-16",
5480
expectErr: true,
55-
err: "release tag must be in format `^v\\d+\\.\\d+\\.\\d+-beta\\.\\d+$` e.g. v1.7.0-beta.0",
81+
err: "release tag must be in format `^v\\d+\\.\\d+\\.\\d+-(alpha|beta|rc)\\.\\d+$` e.g. v1.7.0-beta.0",
5682
},
5783
{
5884
name: "RELEASE_TAG does not have prefix 'v' in its semver",
5985
releaseTag: "1.7.0-beta.0",
6086
releaseDate: "2024-04-16",
6187
expectErr: true,
62-
err: "release tag must be in format `^v\\d+\\.\\d+\\.\\d+-beta\\.\\d+$` e.g. v1.7.0-beta.0",
88+
err: "release tag must be in format `^v\\d+\\.\\d+\\.\\d+-(alpha|beta|rc)\\.\\d+$` e.g. v1.7.0-beta.0",
6389
},
6490
{
6591
name: "RELEASE_TAG contains invalid Major.Minor.Patch SemVer",
6692
releaseTag: "v1.x.0-beta.0",
6793
releaseDate: "2024-04-16",
6894
expectErr: true,
69-
err: "release tag must be in format `^v\\d+\\.\\d+\\.\\d+-beta\\.\\d+$` e.g. v1.7.0-beta.0",
95+
err: "release tag must be in format `^v\\d+\\.\\d+\\.\\d+-(alpha|beta|rc)\\.\\d+$` e.g. v1.7.0-beta.0",
96+
},
97+
{
98+
name: "RELEASE_TAG contains unsupported pre-release type",
99+
releaseTag: "v1.7.0-gamma.0",
100+
releaseDate: "2024-04-16",
101+
expectErr: true,
102+
err: "release tag must be in format `^v\\d+\\.\\d+\\.\\d+-(alpha|beta|rc)\\.\\d+$` e.g. v1.7.0-beta.0",
70103
},
71104
{
72105
name: "invalid yyyy-dd-mm RELEASE_DATE entered",
@@ -104,7 +137,7 @@ func Test_GetReleaseDetails(t *testing.T) {
104137
} else {
105138
g.Expect(got.ReleaseDate).To(Equal(tt.want.ReleaseDate))
106139
g.Expect(got.ReleaseTag).To(Equal(tt.want.ReleaseTag))
107-
g.Expect(got.BetaTag).To(Equal(tt.want.BetaTag))
140+
g.Expect(got.PreReleaseTag).To(Equal(tt.want.PreReleaseTag))
108141
g.Expect(got.ReleaseLink).To(Equal(tt.want.ReleaseLink))
109142
}
110143
})

0 commit comments

Comments
 (0)