| # This workflow will be triggered when a new release tag (of the form vX.Y.Z) is |
| # pushed to the vscode-go repo.) |
| # For local testing, run: |
| # gcloud builds submit --config release.yaml --no-source --substitutions=_TAG_NAME="v0.40.1-rc.1",_GITHUB_TOKEN="alias1",_VSCE_TOKEN="alias2" |
| # |
| # WARNING: this will publish the extension. |
| # |
| # This will check out the vscode-go repo on the specified tag, build the extension, |
| # and publish it to the VS Code Marketplace and the GitHub Releases page if not published already. |
| steps: |
| # TODO: check build/test status |
| # TODO: configure failure notification https://cloud.google.com/build/docs/configuring-notifications/notifiers |
| - name: gcr.io/cloud-builders/git |
| args: |
| - clone |
| - '--branch=$TAG_NAME' |
| - '--single-branch' |
| - '--depth=1' |
| - 'https://go.googlesource.com/vscode-go' |
| - vscode-go |
| id: clone vscode-go repo |
| - name: gcr.io/cloud-builders/docker |
| args: |
| - '-R' |
| - '1000:1000' |
| - /workspace |
| - /builder/home |
| dir: / |
| id: adjust file permissions |
| entrypoint: chown |
| - name: us-docker.pkg.dev/$PROJECT_ID/vscode-go-docker-repo/ci-image |
| args: |
| - ci |
| dir: vscode-go/extension |
| id: install npm dependencies |
| entrypoint: npm |
| - name: us-docker.pkg.dev/$PROJECT_ID/vscode-go-docker-repo/ci-image |
| args: |
| - -c |
| - | |
| go run -C extension tools/release/release.go package && |
| go run -C extension tools/release/release.go publish |
| dir: vscode-go |
| id: package and publish the extension |
| entrypoint: bash |
| env: |
| - 'TAG_NAME=$TAG_NAME' |
| - 'COMMIT_SHA=$COMMIT_SHA' |
| secretEnv: |
| - VSCE_PAT |
| - GITHUB_TOKEN |
| timeout: 1800s |
| options: |
| substitutionOption: ALLOW_LOOSE |
| artifacts: |
| objects: |
| location: 'gs://$PROJECT_ID/releases/$TAG_NAME' |
| paths: |
| - vscode-go/extension/*.vsix |
| availableSecrets: |
| secretManager: |
| - versionName: projects/$PROJECT_ID/secrets/$_VSCE_TOKEN/versions/latest |
| env: VSCE_PAT |
| - versionName: projects/$PROJECT_ID/secrets/$_GITHUB_TOKEN/versions/latest |
| env: GITHUB_TOKEN |