Files
claude-task-master/.github/workflows/extension-ci.yml
DavidMaliglowka a79fd29036 fix(extension): address PR review comments and improve implementation
- Fixed InternalError class definition in errorHandler.ts
- Updated extension configuration and CI workflows
- Improved error handling and type safety
- Enhanced build and release automation
- Updated documentation and changelogs

Addresses review feedback on PR #997
2025-07-23 12:29:04 -05:00

204 lines
4.9 KiB
YAML

name: Extension CI
on:
push:
branches:
- main
- next
paths:
- 'apps/extension/**'
- '.github/workflows/extension-ci.yml'
pull_request:
branches:
- main
- next
paths:
- 'apps/extension/**'
- '.github/workflows/extension-ci.yml'
permissions:
contents: read
jobs:
setup:
runs-on: ubuntu-latest
outputs:
cache-key: ${{ steps.cache-key.outputs.key }}
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v4
with:
version: latest
- name: Generate cache key
id: cache-key
run: echo "key=${{ runner.os }}-extension-pnpm-${{ hashFiles('apps/extension/pnpm-lock.yaml') }}" >> $GITHUB_OUTPUT
- name: Cache pnpm dependencies
uses: actions/cache@v4
with:
path: |
~/.pnpm-store
apps/extension/node_modules
key: ${{ steps.cache-key.outputs.key }}
restore-keys: |
${{ runner.os }}-extension-pnpm-
- name: Install Extension Dependencies
working-directory: apps/extension
run: pnpm install --frozen-lockfile
timeout-minutes: 5
lint-and-typecheck:
needs: setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v4
with:
version: latest
- name: Restore pnpm dependencies
uses: actions/cache@v4
with:
path: |
~/.pnpm-store
apps/extension/node_modules
key: ${{ needs.setup.outputs.cache-key }}
- name: Install if cache miss
working-directory: apps/extension
run: pnpm install --frozen-lockfile --prefer-offline
timeout-minutes: 3
- name: Lint Extension
working-directory: apps/extension
run: pnpm run lint
env:
FORCE_COLOR: 1
- name: Type Check Extension
working-directory: apps/extension
run: pnpm run check-types
env:
FORCE_COLOR: 1
build:
needs: setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v4
with:
version: latest
- name: Restore pnpm dependencies
uses: actions/cache@v4
with:
path: |
~/.pnpm-store
apps/extension/node_modules
key: ${{ needs.setup.outputs.cache-key }}
- name: Install if cache miss
working-directory: apps/extension
run: pnpm install --frozen-lockfile --prefer-offline
timeout-minutes: 3
- name: Build Extension
working-directory: apps/extension
run: pnpm run build
env:
FORCE_COLOR: 1
- name: Package Extension
working-directory: apps/extension
run: pnpm run package
env:
FORCE_COLOR: 1
- name: Verify Package Contents
working-directory: apps/extension
run: |
echo "Checking vsix-build contents..."
ls -la vsix-build/
echo "Checking dist contents..."
ls -la vsix-build/dist/
echo "Checking package.json exists..."
test -f vsix-build/package.json
- name: Create VSIX Package (Test)
working-directory: apps/extension/vsix-build
run: pnpm exec vsce package --no-dependencies
env:
FORCE_COLOR: 1
- name: Upload Extension Artifact
uses: actions/upload-artifact@v4
with:
name: extension-package
path: |
apps/extension/vsix-build/*.vsix
apps/extension/dist/
retention-days: 30
test:
needs: setup
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- uses: pnpm/action-setup@v4
with:
version: latest
- name: Restore pnpm dependencies
uses: actions/cache@v4
with:
path: |
~/.pnpm-store
apps/extension/node_modules
key: ${{ needs.setup.outputs.cache-key }}
- name: Install if cache miss
working-directory: apps/extension
run: pnpm install --frozen-lockfile --prefer-offline
timeout-minutes: 3
- name: Run Extension Tests
working-directory: apps/extension
run: xvfb-run -a pnpm run test
env:
CI: true
FORCE_COLOR: 1
timeout-minutes: 10
- name: Upload Test Results
if: always()
uses: actions/upload-artifact@v4
with:
name: extension-test-results
path: apps/extension/test-results
retention-days: 30