Publish Release #15
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: "Publish Release" | |
on: | |
workflow_dispatch: | |
inputs: | |
release-type: | |
description: "Choose release type (release or pre-release)" | |
required: true | |
default: "release" | |
type: choice | |
options: | |
- pre-release | |
- release | |
permissions: | |
contents: write | |
packages: write | |
checks: write | |
pull-requests: write | |
jobs: | |
test: | |
uses: ./.github/workflows/test.yml | |
publish: | |
needs: test | |
name: Publish Extension | |
runs-on: ubuntu-latest | |
environment: publish | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Setup Node.js | |
uses: actions/setup-node@v4 | |
with: | |
node-version: "lts/*" | |
# Cache root dependencies - only reuse if package-lock.json exactly matches | |
- name: Cache root dependencies | |
uses: actions/cache@v4 | |
id: root-cache | |
with: | |
path: node_modules | |
key: ${{ runner.os }}-npm-${{ hashFiles('package-lock.json') }} | |
# Cache webview-ui dependencies - only reuse if package-lock.json exactly matches | |
- name: Cache webview-ui dependencies | |
uses: actions/cache@v4 | |
id: webview-cache | |
with: | |
path: webview-ui/node_modules | |
key: ${{ runner.os }}-npm-webview-${{ hashFiles('webview-ui/package-lock.json') }} | |
- name: Install root dependencies | |
if: steps.root-cache.outputs.cache-hit != 'true' | |
run: npm ci --include=optional | |
- name: Install webview-ui dependencies | |
if: steps.webview-cache.outputs.cache-hit != 'true' | |
run: cd webview-ui && npm ci --include=optional | |
- name: Install Publishing Tools | |
run: npm install -g @vscode/vsce | |
- name: Get Version | |
id: get_version | |
run: | | |
VERSION=$(node -p "require('./package.json').version") | |
echo "version=$VERSION" >> $GITHUB_OUTPUT | |
- name: Create Git Tag | |
id: create_tag | |
run: | | |
VERSION=v${{ steps.get_version.outputs.version }} | |
echo "tag=$VERSION" >> $GITHUB_OUTPUT | |
echo "Tagging with $VERSION" | |
git tag "$VERSION" | |
git push origin "$VERSION" | |
- name: Package and Publish Extension | |
env: | |
VSCE_PAT: ${{ secrets.VSCE_PAT }} | |
LANGFUSE_API_URL: ${{ secrets.LANGFUSE_API_URL }} | |
LANGFUSE_API_KEY: ${{ secrets.LANGFUSE_API_KEY }} | |
LANGFUSE_PUBLIC_KEY: ${{ secrets.LANGFUSE_PUBLIC_KEY }} | |
POST_HOG_API_KEY: ${{ secrets.POST_HOG_API_KEY }} | |
POST_HOG_HOST: ${{ secrets.POST_HOG_API_URL }} | |
run: | | |
# Required to generate the .vsix | |
vsce package --out "hai-build-code-generator-${{ steps.get_version.outputs.version }}.vsix" | |
if [ "${{ github.event.inputs.release-type }}" = "pre-release" ]; then | |
npm run publish:marketplace:prerelease | |
echo "Successfully published pre-release version ${{ steps.get_version.outputs.version }} to VS Code Marketplace" | |
else | |
npm run publish:marketplace | |
echo "Successfully published release version ${{ steps.get_version.outputs.version }} to VS Code Marketplace" | |
fi | |
# - name: Get Changelog Entry | |
# id: changelog | |
# uses: mindsers/changelog-reader-action@v2 | |
# with: | |
# # This expects a standard Keep a Changelog format | |
# # "latest" means it will read whichever is the most recent version | |
# # set in "## [1.2.3] - 2025-01-28" style | |
# version: latest | |
- name: Create GitHub Release | |
uses: softprops/action-gh-release@v1 | |
with: | |
tag_name: ${{ steps.create_tag.outputs.tag }} | |
files: "*.vsix" | |
# body: ${{ steps.changelog.outputs.content }} | |
generate_release_notes: true | |
prerelease: ${{ github.event.inputs.release-type == 'pre-release' }} | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |