π automation for publishing #1
This file contains hidden or 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
name: Release VS Code Extension | |
on: | |
push: | |
tags: | |
- 'v*' # Triggers on tags like v1.0.0, v1.1.0, etc. | |
branches: | |
- master # Only trigger on master branch | |
jobs: | |
release: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout code | |
uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: '18' | |
cache: 'npm' | |
- name: Install dependencies | |
run: npm ci | |
- name: Extract version from tag | |
id: extract_version | |
run: | | |
TAG_NAME=${GITHUB_REF#refs/tags/} | |
VERSION=${TAG_NAME#v} # Remove 'v' prefix if present | |
echo "version=${VERSION}" >> $GITHUB_OUTPUT | |
echo "Extracted version: ${VERSION}" | |
- name: Update package.json version | |
run: | | |
npm version ${{ steps.extract_version.outputs.version }} --no-git-tag-version | |
echo "Updated package.json version to ${{ steps.extract_version.outputs.version }}" | |
- name: Build extension | |
run: npm run package | |
- name: Install vsce | |
run: npm install -g @vscode/vsce | |
- name: Package extension | |
run: vsce package | |
- name: Publish to VS Code Marketplace | |
run: vsce publish -p ${{ secrets.VSCE_PAT }} | |
env: | |
VSCE_PAT: ${{ secrets.VSCE_PAT }} | |
- name: Get extension filename | |
id: extension_file | |
run: | | |
EXTENSION_FILE=$(ls *.vsix | head -n 1) | |
echo "filename=${EXTENSION_FILE}" >> $GITHUB_OUTPUT | |
- name: Create GitHub Release | |
uses: actions/create-release@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
tag_name: ${{ github.ref_name }} | |
release_name: Release ${{ github.ref_name }} | |
body: | | |
## Release ${{ github.ref_name }} | |
### Changes | |
- Automatic release for version ${{ steps.extract_version.outputs.version }} | |
### Installation | |
You can install this extension from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=DeeprajBaidya.snippetizer) or download the VSIX file below. | |
draft: false | |
prerelease: false | |
- name: Upload Release Asset | |
uses: actions/upload-release-asset@v1 | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
with: | |
upload_url: ${{ steps.create_release.outputs.upload_url }} | |
asset_path: ./${{ steps.extension_file.outputs.filename }} | |
asset_name: ${{ steps.extension_file.outputs.filename }} | |
asset_content_type: application/zip |