Exact steps for a human maintainer to cut a tagged release with GitHub Release + optional Marketplace / Open VSX publish.
In GitHub → Settings → Secrets and variables → Actions, add:
| Secret | Purpose |
|---|---|
VSCE_PAT |
Azure DevOps PAT with Marketplace Acquire + Publish (publisher must match extension/package.json → publisher) |
OVSX_PAT |
Open VSX access token from open-vsx.org |
Both are optional. If neither is set, the release workflow still builds the .vsix, uploads it as an artifact, and (on tag pushes) creates a GitHub Release with the .vsix attached. Marketplace / Open VSX publish is skipped with No publish tokens configured — artifact only.
Never commit PATs. Prefer repo secrets over exporting tokens in shared shells.
Note: Cloud agents cannot configure GitHub Actions secrets — a human must set VSCE_PAT / OVSX_PAT before signed Marketplace / Open VSX publish.
# Confirm extension version is 1.0.0
grep '"version"' extension/package.json
cd extension
npm ci
npm run compile
npm run package
# → creer-1.0.0.vsixSmoke-test: code --install-extension creer-1.0.0.vsix (or Cursor equivalent) against a running backend.
From a clean main (or the release commit):
git tag -a v1.0.0 -m "Creer v1.0.0"
git push origin v1.0.0Tag pattern v* triggers .github/workflows/release.yml.
- build —
npm ci→compile→vsce package→ uploadcreer-vsixartifact - github-release (tag pushes only) — create a GitHub Release and attach the
.vsix(contents: write) - publish — if
VSCE_PAT/OVSX_PATsecrets exist, publish to Marketplace / Open VSX; otherwise artifact-only
You can also run the workflow via Actions → Release → Run workflow (workflow_dispatch) for a package/artifact without a tag (no GitHub Release job in that case).
- Confirm the GitHub Release page lists
creer-1.0.0.vsix - If secrets were set, confirm Marketplace / Open VSX listing updated to 1.0.0
- See
extension/PUBLISH.mdfor manualvsce/ovsxpublish from a laptop