@@ -47,7 +47,7 @@ func (r *ReleaseGoplsTasks) NewPrereleaseDefinition() *wf.Definition {
47
47
prerelease := wf .Task1 (wd , "find the pre-release version" , r .nextPrereleaseVersion , semv )
48
48
approved := wf .Action2 (wd , "wait for release coordinator approval" , r .approveVersion , semv , prerelease )
49
49
50
- issue := wf .Task1 (wd , "create release git issue" , r .createReleaseIssue , semv , wf .After (approved ))
50
+ issue := wf .Task2 (wd , "create release git issue" , r .findOrCreateGitHubIssue , semv , wf . Const ( true ) , wf .After (approved ))
51
51
branchCreated := wf .Action1 (wd , "create new branch if minor release" , r .createBranchIfMinor , semv , wf .After (issue ))
52
52
53
53
configChangeID := wf .Task3 (wd , "update branch's codereview.cfg" , r .updateCodeReviewConfig , semv , reviewers , issue , wf .After (branchCreated ))
@@ -126,12 +126,13 @@ func (r *ReleaseGoplsTasks) approveVersion(ctx *wf.TaskContext, semv semversion,
126
126
return r .ApproveAction (ctx )
127
127
}
128
128
129
- // createReleaseIssue attempts to locate the release issue associated with the
130
- // given milestone. If no such issue exists, a new one is created .
129
+ // findOrCreateGitHubIssue locates or creates the release issue for the given
130
+ // release milestone.
131
131
//
132
- // Returns the ID of the release issue (either newly created or pre-existing).
133
- // Returns error if the release milestone does not exist or is closed.
134
- func (r * ReleaseGoplsTasks ) createReleaseIssue (ctx * wf.TaskContext , semv semversion ) (int64 , error ) {
132
+ // If the release issue exists, return the issue ID.
133
+ // If 'create' is true and no issue exists, a new one is created.
134
+ // If 'create' is false and no issue exists, an error is returned.
135
+ func (r * ReleaseGoplsTasks ) findOrCreateGitHubIssue (ctx * wf.TaskContext , semv semversion , create bool ) (int64 , error ) {
135
136
versionString := fmt .Sprintf ("v%v.%v.%v" , semv .Major , semv .Minor , semv .Patch )
136
137
milestoneName := fmt .Sprintf ("gopls/%s" , versionString )
137
138
// All milestones and issues resides under go repo.
@@ -157,6 +158,11 @@ func (r *ReleaseGoplsTasks) createReleaseIssue(ctx *wf.TaskContext, semv semvers
157
158
}
158
159
}
159
160
161
+ if ! create {
162
+ return 0 , fmt .Errorf ("could not find any release issue for %s" , versionString )
163
+ }
164
+
165
+ ctx .DisableRetries ()
160
166
content := fmt .Sprintf (`This issue tracks progress toward releasing gopls@%s
161
167
162
168
- [ ] create or update %s
@@ -635,7 +641,8 @@ func (r *ReleaseGoplsTasks) NewReleaseDefinition() *wf.Definition {
635
641
semv := wf .Task1 (wd , "validating input version" , r .isValidPrereleaseVersion , version )
636
642
tagged := wf .Action1 (wd , "tag the release" , r .tagRelease , semv )
637
643
638
- changeID := wf .Task2 (wd , "updating x/tools dependency in master branch in gopls sub dir" , r .updateDependencyIfMinor , reviewers , semv , wf .After (tagged ))
644
+ issue := wf .Task2 (wd , "find release git issue" , r .findOrCreateGitHubIssue , semv , wf .Const (false ))
645
+ changeID := wf .Task3 (wd , "updating x/tools dependency in master branch in gopls sub dir" , r .updateDependencyIfMinor , reviewers , semv , issue , wf .After (tagged ))
639
646
_ = wf .Task1 (wd , "await x/tools gopls dependency CL submission in gopls sub dir" , clAwaiter {r .Gerrit }.awaitSubmission , changeID )
640
647
641
648
return wd
@@ -739,7 +746,7 @@ func (r *ReleaseGoplsTasks) tagRelease(ctx *wf.TaskContext, semv semversion) err
739
746
// branch.
740
747
//
741
748
// Returns the change ID.
742
- func (r * ReleaseGoplsTasks ) updateDependencyIfMinor (ctx * wf.TaskContext , reviewers []string , semv semversion ) (string , error ) {
749
+ func (r * ReleaseGoplsTasks ) updateDependencyIfMinor (ctx * wf.TaskContext , reviewers []string , semv semversion , issue int64 ) (string , error ) {
743
750
if semv .Patch != 0 {
744
751
return "" , nil
745
752
}
@@ -774,7 +781,7 @@ go mod tidy -compat=1.19
774
781
changeInput := gerrit.ChangeInput {
775
782
Project : "tools" ,
776
783
Branch : "master" ,
777
- Subject : fmt .Sprintf ("%s\n \n This is an automated CL which updates the go.mod and go.sum." , clTitle ),
784
+ Subject : fmt .Sprintf ("%s\n \n This is an automated CL which updates the go.mod and go.sum.\n \n For golang/go#%v " , clTitle , issue ),
778
785
}
779
786
780
787
ctx .Printf ("creating auto-submit change under master branch in x/tools repo." )
0 commit comments