@@ -555,16 +555,31 @@ func ApproveActionDep(p *pgxpool.Pool) func(*workflow.TaskContext, interface{})
555
555
const mergeCommTasksIntoReleaseWorkflows = false
556
556
557
557
// RegisterReleaseWorkflows registers workflows for issuing Go releases.
558
- func RegisterReleaseWorkflows (h * DefinitionHolder , build * BuildReleaseTasks , milestone * task.MilestoneTasks , version * task.VersionTasks , comm task.CommunicationTasks ) error {
559
- createSingle := func (name , major string , kind task.ReleaseKind ) error {
558
+ func RegisterReleaseWorkflows (ctx context.Context , h * DefinitionHolder , build * BuildReleaseTasks , milestone * task.MilestoneTasks , version * task.VersionTasks , comm task.CommunicationTasks ) error {
559
+ currentMajor , err := version .GetCurrentMajor (ctx )
560
+ if err != nil {
561
+ return err
562
+ }
563
+ releases := []struct {
564
+ kind task.ReleaseKind
565
+ major int
566
+ suffix string
567
+ }{
568
+ {task .KindMajor , currentMajor + 1 , "final" },
569
+ {task .KindRC , currentMajor + 1 , "next RC" },
570
+ {task .KindBeta , currentMajor + 1 , "next beta" },
571
+ {task .KindCurrentMinor , currentMajor , "next minor" },
572
+ {task .KindPrevMinor , currentMajor - 1 , "next minor" },
573
+ }
574
+ for _ , r := range releases {
560
575
wd := workflow .New ()
561
576
562
577
var names workflow.Value
563
578
if mergeCommTasksIntoReleaseWorkflows {
564
579
names = wd .Parameter (releaseCoordinatorNames )
565
580
}
566
581
567
- versionPublished , err := addSingleReleaseWorkflow (build , milestone , version , wd , major , kind )
582
+ versionPublished , err := addSingleReleaseWorkflow (build , milestone , version , wd , r . major , r . kind )
568
583
if err != nil {
569
584
return err
570
585
}
@@ -574,64 +589,56 @@ func RegisterReleaseWorkflows(h *DefinitionHolder, build *BuildReleaseTasks, mil
574
589
575
590
// Announce that a new Go release has been published.
576
591
sentMail := wd .Task ("mail-announcement" , func (ctx * workflow.TaskContext , v string , names []string ) (task.SentMail , error ) {
577
- switch kind {
592
+ switch r . kind {
578
593
case task .KindMajor :
579
594
return comm .AnnounceMajorRelease (ctx , task.ReleaseAnnouncement {Version : v , Names : names })
580
595
case task .KindRC :
581
596
return comm .AnnounceRCRelease (ctx , task.ReleaseAnnouncement {Version : v , Names : names })
582
597
case task .KindBeta :
583
598
return comm .AnnounceBetaRelease (ctx , task.ReleaseAnnouncement {Version : v , Names : names })
584
599
default :
585
- return task.SentMail {}, fmt .Errorf ("unknown release kind %v" , kind )
600
+ return task.SentMail {}, fmt .Errorf ("unknown release kind %v" , r . kind )
586
601
}
587
602
}, versionPublished , names , okayToAnnounceAndTweet )
588
603
announcementURL := wd .Task ("await-announcement" , comm .AwaitAnnounceMail , sentMail )
589
604
tweetURL := wd .Task ("post-tweet" , func (ctx * workflow.TaskContext , v , ann string ) (string , error ) {
590
- switch kind {
605
+ switch r . kind {
591
606
case task .KindMajor :
592
607
return comm .TweetMajorRelease (ctx , task.ReleaseTweet {Version : v })
593
608
case task .KindRC :
594
609
return comm .TweetRCRelease (ctx , task.ReleaseTweet {Version : v , Announcement : ann })
595
610
case task .KindBeta :
596
611
return comm .TweetBetaRelease (ctx , task.ReleaseTweet {Version : v , Announcement : ann })
597
612
default :
598
- return "" , fmt .Errorf ("unknown release kind %v" , kind )
613
+ return "" , fmt .Errorf ("unknown release kind %v" , r . kind )
599
614
}
600
615
}, versionPublished , announcementURL , okayToAnnounceAndTweet )
601
616
602
617
wd .Output ("Announcement URL" , announcementURL )
603
618
wd .Output ("Tweet URL" , tweetURL )
604
619
}
605
620
606
- h .RegisterDefinition (name , wd )
607
- return nil
608
- }
609
- if err := createSingle ("Go 1.19 final" , "go1.19" , task .KindMajor ); err != nil {
610
- return err
611
- }
612
- if err := createSingle ("Go 1.19 next RC" , "go1.19" , task .KindRC ); err != nil {
613
- return err
614
- }
615
- if err := createSingle ("Go 1.19 next beta" , "go1.19" , task .KindBeta ); err != nil {
616
- return err
621
+ h .RegisterDefinition (fmt .Sprintf ("Go 1.%d %s" , r .major , r .suffix ), wd )
617
622
}
618
- wd , err := createMinorReleaseWorkflow (build , milestone , version , comm , "go1.17" , "go1.18" )
623
+
624
+ wd , err := createMinorReleaseWorkflow (build , milestone , version , comm , currentMajor - 1 , currentMajor )
619
625
if err != nil {
620
626
return err
621
627
}
622
- h .RegisterDefinition ("Minor releases for Go 1.17 and 1.18" , wd )
628
+ h .RegisterDefinition (fmt .Sprintf ("Minor releases for Go 1.%d and 1.%d" , currentMajor - 1 , currentMajor ), wd )
629
+
623
630
wd = workflow .New ()
624
- if err := addBuildAndTestOnlyWorkflow (wd , version , build , "go1.19" , task .KindBeta ); err != nil {
631
+ if err := addBuildAndTestOnlyWorkflow (wd , version , build , currentMajor + 1 , task .KindBeta ); err != nil {
625
632
return err
626
633
}
627
- h .RegisterDefinition ("dry-run (test and build only): Go 1.19 next beta" , wd )
634
+ h .RegisterDefinition (fmt . Sprintf ( "dry-run (test and build only): Go 1.%d next beta" , currentMajor + 1 ) , wd )
628
635
629
636
return nil
630
637
}
631
638
632
- func addBuildAndTestOnlyWorkflow (wd * workflow.Definition , version * task.VersionTasks , build * BuildReleaseTasks , major string , kind task.ReleaseKind ) error {
639
+ func addBuildAndTestOnlyWorkflow (wd * workflow.Definition , version * task.VersionTasks , build * BuildReleaseTasks , major int , kind task.ReleaseKind ) error {
633
640
nextVersion := wd .Task ("Get next version" , version .GetNextVersion , wd .Constant (kind ))
634
- branch := fmt .Sprintf ("release-branch.%v " , major )
641
+ branch := fmt .Sprintf ("release-branch.go1.%d " , major )
635
642
if kind == task .KindBeta {
636
643
branch = "master"
637
644
}
@@ -645,7 +652,7 @@ func addBuildAndTestOnlyWorkflow(wd *workflow.Definition, version *task.VersionT
645
652
return nil
646
653
}
647
654
648
- func createMinorReleaseWorkflow (build * BuildReleaseTasks , milestone * task.MilestoneTasks , version * task.VersionTasks , comm task.CommunicationTasks , prev , current string ) (* workflow.Definition , error ) {
655
+ func createMinorReleaseWorkflow (build * BuildReleaseTasks , milestone * task.MilestoneTasks , version * task.VersionTasks , comm task.CommunicationTasks , prevMajor , currentMajor int ) (* workflow.Definition , error ) {
649
656
wd := workflow .New ()
650
657
651
658
var securitySummary , securityFixes , names workflow.Value
@@ -655,11 +662,11 @@ func createMinorReleaseWorkflow(build *BuildReleaseTasks, milestone *task.Milest
655
662
names = wd .Parameter (releaseCoordinatorNames )
656
663
}
657
664
658
- v1Published , err := addSingleReleaseWorkflow (build , milestone , version , wd .Sub (current ), current , task .KindCurrentMinor )
665
+ v1Published , err := addSingleReleaseWorkflow (build , milestone , version , wd .Sub (fmt . Sprintf ( "Go 1.%d" , currentMajor )), currentMajor , task .KindCurrentMinor )
659
666
if err != nil {
660
667
return nil , err
661
668
}
662
- v2Published , err := addSingleReleaseWorkflow (build , milestone , version , wd .Sub (prev ), prev , task .KindPrevMinor )
669
+ v2Published , err := addSingleReleaseWorkflow (build , milestone , version , wd .Sub (fmt . Sprintf ( "Go 1.%d" , prevMajor )), prevMajor , task .KindPrevMinor )
663
670
if err != nil {
664
671
return nil , err
665
672
}
@@ -685,10 +692,10 @@ func createMinorReleaseWorkflow(build *BuildReleaseTasks, milestone *task.Milest
685
692
686
693
func addSingleReleaseWorkflow (
687
694
build * BuildReleaseTasks , milestone * task.MilestoneTasks , version * task.VersionTasks ,
688
- wd * workflow.Definition , major string , kind task.ReleaseKind ,
695
+ wd * workflow.Definition , major int , kind task.ReleaseKind ,
689
696
) (versionPublished workflow.Value , _ error ) {
690
697
kindVal := wd .Constant (kind )
691
- branch := fmt .Sprintf ("release-branch.%v " , major )
698
+ branch := fmt .Sprintf ("release-branch.go1.%d " , major )
692
699
if kind == task .KindBeta {
693
700
branch = "master"
694
701
}
@@ -710,7 +717,7 @@ func addSingleReleaseWorkflow(
710
717
source := wd .Task ("Build source archive" , build .buildSource , startingHead , securityRef , nextVersion , checked )
711
718
712
719
// Build, test, and sign release.
713
- signedAndTestedArtifacts , err := build .addBuildTasks (wd , "go1.19" , nextVersion , source , false )
720
+ signedAndTestedArtifacts , err := build .addBuildTasks (wd , major , nextVersion , source , false )
714
721
if err != nil {
715
722
return nil , err
716
723
}
@@ -740,12 +747,8 @@ func addSingleReleaseWorkflow(
740
747
741
748
// addBuildTasks registers tasks to build, test, and sign the release onto wd.
742
749
// It returns the output from the last task, a slice of signed and tested artifacts.
743
- func (tasks * BuildReleaseTasks ) addBuildTasks (wd * workflow.Definition , majorVersion string , version , source workflow.Value , skipSigning bool ) (workflow.Value , error ) {
744
- targets , ok := releasetargets .TargetsForVersion (majorVersion )
745
- if ! ok {
746
- return nil , fmt .Errorf ("malformed/unknown version %q" , majorVersion )
747
- }
748
-
750
+ func (tasks * BuildReleaseTasks ) addBuildTasks (wd * workflow.Definition , major int , version , source workflow.Value , skipSigning bool ) (workflow.Value , error ) {
751
+ targets := releasetargets .TargetsForGo1Point (major )
749
752
skipTests := wd .Parameter (workflow.Parameter {Name : "Targets to skip testing (or 'all') (optional)" , ParameterType : workflow .SliceShort })
750
753
// Artifact file paths.
751
754
artifacts := []workflow.Value {source }
0 commit comments