-
Notifications
You must be signed in to change notification settings - Fork 739
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
release: create a relui workflow for the vscode-go release process #3500
Comments
Change https://go.dev/cl/607176 mentions this issue: |
Some offline sync with Hana and Dmitri, we want to adopt the approve functionality same as gopls release automation. And also use the cool drop down menu. The input of the release will be simplifies as below, the coordinator only need to provide what kind of version he/she want to release. Right now, it can only be next minor or next patch. The flow will figure out the version based on the user input, the local relui below, I choose next minor. The relui return Some more explanation, right now, the latest release is vscode-go is The local relui below, I choose next patch., the relui return And the same input will be applied to gopls release as well, the coordinator will no longer need to put the version string. The screenshot in this comment should give you an earlier taste what will be coming in gopls. @findleyr |
1. Add an input selection parameter allowing the coordinator to choose between targeting the next minor or patch version. 2. Add a step to automatically determine the appropriate version number based on the coordinator's selection and prompt for release approval. A local relui screenshot is at golang/vscode-go#3500 (comment) For golang/vscode-go#3500 Change-Id: I38fcd861ff864dc3683fc571e9a39bccf4e9cb63 Reviewed-on: https://go-review.googlesource.com/c/build/+/607176 Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> Auto-Submit: Hongxiang Jiang <hxjiang@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Change https://go.dev/cl/608416 mentions this issue: |
Next CL, the flow will create the release milestone and release issue. (only if there isn't one already created and open) The first run of the flow create this release issue below and add it to the release milestone. The second time, it realize there is an existing & open issue, so it will not create this issue again. |
Change https://go.dev/cl/608417 mentions this issue: |
Next CL, the vscode go release flow will try to create a release branch if not already exist. The current logic is, only create a branch if the input version is minor version and it's the first candidate of that minor release. in form of The local relui failed for next minor release to create the branch because of permission issue. (the input to this step is The local relui failed for next patch release. The flow try to release @hyangah a quick work around is, we cut a branch Regardless of the final solution, we can move forward with the CL review while working on this back-ward compatibility issue. |
Change https://go.dev/cl/608817 mentions this issue: |
@h9jiang Now there is |
If there are open release milestone and release issue in golang/vscode-go, the flow will reuse them. A local relui screenshot is at golang/vscode-go#3500 (comment) For golang/vscode-go#3500 Change-Id: I7ba69a670bd66618bdb294761901af0fb7fd0dd1 Reviewed-on: https://go-review.googlesource.com/c/build/+/608417 Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Change https://go.dev/cl/609177 mentions this issue: |
Change https://go.dev/cl/609315 mentions this issue: |
1. Add new method ListBranches in gerrit client interface returns all the branches in a project. a. implement the real gerrit client follow rest api doc. b. implement the fake gerrit client using git for-each-ref. 2. Add util function returns the current active release branch from vscode-go. 3. Add step at the end of gopls pre-release process to update gopls version info in vscode-go project. A local relui screenshot is at golang/vscode-go#3500 (comment) For golang/vscode-go#3500 Change-Id: Ib88b950df729a2f28133809f5a54311c420b447b Reviewed-on: https://go-review.googlesource.com/c/build/+/608416 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Robert Findley <rfindley@google.com> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> Auto-Submit: Hongxiang Jiang <hxjiang@golang.org>
A local relui screenshot is at golang/vscode-go#3500 (comment) For golang/vscode-go#3500 Change-Id: Ie6b5650eef8f84d1fe7264e35894f80043cad109 Reviewed-on: https://go-review.googlesource.com/c/build/+/608817 Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Auto-Submit: Hongxiang Jiang <hxjiang@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Change https://go.dev/cl/609376 mentions this issue: |
For gopls pre-release, the flow only need to update gopls version in vscode-go master branch. For gopls release, the flow will need to update gopls version in vscode-go master and current active release branch. (Next cl) To make the function resusable in future, the branch varaiable will be taken out and determined by the caller. For golang/vscode-go#3500 Change-Id: I4778f3ce5ae133b1e495b2660fe41fccfa59c2e6 Reviewed-on: https://go-review.googlesource.com/c/build/+/609376 Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Next CL, we will add a step in gopls release flow to update gopls version in vscode-go project. After a gopls release is done, both master branch and release branch will be updated. SCREENSHOT: the local relui want to update the gopls version in both master and release branch. Because the gopls 0.16.2 is not yet released, the master branch have nothing to update (already up-to-date), the release branch have a CL ongoing. When running this in production, what we will be expecting is, both master and release branch will be updated at the same time because production flow will release |
Change https://go.dev/cl/610539 mentions this issue: |
- For pre-release flow, update only the master branch. - For release flow, update both master and active release branch. A local relui screenshot is at golang/vscode-go#3500 (comment) For golang/vscode-go#3500 Change-Id: I0f171e1adfaabe58b69f8765331c038d3a58e724 Reviewed-on: https://go-review.googlesource.com/c/build/+/610539 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Hongxiang Jiang <hxjiang@golang.org> Reviewed-by: Robert Findley <rfindley@google.com>
Change https://go.dev/cl/612115 mentions this issue: |
Change https://go.dev/cl/613079 mentions this issue: |
Add new method to interface CloudBuildClient: - RunCustomSteps accept a function as input parameter. - The input function should return a slice of cloud steps which will be eventually executed by the method. - The input function should accept an input parameter "resultURL" and can assume this will be valid so the caller can write output to it. - The method will generate a random result url and pass that to the input function to generate the cloud steps. A local relui screenshot is at golang/vscode-go#3500 (comment) For golang/vscode-go#3500 Change-Id: Icdc6411ab8274b71783c15a0ccf7ecae0d61b3a5 Reviewed-on: https://go-review.googlesource.com/c/build/+/610375 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
Use RunCustomSteps method to trigger a few steps to build vscode-go release artifacts: - download go binary. - clone vscode-go repo and checkout specific commit. - execute npm ci and go run to build artifacts. - copy generated package extension and logs to gcs. The steps after this will use the returned CloudBuild struct (containing cloud build ID, project, gcs url) to fetch the artifacts and upload as github release assets. A local relui screenshot is at golang/vscode-go#3500 (comment) For golang/vscode-go#3500 Change-Id: Ia2987e1367cd6d76e019b4e576b6cc3e878ac751 Reviewed-on: https://go-review.googlesource.com/c/build/+/611945 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
When building vsix, we want to embed the README.md file located in the project root directory. However, vsce package is strict about files that can be included into the vsix and does not pack files outside the node.js module root. To work around, package command copies the README.md file to extension/ before running vsce. This left-over README.md file is annoying and complicates the release process. Let's do clean up. For #3500 Change-Id: I4b817609f0bb0e6234c732909a044e69d23e0dfe Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/613079 kokoro-CI: kokoro <noreply+kokoro@google.com> Commit-Queue: Hyang-Ah Hana Kim <hyangah@gmail.com> Reviewed-by: Hongxiang Jiang <hxjiang@golang.org>
Next change, we will use relui to create release note as draft for vscode-go release coordinator for review. From the relui, the relui will print the url to the draft release note so the coordinator can review and publish. In my local test, I did change the order of the step execution so I can test it locally. After preparing the release note as draft, should we prepare a Or you think it's ok to release the rc release note without coordinator approval? |
Change https://go.dev/cl/613595 mentions this issue: |
Change https://go.dev/cl/613597 mentions this issue: |
For golang/vscode-go#3500 Change-Id: Ic55a53fd5797322bc18d52ae910f60dd70641ec9 Reviewed-on: https://go-review.googlesource.com/c/build/+/613597 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com>
Change https://go.dev/cl/613596 mentions this issue: |
This step will accept release, prerelease and cloud build as input parameter. The first two parameter is being use to determine the release version. The CloudBuild will be used in the next CL to upload generated package extension. A local relui screenshot is at golang/vscode-go#3500 (comment) For golang/vscode-go#3500 Change-Id: Ia9b7fdf2869ceae2baecfbb0179c9985e7a9e1ad Reviewed-on: https://go-review.googlesource.com/c/build/+/613595 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
Add a new method UploadReleaseAsset to GitHubClient interface. The method can upload a file in form of fs.File to a GitHub release as a release asset. A local relui screenshot is at golang/vscode-go#3500 (comment) For golang/vscode-go#3500 Change-Id: I16f48573fbb2e3c76d8c5c91bc80ab09c7653e25 Reviewed-on: https://go-review.googlesource.com/c/build/+/613596 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> Reviewed-by: Dmitri Shuralyov <dmitshur@google.com> Auto-Submit: Hongxiang Jiang <hxjiang@golang.org>
This comment was marked as duplicate.
This comment was marked as duplicate.
Change https://go.dev/cl/613598 mentions this issue: |
Change https://go.dev/cl/613599 mentions this issue: |
Only the stable version (Y is even) have release candidate, when releasing a stable minor version (vX.EVEN.0), the release note should show the diff between current version (vX.EVEN.0) and the latest patch of the last stable version(vX.EVEN-2.LATEST). For golang/vscode-go#3500 Change-Id: Ia1ed84d2b2da0789a3e3410f96ad7b6db007174b Reviewed-on: https://go-review.googlesource.com/c/build/+/613598 Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> Auto-Submit: Hongxiang Jiang <hxjiang@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
E2E local test for prerelease flow. I have to make some change to the flow to make sure it can success finish. The change is available in |
Change https://go.dev/cl/614216 mentions this issue: |
Next change: a few more steps will be added to vscode-go insider flow. Including:
A local test, after the local run finished, a new github release (draft) is created. This draft is meant for insider version Things to mention:
The relui execution: |
Change https://go.dev/cl/614335 mentions this issue: |
The relui will accept two input parameters specifying the announcement sender and the receiver. As mentioned previously, the email announcement is not locally testable. For golang/vscode-go#3500 Change-Id: I8b22bc8a4bf5f62b42b22bc34f081c914bc0d7fd Reviewed-on: https://go-review.googlesource.com/c/build/+/613599 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
Remove jq as the version check is now skipped. Remove gh as the github release and asset upload is now handled using relui's client library. Remove git as it's never being used. Local test log: $ TAG_NAME=v0.43.3 VSCE_PAT=fake go run -C extension tools/release/release.go publish ERROR TF400813: The user 'aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' is not authorized to access this resource. failed to publish release exit status 1 For #3500 Change-Id: I121db842f74079310c2599c7e09081dd73863cff Reviewed-on: https://go-review.googlesource.com/c/vscode-go/+/614335 Auto-Submit: Hongxiang Jiang <hxjiang@golang.org> kokoro-CI: kokoro <noreply+kokoro@google.com> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> Commit-Queue: Hongxiang Jiang <hxjiang@golang.org>
Next change, we add a new step to vscode-go to publish the packaged extension to vscode market place. In my local relui test, I create a fake secret called Because my credential is fake, so the publish did not go through and failed because |
Change https://go.dev/cl/614455 mentions this issue: |
The added steps include: - Verify the commit in the master branch. - Generate package extension based on the commit. - Add the insider tag to the commit. - Create GitHub release with the tag, diff and body. Enhence createGitHubRelease method to handle more than prerelease flow. A local relui screenshot is at golang/vscode-go#3500 (comment) For golang/vscode-go#3500 Change-Id: Ia946a1544b35e29de97c64d0f3cadd48f0f3e366 Reviewed-on: https://go-review.googlesource.com/c/build/+/614216 Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Auto-Submit: Hongxiang Jiang <hxjiang@golang.org>
Change https://go.dev/cl/614718 mentions this issue: |
Next CL, we will add the last flow vscode-go stable version release flow. The goal of this flow is to release a release candidate as final release. (release v0.44.2-rc.3 as v0.44.2) The flow will take the same input parameter, a version bump strategy which will be used to determine which version you are trying to release ( However, in my local run, there is no ongoing release, so they all failed because there is no release candidate available. |
Change https://go.dev/cl/614299 mentions this issue: |
The Cloud Build service account has access to the Secret Manager secret containing the "vscode-go" extension publish token. This token is exported as the environment variable "VSCE_PAT" only during the extension publishing step. A local relui screenshot is at golang/vscode-go#3500 (comment) For golang/vscode-go#3500 Change-Id: Iede31c019ddd1e37398903f815a0e8ca72aa268f Reviewed-on: https://go-review.googlesource.com/c/build/+/614455 LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Hyang-Ah Hana Kim <hyangah@gmail.com>
Change https://go.dev/cl/615215 mentions this issue: |
This issue tracks the relui workflow to further automate the vscode-go release process.
The new relui-based release process includes
Sanity check on the version
Stable release: the initial version will simply migrate the existing release process.
But the final version will handle:
package.json
andpackage-lock.json
.extension/LICENSE
file. (not the top-level LICENSE file).v0.(M+1).0
.Prerelease (to be added with golang/vscode-go#1935)
package.json
andpackage-lock.json
.cc @h9jiang
The text was updated successfully, but these errors were encountered: