cmd/releasebot: add check for beta1 release blockers
We now have a way of telling which release blocker issues apply to
a beta1 release, so start checking for such issues, and prevent
the release from proceeding if any of them are open.
Fixes golang/go#39345.
Change-Id: Id77098c9e72f45e043f97fa2b22bac811f29b0a4
Reviewed-on: https://go-review.googlesource.com/c/build/+/235778
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Alexander Rakoczy <alex@golang.org>
diff --git a/cmd/releasebot/main.go b/cmd/releasebot/main.go
index c509ee7..f53d97d 100644
--- a/cmd/releasebot/main.go
+++ b/cmd/releasebot/main.go
@@ -337,6 +337,9 @@
}
if w.BetaRelease || w.RCRelease {
// TODO: go tool api -allow_new=false
+ if strings.HasSuffix(w.Version, "beta1") {
+ w.checkBeta1ReleaseBlockers()
+ }
} else {
if !w.Security {
w.checkReleaseBlockers()
@@ -421,6 +424,21 @@
}
}
+func (w *Work) checkBeta1ReleaseBlockers() {
+ if err := goRepo.ForeachIssue(func(gi *maintner.GitHubIssue) error {
+ if gi.Milestone == nil || gi.Milestone.Title != w.Milestone.Title {
+ return nil
+ }
+ if !gi.Closed && gi.HasLabel("release-blocker") && !gi.HasLabel("okay-after-beta1") {
+ w.logError("open issue #%d is tagged release-blocker and not okay after beta1", gi.Number)
+ }
+ return nil
+ }); err != nil {
+ w.logError("error checking release-blockers: %v", err.Error())
+ return
+ }
+}
+
func (w *Work) nextStepsPrepare(changeID string) {
if w.Security {
w.log.Printf(`