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