Code Extension Publish

Build and publish VSCode/Cursor extensions to multiple marketplaces with a single GitHub Action

Key Features

Streamline your extension publishing workflow

🚀

Multi-Marketplace Support

Publish to VSCode Marketplace and Open VSX Registry simultaneously

🎯

Platform-Specific Builds

Build for specific platforms like macOS, Linux, and Windows with architecture targeting

Automated Workflow

Lint, build, package, and publish your extension in one seamless action

Quick Start

Get started in minutes

Basic Usage

- name: Publish Extension uses: starburst997/code-extension-publish@v1 with: vsce-pat: ${{ secrets.VSCE_PAT }} ovsx-pat: ${{ secrets.OVSX_PAT }}

Platform-Specific Builds

- uses: starburst997/code-extension-publish@v1 with: vsce-pat: ${{ secrets.VSCE_PAT }} platforms: "darwin-x64,darwin-arm64,linux-x64,win32-x64"

Full Example Workflow

name: Publish Extension on: push: tags: - 'v*' jobs: publish: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Publish to Marketplaces uses: starburst997/code-extension-publish@v1 with: vsce-pat: ${{ secrets.VSCE_PAT }} ovsx-pat: ${{ secrets.OVSX_PAT }} platforms: "darwin-x64,darwin-arm64"

Configuration

All available inputs

Input Description Default
node-version Node.js version to use 20
version Version to set in package.json (none)
lint Run lint command before packaging true
lint-command Lint script name from package.json lint
build-command Build script name from package.json package-bundle
platforms Target platforms (comma-separated) (all)
vsce-pat VSCode Marketplace PAT (required)
ovsx-pat Open VSX Registry PAT (optional)
package-name Custom package name for VSIX files (auto)

Supported Platforms

Platform Description
darwin-x64 macOS Intel
darwin-arm64 macOS Apple Silicon
linux-x64 Linux 64-bit
linux-arm64 Linux ARM 64-bit
win32-x64 Windows 64-bit
win32-arm64 Windows ARM 64-bit
alpine-x64 Alpine Linux 64-bit
alpine-arm64 Alpine Linux ARM 64-bit