Skip to content

Commit

Permalink
internal/task: publish the release after asset upload
Browse files Browse the repository at this point in the history
The vscode-go release has been pretty stable, relui should be able
to publish vscode-go release without human review.

Change-Id: I618baf21f8efd1a2a22c500f2502ca8831ffd68d
Reviewed-on: https://go-review.googlesource.com/c/build/+/652575
Reviewed-by: Dmitri Shuralyov <[email protected]>
Reviewed-by: Dmitri Shuralyov <[email protected]>
LUCI-TryBot-Result: Go LUCI <[email protected]>
Auto-Submit: Hongxiang Jiang <[email protected]>
  • Loading branch information
h9jiang authored and gopherbot committed Feb 28, 2025
1 parent a1d368b commit 1a58352
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 4 deletions.
4 changes: 4 additions & 0 deletions internal/task/fakes.go
Original file line number Diff line number Diff line change
Expand Up @@ -1285,6 +1285,10 @@ func (*FakeGitHub) CreateRelease(ctx context.Context, owner, repo string, releas
return nil, nil
}

func (*FakeGitHub) PublishRelease(ctx context.Context, owner, repo string, release *github.RepositoryRelease) (*github.RepositoryRelease, error) {
return nil, nil
}

func (*FakeGitHub) EditIssue(_ context.Context, owner, repo string, number int, issue *github.IssueRequest) (*github.Issue, *github.Response, error) {
return nil, nil, nil
}
Expand Down
15 changes: 15 additions & 0 deletions internal/task/milestones.go
Original file line number Diff line number Diff line change
Expand Up @@ -322,6 +322,11 @@ type GitHubClientInterface interface {
// See github.Client.Repositories.CreateRelease.
CreateRelease(ctx context.Context, owner, repo string, release *github.RepositoryRelease) (*github.RepositoryRelease, error)

// PublishRelease publishes the release by marking draft as false if not
// already.
// See github.Client.Repositories.EditRelease.
PublishRelease(ctx context.Context, owner, repo string, release *github.RepositoryRelease) (*github.RepositoryRelease, error)

// UploadReleaseAsset uploads an fs.File to a GitHub release as a release
// asset.
// It uses NewUploadRequest as github.Client.Repositories.UploadReleaseAsset
Expand Down Expand Up @@ -389,6 +394,16 @@ func (c *GitHubClient) CreateRelease(ctx context.Context, owner, repo string, re
return release, err
}

func (c *GitHubClient) PublishRelease(ctx context.Context, owner, repo string, release *github.RepositoryRelease) (*github.RepositoryRelease, error) {
if release.Draft != nil && !*release.Draft {
return release, nil
}
release, _, err := c.V3.Repositories.EditRelease(ctx, owner, repo, release.GetID(), &github.RepositoryRelease{
Draft: github.Bool(false),
})
return release, err
}

func findMilestone(ctx context.Context, client *githubv4.Client, owner, repo, name string) (int, bool, error) {
var query struct {
Repository struct {
Expand Down
15 changes: 11 additions & 4 deletions internal/task/releasevscodego.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,7 @@ func (r *ReleaseVSCodeGoTasks) NewPrereleaseDefinition() *wf.Definition {
build := wf.Task3(wd, "generate package extension (.vsix) for release candidate", r.generatePackageExtension, release, prerelease, revision, wf.After(verified))

tagged := wf.Action3(wd, "tag the release candidate", r.tag, revision, release, prerelease, wf.After(branch))
released := wf.Action3(wd, "create release note", r.createGitHubReleaseDraft, release, prerelease, build, wf.After(tagged))
released := wf.Action3(wd, "create release note", r.createGitHubRelease, release, prerelease, build, wf.After(tagged))

wf.Action4(wd, "mail announcement", r.mailAnnouncement, release, prerelease, revision, issue, wf.After(released))
return wd
Expand Down Expand Up @@ -642,7 +642,7 @@ See release https://github.com/golang/vscode-go/releases/tag/%s for details.`
return buf.String(), nil
}

func (r *ReleaseVSCodeGoTasks) createGitHubReleaseDraft(ctx *wf.TaskContext, release releaseVersion, prerelease string, build CloudBuild) error {
func (r *ReleaseVSCodeGoTasks) createGitHubRelease(ctx *wf.TaskContext, release releaseVersion, prerelease string, build CloudBuild) error {
body, err := r.vscodeGoGitHubReleaseBody(ctx, release, prerelease)
if err != nil {
return err
Expand Down Expand Up @@ -679,6 +679,13 @@ func (r *ReleaseVSCodeGoTasks) createGitHubReleaseDraft(ctx *wf.TaskContext, rel
}

ctx.Printf("Uploaded asset %s to release %v as asset ID %v", asset.GetName(), draft.GetID(), asset.GetID())

released, err := r.GitHub.PublishRelease(ctx, "golang", "vscode-go", draft)
if err != nil {
return err
}

ctx.Printf("Published the release in %s", released.GetHTMLURL())
return nil
}

Expand Down Expand Up @@ -766,7 +773,7 @@ func (r *ReleaseVSCodeGoTasks) NewInsiderDefinition() *wf.Definition {

tagged := wf.Action3(wd, "tag the insider release", r.tag, revision, release, wf.Const(""), wf.After(build))

released := wf.Action3(wd, "create release note", r.createGitHubReleaseDraft, release, wf.Const(""), build, wf.After(tagged))
released := wf.Action3(wd, "create release note", r.createGitHubRelease, release, wf.Const(""), build, wf.After(tagged))

changelogChangeID := wf.Task2(wd, "update CHANGELOG.md in the master branch", r.addChangeLog, release, reviewers, wf.After(tagged))
changelogSubmitted := wf.Task1(wd, "await CHANGELOG.md CL submission", clAwaiter{r.Gerrit}.awaitSubmission, changelogChangeID)
Expand Down Expand Up @@ -1063,7 +1070,7 @@ func (r *ReleaseVSCodeGoTasks) NewReleaseDefinition() *wf.Definition {
build := wf.Task3(wd, "generate package extension (.vsix) from release candidate tag", r.generatePackageExtension, release, wf.Const(""), commit)

tagged := wf.Action3(wd, "tag the stable release", r.tag, commit, release, wf.Const(""), wf.After(build))
released := wf.Action3(wd, "create release note", r.createGitHubReleaseDraft, release, wf.Const(""), build, wf.After(tagged))
released := wf.Action3(wd, "create release note", r.createGitHubRelease, release, wf.Const(""), build, wf.After(tagged))

changeID := wf.Task2(wd, "update CHANGELOG.md in the master branch", r.addChangeLog, release, reviewers, wf.After(build))
submitted := wf.Task1(wd, "await CHANGELOG.md CL submission", clAwaiter{r.Gerrit}.awaitSubmission, changeID)
Expand Down

0 comments on commit 1a58352

Please sign in to comment.