We currently use two separate continuous integration (CI) systems to test all changes and pushed commits:

This is a temporary setup; once GCB fully supports our desired workflow, we plan to use only the GCB-based setup for CI.

The release of the Go Nightly extension is automated using GitHub Actions.

Testing via GCB

This workflow is triggered for Gerrit CLs and for all commits merged into the master branch. Note that our main repository is go.googlesource.com/vscode-go, and github.com/golang/vscode-go is a mirror of the Go Git repository. All PRs sent to the GitHub repository will be converted to Gerrit CLs.

Currently, the results of the CI run are visible only to GCB project members. We are working on improving this workflow and making the results visible to the public and easily accessible through our Gerrit review UI.

The GCB workflow is defined in build/cloudbuild.yaml and build/all.bash.

The Docker container used for testing is defined in build/cloudbuild.container.yaml and build/Dockerfile.

GCB project members can manually trigger a build and test their local changes. Follow the GCB instructions to set up the environment and tools, and then run:

gcloud config set project vscode-go # this assumes access to vscode-go GCB project. If you encounter an access related error, please file an issue.
gcloud builds submit --config=build/cloudbuild.yaml

To modify and rebuild the Docker container image, run:

gcloud builds submit --config=build/cloudbuild.container.yaml

Testing via GitHub Actions

This is the workflow triggered for every PR and commit made to our mirror repository on GitHub, github.com/golang/vscode-go. We use this CI system to run tests on platforms that GCB does not yet support. This workflow is not triggered by CLs sent via Gerrit yet.

.github/workflows/test-long.yml and .github/workflows/test-smoke.yml define the GitHub Actions-based CI workflow.

Nightly Release

A new version of the Go Nightly extension, based on the current master branch, is released at least once a day between Monday and Thursday. Learn more in the Go Nightly documentation.

The daily release process is automated via a GitHub Action. See .github/workflows/release.yml and build/all.bash.