name: Extension Release on: push: tags: - "v*" workflow_dispatch: permissions: contents: read jobs: publish: name: Publish .vsix to VS Code Marketplace and Open VSX runs-on: ubuntu-latest defaults: run: working-directory: extension permissions: contents: write steps: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: node-version: 22 cache: npm cache-dependency-path: extension/package-lock.json - name: Install dependencies run: npm ci - name: Lint run: npm run lint - name: Typecheck run: npm run typecheck - name: Test run: npm test - name: Build run: npm run compile - name: Package .vsix run: npm run package - name: Publish to VS Code Marketplace env: VSCE_PAT: ${{ secrets.VSCE_PAT }} run: npm run publish:vsce - name: Publish to Open VSX env: OVSX_PAT: ${{ secrets.OVSX_PAT }} run: npm run publish:ovsx - name: Upload .vsix to GitHub release if: startsWith(github.ref, 'refs/tags/v') uses: softprops/action-gh-release@v2 with: files: extension/*.vsix fail_on_unmatched_files: false