====== Release Process ======
Guide for publishing new versions of WvdS FPC RAD Studio.
===== Versioning =====
==== Semantic Versioning ====
MAJOR.MINOR.PATCH
│ │ └── Bug Fixes
│ └── New Features (backward compatible)
└── Breaking Changes
==== Pre-Release Versions ====
* ''1.0.0-alpha.1'' - Early development
* ''1.0.0-beta.1'' - Feature-complete, testing
* ''1.0.0-rc.1'' - Release Candidate
===== Release Checklist =====
PRE-RELEASE:
[ ] All tests passed
[ ] Code review completed
[ ] Documentation updated
[ ] CHANGELOG updated
[ ] Version updated in package.json
[ ] No TODO/FIXME in code
BUILD:
[ ] Release build created (--mode release)
[ ] Build artifacts verified
[ ] VSIX packages created
[ ] Packages tested locally
PUBLISH:
[ ] Git tag created
[ ] GitHub Release created
[ ] Marketplace publishing
[ ] Documentation deployed
POST-RELEASE:
[ ] Version bump for next development
[ ] Release notes communicated
===== Maintaining CHANGELOG =====
# Changelog
## [1.2.0] - 2024-01-15
### Added
- New feature X
- Support for Y
### Changed
- Improved behavior for Z
### Fixed
- Bug in feature A fixed (#123)
### Removed
- Deprecated feature B removed
===== Creating Build =====
# Clean Build
wvds-build clean
wvds-build --mode release
# Create VSIX
wvds-build package
# Result in binaries/dist/
ls binaries/dist/
# wvds-vscode-core-1.2.0.vsix
# wvds-vscode-build-1.2.0.vsix
# ...
===== Git Workflow =====
# Ensure main is up to date
git checkout main
git pull origin main
# Update version
# Edit package.json, CHANGELOG.md
# Commit
git add -A
git commit -m "Release v1.2.0"
# Create tag
git tag -a v1.2.0 -m "Version 1.2.0"
# Push
git push origin main
git push origin v1.2.0
===== GitHub Release =====
gh release create v1.2.0 \
--title "WvdS FPC RAD Studio v1.2.0" \
--notes-file CHANGELOG.md \
binaries/dist/*.vsix
===== Marketplace Publishing =====
==== Prerequisites ====
* ''vsce'' installed: ''npm install -g @vscode/vsce''
* Personal Access Token (PAT) with Marketplace scope
* Publisher account registered
==== Publishing ====
# Single extension
vsce publish -p $PAT
# All extensions
for vsix in binaries/dist/*.vsix; do
vsce publish --packagePath "$vsix" -p $PAT
done
==== Verification ====
After publishing:
- Check Marketplace page
- Test installation in VS Code
- README displayed correctly?
===== Hotfix Process =====
For critical bugs after release:
# Create hotfix branch from tag
git checkout -b hotfix/1.2.1 v1.2.0
# Implement fix
# ...
# Test, commit
git commit -m "Fix: Critical bug in X"
# Version bump
# package.json: 1.2.0 -> 1.2.1
git commit -m "Bump version to 1.2.1"
# Tag and release
git tag -a v1.2.1 -m "Hotfix: Critical bug in X"
git push origin hotfix/1.2.1
git push origin v1.2.1
# Merge into main
git checkout main
git merge hotfix/1.2.1
git push origin main
===== Rollback =====
If a release is defective:
# Marketplace: Mark previous version as "latest"
vsce unpublish wvds.wvds-vscode-core@1.2.0
# Or: Publish hotfix
===== Automation =====
==== GitHub Actions ====
name: Release
on:
push:
tags:
- 'v*'
jobs:
release:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: wvds-build --mode release
- name: Package
run: wvds-build package
- name: Create Release
uses: softprops/action-gh-release@v1
with:
files: binaries/dist/*.vsix
- name: Publish to Marketplace
env:
VSCE_PAT: ${{ secrets.VSCE_PAT }}
run: |
npm install -g @vscode/vsce
for vsix in binaries/dist/*.vsix; do
vsce publish --packagePath "$vsix"
done
===== See also =====
* [[.:build-pipeline|Build Pipeline]]
* [[..:p:packaging|Packaging Extension]]
* [[.:testing|Testing]]