diff --git a/cmd/relui/deployment-prod.yaml b/cmd/relui/deployment-prod.yaml index 2ddfc8e8bd..d6fd075e8a 100644 --- a/cmd/relui/deployment-prod.yaml +++ b/cmd/relui/deployment-prod.yaml @@ -28,6 +28,7 @@ spec: # Define the site header and external service configuration. - "--site-title=Go Releases" - "--site-header-css=Site-header--production" + - "--gerrit-api-secret=secret:symbolic-datum-552/gobot-password" - "--twitter-api-secret=secret:symbolic-datum-552/twitter-api-secret" ports: - containerPort: 444 diff --git a/cmd/relui/main.go b/cmd/relui/main.go index cc44ff7df5..3c84dab286 100644 --- a/cmd/relui/main.go +++ b/cmd/relui/main.go @@ -12,6 +12,7 @@ import ( "net/url" "github.com/jackc/pgx/v4/pgxpool" + "golang.org/x/build/gerrit" "golang.org/x/build/internal/https" "golang.org/x/build/internal/relui" "golang.org/x/build/internal/secret" @@ -32,6 +33,7 @@ func main() { if err := secret.InitFlagSupport(context.Background()); err != nil { log.Fatalln(err) } + gerritAPIFlag := secret.Flag("gerrit-api-secret", "Gerrit API secret to use for workflows that interact with Gerrit.") var twitterAPI secret.TwitterCredentials secret.JSONVarFlag(&twitterAPI, "twitter-api-secret", "Twitter API secret to use for workflows involving tweeting.") https.RegisterFlags(flag.CommandLine) @@ -61,12 +63,17 @@ func main() { CSSClass: *siteHeaderCSS, } extCfg = task.ExternalConfig{ + GerritAPI: struct { + URL string + Auth gerrit.Auth + }{"https://go-review.googlesource.com", gerrit.BasicAuth("git-gobot.golang.org", *gerritAPIFlag)}, // TODO(go.dev/issue/51150): When twitter client creation is factored out from task package, update code here. TwitterAPI: twitterAPI, } ) dh := relui.NewDefinitionHolder() + relui.RegisterMailDLCLDefinition(dh, extCfg) relui.RegisterTweetDefinitions(dh, extCfg) db, err := pgxpool.Connect(ctx, *pgConnect) if err != nil { diff --git a/internal/relui/workflows.go b/internal/relui/workflows.go index a5e04d9d5c..9e78439359 100644 --- a/internal/relui/workflows.go +++ b/internal/relui/workflows.go @@ -55,6 +55,30 @@ func (h *DefinitionHolder) Definitions() map[string]*workflow.Definition { return defs } +// RegisterMailDLCLDefinition registers a workflow definition for mailing a golang.org/dl CL +// onto h, using e for the external service configuration. +func RegisterMailDLCLDefinition(h *DefinitionHolder, e task.ExternalConfig) { + versions := workflow.Parameter{ + Name: "Versions", + ParameterType: workflow.SliceShort, + Doc: `Versions are the Go versions that have been released. + +The versions must use the same format as Go tags, +and the list must contain one or two versions. + +For example: +• "go1.18.2" and "go1.17.10" for a minor Go release +• "go1.19" for a major Go release +• "go1.19beta1" or "go1.19rc1" for a pre-release`, + } + + wd := workflow.New() + wd.Output("ChangeURL", wd.Task("mail-dl-cl", func(ctx *workflow.TaskContext, versions []string) (string, error) { + return task.MailDLCL(ctx, versions, e) + }, wd.Parameter(versions))) + h.RegisterDefinition("mail-dl-cl", wd) +} + // RegisterTweetDefinitions registers workflow definitions involving tweeting // onto h, using e for the external service configuration. func RegisterTweetDefinitions(h *DefinitionHolder, e task.ExternalConfig) {