====== 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]]