Skip to content

Commit 610f7bd

Browse files
authored
Add label for release PR. (Azure#20524)
* add version labels * rename * enum * fux * update test * fix * fix
1 parent d33e0ef commit 610f7bd

File tree

5 files changed

+106
-52
lines changed

5 files changed

+106
-52
lines changed

eng/tools/generator/cmd/v2/common/cmdProcessor.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ func ExecuteGitPush(path, remoteName, branchName string) (string, error) {
6565
return "", nil
6666
}
6767

68-
func ExecuteCreatePullRequest(path, repoOwner, repoName, prOwner, prBranch, prTitle, prBody, authToken string) (string, error) {
69-
cmd := exec.Command("pwsh", "./eng/common/scripts/Submit-PullRequest.ps1", "-RepoOwner", repoOwner, "-RepoName", repoName, "-BaseBranch", "main", "-PROwner", prOwner, "-PRBranch", prBranch, "-AuthToken", authToken, "-PRTitle", prTitle, "-PRBody", prBody)
68+
func ExecuteCreatePullRequest(path, repoOwner, repoName, prOwner, prBranch, prTitle, prBody, authToken, prLabels string) (string, error) {
69+
cmd := exec.Command("pwsh", "./eng/common/scripts/Submit-PullRequest.ps1", "-RepoOwner", repoOwner, "-RepoName", repoName, "-BaseBranch", "main", "-PROwner", prOwner, "-PRBranch", prBranch, "-AuthToken", authToken, "-PRTitle", prTitle, "-PRBody", prBody, "-PRLabels", prLabels)
7070
cmd.Dir = path
7171
output, err := cmd.CombinedOutput()
7272
log.Printf("Result of `pwsh Submit-PullRequest` execution: \n%s", string(output))

eng/tools/generator/cmd/v2/common/fileProcessor.go

Lines changed: 39 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,18 @@ const (
2828
swagger_md_module_name_prefix = "module-name: "
2929
)
3030

31+
type PullRequestLabel string
32+
33+
const (
34+
StableLabel PullRequestLabel = "stable"
35+
BetaLabel PullRequestLabel = "beta"
36+
FirstStableLabel PullRequestLabel = "first stable"
37+
FirstStableBreakingChangeLabel PullRequestLabel = "first stable,breaking-change"
38+
FirstBetaLabel PullRequestLabel = "first beta"
39+
StableBreakingChangeLabel PullRequestLabel = "stable,breaking-change"
40+
BetaBreakingChangeLabel PullRequestLabel = "beta,breaking-change"
41+
)
42+
3143
var (
3244
v2BeginRegex = regexp.MustCompile("^```\\s*yaml\\s*\\$\\(go\\)\\s*&&\\s*\\$\\((track2|v2)\\)")
3345
v2EndRegex = regexp.MustCompile("^\\s*```\\s*$")
@@ -247,68 +259,87 @@ func ReplaceVersion(packageRootPath string, newVersion string) error {
247259
}
248260

249261
// calculate new version by changelog using semver package
250-
func CalculateNewVersion(changelog *model.Changelog, previousVersion string, isCurrentPreview bool) (*semver.Version, error) {
262+
func CalculateNewVersion(changelog *model.Changelog, previousVersion string, isCurrentPreview bool) (*semver.Version, PullRequestLabel, error) {
251263
version, err := semver.NewVersion(previousVersion)
252264
if err != nil {
253-
return nil, err
265+
return nil, "", err
254266
}
255267
log.Printf("Lastest version is: %s", version.String())
256268

257269
var newVersion semver.Version
270+
var prl PullRequestLabel
258271
if version.Major() == 0 {
259272
// preview version calculation
260273
if !isCurrentPreview {
261274
tempVersion, err := semver.NewVersion("1.0.0")
262275
if err != nil {
263-
return nil, err
276+
return nil, "", err
264277
}
265278
newVersion = *tempVersion
279+
if changelog.HasBreakingChanges() {
280+
prl = FirstStableBreakingChangeLabel
281+
} else {
282+
prl = FirstStableLabel
283+
}
266284
} else if changelog.HasBreakingChanges() || changelog.Modified.HasAdditiveChanges() {
267285
newVersion = version.IncMinor()
286+
prl = BetaLabel
268287
} else {
269288
newVersion = version.IncPatch()
289+
prl = BetaLabel
270290
}
271291
} else {
272292
if isCurrentPreview {
273293
if strings.Contains(previousVersion, "beta") {
274294
betaNumber, err := strconv.Atoi(strings.Split(version.Prerelease(), "beta.")[1])
275295
if err != nil {
276-
return nil, err
296+
return nil, "", err
277297
}
278298
newVersion, err = version.SetPrerelease("beta." + strconv.Itoa(betaNumber+1))
279299
if err != nil {
280-
return nil, err
300+
return nil, "", err
301+
}
302+
if changelog.HasBreakingChanges() {
303+
prl = BetaBreakingChangeLabel
304+
} else {
305+
prl = BetaLabel
281306
}
282307
} else {
283308
if changelog.HasBreakingChanges() {
284309
newVersion = version.IncMajor()
310+
prl = BetaBreakingChangeLabel
285311
} else if changelog.Modified.HasAdditiveChanges() {
286312
newVersion = version.IncMinor()
313+
prl = BetaLabel
287314
} else {
288315
newVersion = version.IncPatch()
316+
prl = BetaLabel
289317
}
290318
newVersion, err = newVersion.SetPrerelease("beta.1")
291319
if err != nil {
292-
return nil, err
320+
return nil, "", err
293321
}
294322
}
295323
} else {
296324
if strings.Contains(previousVersion, "beta") {
297-
return nil, fmt.Errorf("must have stable previous version")
325+
return nil, "", fmt.Errorf("must have stable previous version")
298326
}
299327
// release version calculation
300328
if changelog.HasBreakingChanges() {
301329
newVersion = version.IncMajor()
330+
prl = StableBreakingChangeLabel
302331
} else if changelog.Modified.HasAdditiveChanges() {
303332
newVersion = version.IncMinor()
333+
prl = StableLabel
304334
} else {
305335
newVersion = version.IncPatch()
336+
prl = StableLabel
306337
}
307338
}
308339
}
309340

310341
log.Printf("New version is: %s", newVersion.String())
311-
return &newVersion, nil
342+
return &newVersion, prl, nil
312343
}
313344

314345
// add new changelog md to changelog file

eng/tools/generator/cmd/v2/common/fileProcessor_test.go

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,91 +20,106 @@ func TestCalculateNewVersion(t *testing.T) {
2020

2121
// previous 0.x.x
2222
// fix with stable
23-
newVersion, err := CalculateNewVersion(fixChange, "0.5.0", false)
23+
newVersion, prl, err := CalculateNewVersion(fixChange, "0.5.0", false)
2424
assert.NoError(t, err)
2525
assert.Equal(t, newVersion.String(), "1.0.0")
26+
assert.Equal(t, FirstStableLabel, prl)
2627

2728
// fix with beat
28-
newVersion, err = CalculateNewVersion(fixChange, "0.5.0", true)
29+
newVersion, prl, err = CalculateNewVersion(fixChange, "0.5.0", true)
2930
assert.NoError(t, err)
3031
assert.Equal(t, newVersion.String(), "0.5.1")
32+
assert.Equal(t, BetaLabel, prl)
3133

3234
// breaking with stable
33-
newVersion, err = CalculateNewVersion(breakingChange, "0.5.0", false)
35+
newVersion, prl, err = CalculateNewVersion(breakingChange, "0.5.0", false)
3436
assert.NoError(t, err)
3537
assert.Equal(t, newVersion.String(), "1.0.0")
38+
assert.Equal(t, FirstStableBreakingChangeLabel, prl)
3639

3740
// breaking with beta
38-
newVersion, err = CalculateNewVersion(breakingChange, "0.5.0", true)
41+
newVersion, prl, err = CalculateNewVersion(breakingChange, "0.5.0", true)
3942
assert.NoError(t, err)
4043
assert.Equal(t, newVersion.String(), "0.6.0")
44+
assert.Equal(t, BetaLabel, prl)
4145

4246
// additive with stable
43-
newVersion, err = CalculateNewVersion(additiveChange, "0.5.0", false)
47+
newVersion, prl, err = CalculateNewVersion(additiveChange, "0.5.0", false)
4448
assert.NoError(t, err)
4549
assert.Equal(t, newVersion.String(), "1.0.0")
50+
assert.Equal(t, FirstStableLabel, prl)
4651

4752
// additive with beta
48-
newVersion, err = CalculateNewVersion(additiveChange, "0.5.0", true)
53+
newVersion, prl, err = CalculateNewVersion(additiveChange, "0.5.0", true)
4954
assert.NoError(t, err)
5055
assert.Equal(t, newVersion.String(), "0.6.0")
56+
assert.Equal(t, BetaLabel, prl)
5157

5258
// previous 1.2.0
5359
// fix with stable
54-
newVersion, err = CalculateNewVersion(fixChange, "1.2.0", false)
60+
newVersion, prl, err = CalculateNewVersion(fixChange, "1.2.0", false)
5561
assert.NoError(t, err)
5662
assert.Equal(t, newVersion.String(), "1.2.1")
63+
assert.Equal(t, StableLabel, prl)
5764

5865
// fix with beat
59-
newVersion, err = CalculateNewVersion(fixChange, "1.2.0", true)
66+
newVersion, prl, err = CalculateNewVersion(fixChange, "1.2.0", true)
6067
assert.NoError(t, err)
6168
assert.Equal(t, newVersion.String(), "1.2.1-beta.1")
69+
assert.Equal(t, BetaLabel, prl)
6270

6371
// breaking with stable
64-
newVersion, err = CalculateNewVersion(breakingChange, "1.2.0", false)
72+
newVersion, prl, err = CalculateNewVersion(breakingChange, "1.2.0", false)
6573
assert.NoError(t, err)
6674
assert.Equal(t, newVersion.String(), "2.0.0")
75+
assert.Equal(t, StableBreakingChangeLabel, prl)
6776

6877
// breaking with beta
69-
newVersion, err = CalculateNewVersion(breakingChange, "1.2.0", true)
78+
newVersion, prl, err = CalculateNewVersion(breakingChange, "1.2.0", true)
7079
assert.NoError(t, err)
7180
assert.Equal(t, newVersion.String(), "2.0.0-beta.1")
81+
assert.Equal(t, BetaBreakingChangeLabel, prl)
7282

7383
// additive with stable
74-
newVersion, err = CalculateNewVersion(additiveChange, "1.2.0", false)
84+
newVersion, prl, err = CalculateNewVersion(additiveChange, "1.2.0", false)
7585
assert.NoError(t, err)
7686
assert.Equal(t, newVersion.String(), "1.3.0")
87+
assert.Equal(t, StableLabel, prl)
7788

7889
// additive with beta
79-
newVersion, err = CalculateNewVersion(additiveChange, "1.2.0", true)
90+
newVersion, prl, err = CalculateNewVersion(additiveChange, "1.2.0", true)
8091
assert.NoError(t, err)
8192
assert.Equal(t, newVersion.String(), "1.3.0-beta.1")
93+
assert.Equal(t, BetaLabel, prl)
8294

8395
// previous 1.2.0-beta.1
8496
// fix with stable
85-
newVersion, err = CalculateNewVersion(fixChange, "1.2.0-beta.1", false)
97+
newVersion, _, err = CalculateNewVersion(fixChange, "1.2.0-beta.1", false)
8698
assert.NotEmpty(t, err)
8799

88100
// fix with beat
89-
newVersion, err = CalculateNewVersion(fixChange, "1.2.0-beta.1", true)
101+
newVersion, prl, err = CalculateNewVersion(fixChange, "1.2.0-beta.1", true)
90102
assert.NoError(t, err)
91103
assert.Equal(t, newVersion.String(), "1.2.0-beta.2")
104+
assert.Equal(t, BetaLabel, prl)
92105

93106
// breaking with stable
94-
newVersion, err = CalculateNewVersion(breakingChange, "1.2.0-beta.1", false)
107+
newVersion, _, err = CalculateNewVersion(breakingChange, "1.2.0-beta.1", false)
95108
assert.NotEmpty(t, err)
96109

97110
// breaking with beta
98-
newVersion, err = CalculateNewVersion(breakingChange, "1.2.0-beta.1", true)
111+
newVersion, prl, err = CalculateNewVersion(breakingChange, "1.2.0-beta.1", true)
99112
assert.NoError(t, err)
100113
assert.Equal(t, newVersion.String(), "1.2.0-beta.2")
114+
assert.Equal(t, BetaBreakingChangeLabel, prl)
101115

102116
// additive with stable
103-
newVersion, err = CalculateNewVersion(additiveChange, "1.2.0-beta.1", false)
117+
newVersion, _, err = CalculateNewVersion(additiveChange, "1.2.0-beta.1", false)
104118
assert.NotEmpty(t, err)
105119

106120
// additive with beta
107-
newVersion, err = CalculateNewVersion(additiveChange, "1.2.0-beta.1", true)
121+
newVersion, prl, err = CalculateNewVersion(additiveChange, "1.2.0-beta.1", true)
108122
assert.NoError(t, err)
109123
assert.Equal(t, newVersion.String(), "1.2.0-beta.2")
124+
assert.Equal(t, BetaLabel, prl)
110125
}

eng/tools/generator/cmd/v2/common/generation.go

Lines changed: 25 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,13 @@ type GenerateContext struct {
3131
}
3232

3333
type GenerateResult struct {
34-
Version string
35-
RPName string
36-
PackageName string
37-
PackageAbsPath string
38-
Changelog model.Changelog
39-
ChangelogMD string
34+
Version string
35+
RPName string
36+
PackageName string
37+
PackageAbsPath string
38+
Changelog model.Changelog
39+
ChangelogMD string
40+
PullRequestLabels string
4041
}
4142

4243
type GenerateParam struct {
@@ -225,6 +226,7 @@ func (ctx *GenerateContext) GenerateForSingleRPNamespace(generateParam *Generate
225226
log.Printf("filter changelog...")
226227
FilterChangelog(changelog, MarshalUnmarshalFilter, EnumFilter, FuncFilter, LROFilter, PageableFilter, InterfaceToAnyFilter)
227228

229+
var prl PullRequestLabel
228230
if onBoard {
229231
log.Printf("Replace {{NewClientName}} placeholder in the README.md ")
230232
if err = ReplaceNewClientNamePlaceholder(packagePath, newExports); err != nil {
@@ -242,6 +244,7 @@ func (ctx *GenerateContext) GenerateForSingleRPNamespace(generateParam *Generate
242244
}
243245
}
244246

247+
prl = FirstBetaLabel
245248
if !isCurrentPreview {
246249
version, err = semver.NewVersion("1.0.0")
247250
if err != nil {
@@ -257,20 +260,22 @@ func (ctx *GenerateContext) GenerateForSingleRPNamespace(generateParam *Generate
257260
if err = ReplaceVersion(packagePath, version.String()); err != nil {
258261
return nil, err
259262
}
263+
prl = FirstStableLabel
260264
}
261265

262266
return &GenerateResult{
263-
Version: version.String(),
264-
RPName: generateParam.RPName,
265-
PackageName: generateParam.NamespaceName,
266-
PackageAbsPath: packagePath,
267-
Changelog: *changelog,
268-
ChangelogMD: changelog.ToCompactMarkdown() + "\n" + changelog.GetChangeSummary(),
267+
Version: version.String(),
268+
RPName: generateParam.RPName,
269+
PackageName: generateParam.NamespaceName,
270+
PackageAbsPath: packagePath,
271+
Changelog: *changelog,
272+
ChangelogMD: changelog.ToCompactMarkdown() + "\n" + changelog.GetChangeSummary(),
273+
PullRequestLabels: string(prl),
269274
}, nil
270275
} else {
271276
log.Printf("Calculate new version...")
272277
if generateParam.SpecficVersion == "" {
273-
version, err = CalculateNewVersion(changelog, previousVersion, isCurrentPreview)
278+
version, prl, err = CalculateNewVersion(changelog, previousVersion, isCurrentPreview)
274279
if err != nil {
275280
return nil, err
276281
}
@@ -306,12 +311,13 @@ func (ctx *GenerateContext) GenerateForSingleRPNamespace(generateParam *Generate
306311
}
307312

308313
return &GenerateResult{
309-
Version: version.String(),
310-
RPName: generateParam.RPName,
311-
PackageName: generateParam.NamespaceName,
312-
PackageAbsPath: packagePath,
313-
Changelog: *changelog,
314-
ChangelogMD: changelogMd + "\n" + changelog.GetChangeSummary(),
314+
Version: version.String(),
315+
RPName: generateParam.RPName,
316+
PackageName: generateParam.NamespaceName,
317+
PackageAbsPath: packagePath,
318+
Changelog: *changelog,
319+
ChangelogMD: changelogMd + "\n" + changelog.GetChangeSummary(),
320+
PullRequestLabels: string(prl),
315321
}, nil
316322
}
317323
}

eng/tools/generator/cmd/v2/release/releaseCmd.go

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -110,9 +110,10 @@ func ParseFlags(flagSet *pflag.FlagSet) Flags {
110110
}
111111

112112
type commandContext struct {
113-
rpName string
114-
namespaceName string
115-
flags Flags
113+
rpName string
114+
namespaceName string
115+
flags Flags
116+
pullRequestLabels string
116117
}
117118

118119
func (c *commandContext) execute(sdkRepoParam, specRepoParam string) error {
@@ -161,7 +162,8 @@ func (c *commandContext) generate(sdkRepo repo.SDKRepository, specCommitHash str
161162
return fmt.Errorf("failed to finish release generation process: %+v", err)
162163
}
163164
// print generation result
164-
log.Printf("Generation result: %s", result)
165+
log.Printf("Generation result: %v", result)
166+
c.pullRequestLabels = result.PullRequestLabels
165167

166168
if !c.flags.SkipCreateBranch {
167169
log.Printf("Create new branch for release")
@@ -253,7 +255,7 @@ func (c *commandContext) generateFromRequest(sdkRepo repo.SDKRepository, specRep
253255
}
254256

255257
log.Printf("%s: create pull request...\n", branchName)
256-
pullRequestUrl, err := common.ExecuteCreatePullRequest(sdkRepo.Root(), link.SpecOwner, link.SDKRepo, githubUserName, branchName, repo.ReleaseTitle(branchName), issue, c.flags.Token)
258+
pullRequestUrl, err := common.ExecuteCreatePullRequest(sdkRepo.Root(), link.SpecOwner, link.SDKRepo, githubUserName, branchName, repo.ReleaseTitle(branchName), issue, c.flags.Token, c.pullRequestLabels)
257259
if err != nil {
258260
return err
259261
}

0 commit comments

Comments
 (0)