Skip to content

Package Extensions

Package Extensions #8

name: Package Extensions
on:
workflow_dispatch:
inputs:
create_release:
description: 'Create a GitHub Release'
type: boolean
default: false
version:
description: 'Version number (e.g., 0.4.0) - only used if creating release'
type: string
required: false
jobs:
package:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
# Build VS Code Extension
- name: Install VS Code extension dependencies
working-directory: webaibridge-vscode
run: npm ci
- name: Compile TypeScript
working-directory: webaibridge-vscode
run: npm run compile
- name: Install vsce
run: npm install -g @vscode/vsce
- name: Package VS Code extension (isolated)
run: |
tmpdir=$(mktemp -d)
(cd webaibridge-vscode && tar -cf - .) | (cd "$tmpdir" && tar -xf -)
cd "$tmpdir"
vsce package
mv *.vsix "$GITHUB_WORKSPACE/webaibridge-vscode/" || true
# Build Chrome Extension
- name: Create Chrome extension zip
run: |
cd web-extension
zip -r ../webaibridge-chrome-extension.zip . -x "*.git*" -x "node_modules/*" -x "*.map"
cd ..
- name: Upload VSIX artifact
uses: actions/upload-artifact@v4
with:
name: webaibridge-vsix
path: webaibridge-vscode/*.vsix
retention-days: 30
- name: Upload Chrome extension artifact
uses: actions/upload-artifact@v4
with:
name: webaibridge-chrome
path: webaibridge-chrome-extension.zip
retention-days: 30
release:
needs: package
runs-on: ubuntu-latest
if: ${{ inputs.create_release }}
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
# Build VS Code Extension
- name: Install VS Code extension dependencies
working-directory: webaibridge-vscode
run: npm ci
- name: Install vsce
run: npm install -g @vscode/vsce
- name: Package VS Code extension (isolated)
run: |
tmpdir=$(mktemp -d)
(cd webaibridge-vscode && tar -cf - .) | (cd "$tmpdir" && tar -xf -)
cd "$tmpdir"
vsce package
mv *.vsix "$GITHUB_WORKSPACE/webaibridge-vscode/" || true
# Build Chrome Extension
- name: Create Chrome extension zip
run: |
cd web-extension
zip -r ../webaibridge-chrome-extension.zip . -x "*.git*" -x "node_modules/*" -x "*.map"
cd ..
- name: Create GitHub Release
uses: softprops/action-gh-release@v1
with:
files: |
webaibridge-vscode/*.vsix
webaibridge-chrome-extension.zip
generate_release_notes: true
tag_name: v${{ inputs.version }}
name: WebAiBridge v${{ inputs.version }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}