Update changelog #180
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Build and release a new version of the extension. | |
# Based on example workflow at https://github.com/actions/upload-release-asset | |
# licensed under https://github.com/actions/upload-release-asset/blob/master/LICENSE. | |
# Reference for passing data between steps: | |
# https://jasonet.co/posts/new-features-of-github-actions/#passing-data-to-future-steps | |
name: Release | |
on: | |
workflow_dispatch: | |
push: | |
tags: | |
- 'v[0-9]+.[0-9]+.[0-9]+*' | |
jobs: | |
build: | |
name: Release | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- uses: actions/setup-node@v4 | |
with: | |
node-version-file: extensions/ql-vscode/.nvmrc | |
- name: Install dependencies | |
run: | | |
cd extensions/ql-vscode | |
npm ci | |
shell: bash | |
- name: Build | |
env: | |
APP_INSIGHTS_KEY: '${{ secrets.APP_INSIGHTS_KEY }}' | |
run: | | |
echo "APP INSIGHTS KEY LENGTH: ${#APP_INSIGHTS_KEY}" | |
cd extensions/ql-vscode | |
npm run build -- --release | |
shell: bash | |
- name: Prepare artifacts | |
id: prepare-artifacts | |
run: | | |
mkdir artifacts | |
cp dist/*.vsix artifacts | |
# Record the VSIX path as an output of this step. | |
# This will be used later when uploading a release asset. | |
VSIX_PATH="$(ls dist/*.vsix)" | |
echo "vsix_path=$VSIX_PATH" >> "$GITHUB_OUTPUT" | |
# Transform the GitHub ref so it can be used in a filename. | |
# The last sed invocation is used for testing branches that modify this workflow. | |
REF_NAME="$(echo ${{ github.ref }} | sed -e 's:^refs/tags/::' | sed -e 's:/:-:g')" | |
echo "ref_name=$REF_NAME" >> "$GITHUB_OUTPUT" | |
- name: Upload artifacts | |
uses: actions/upload-artifact@v4 | |
with: | |
name: vscode-codeql-extension | |
path: artifacts | |
- name: Upload source maps | |
uses: actions/upload-artifact@v4 | |
with: | |
name: vscode-codeql-sourcemaps | |
path: dist/vscode-codeql/out/*.map | |
# TODO Run tests, or check that a test run on the same branch succeeded. | |
- name: Create sourcemap ZIP file | |
run: | | |
cd dist/vscode-codeql/out | |
zip -r ../../vscode-codeql-sourcemaps.zip *.map | |
- name: Create release | |
id: create-release | |
run: | | |
gh release create ${{ github.ref_name }} --draft --title "Release ${{ github.ref_name }}" \ | |
'${{ steps.prepare-artifacts.outputs.vsix_path }}#${{ format('vscode-codeql-{0}.vsix', steps.prepare-artifacts.outputs.ref_name) }}' \ | |
'dist/vscode-codeql-sourcemaps.zip#${{ format('vscode-codeql-sourcemaps-{0}.zip', steps.prepare-artifacts.outputs.ref_name) }}' | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
### | |
# Do Post release work: version bump and changelog PR | |
# Only do this if we are running from a PR (ie- this is part of the release process) | |
# The checkout action does not fetch the main branch. | |
# Fetch the main branch so that we can base the version bump PR against main. | |
- name: Fetch main branch | |
run: | | |
git fetch --depth=1 origin main:main | |
git checkout main | |
- name: Bump patch version | |
id: bump-patch-version | |
if: success() | |
run: | | |
cd extensions/ql-vscode | |
# Bump to the next patch version. Major or minor version bumps will have to be done manually. | |
# Record the next version number as an output of this step. | |
NEXT_VERSION="$(npm version patch)" | |
echo "next_version=$NEXT_VERSION" >> "$GITHUB_OUTPUT" | |
- name: Add changelog for next release | |
if: success() | |
run: | | |
cd extensions/ql-vscode | |
perl -i -pe 's/^/## \[UNRELEASED\]\n\n/ if($.==3)' CHANGELOG.md | |
- name: Create version bump PR | |
uses: ./.github/actions/create-pr | |
if: success() | |
with: | |
token: ${{ secrets.GITHUB_TOKEN }} | |
commit-message: Bump version to ${{ steps.bump-patch-version.outputs.next_version }} | |
title: Bump version to ${{ steps.bump-patch-version.outputs.next_version }} | |
body: This PR was automatically generated by the GitHub Actions release workflow in this repository. | |
head-branch: ${{ format('version/bump-to-{0}', steps.bump-patch-version.outputs.next_version) }} | |
base-branch: main | |
vscode-publish: | |
name: Publish to VS Code Marketplace | |
needs: build | |
environment: publish-vscode-marketplace | |
runs-on: ubuntu-latest | |
env: | |
VSCE_TOKEN: ${{ secrets.VSCE_TOKEN }} | |
steps: | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: vscode-codeql-extension | |
- name: Publish to Registry | |
run: | | |
npx vsce publish -p $VSCE_TOKEN --packagePath *.vsix | |
open-vsx-publish: | |
name: Publish to Open VSX Registry | |
needs: build | |
environment: publish-open-vsx | |
runs-on: ubuntu-latest | |
env: | |
OPEN_VSX_TOKEN: ${{ secrets.OPEN_VSX_TOKEN }} | |
steps: | |
- name: Download artifact | |
uses: actions/download-artifact@v4 | |
with: | |
name: vscode-codeql-extension | |
- name: Publish to Registry | |
run: | | |
npx ovsx publish -p $OPEN_VSX_TOKEN *.vsix |