====== Processo di release ======
Guida alla pubblicazione di nuove versioni di WvdS FPC RAD Studio.
===== Versionamento =====
==== Versioning semantico ====
MAJOR.MINOR.PATCH
│ │ └── Bug fix
│ └── Nuove funzionalita (retrocompatibili)
└── Breaking change
==== Versioni pre-release ====
* ''1.0.0-alpha.1'' - Sviluppo iniziale
* ''1.0.0-beta.1'' - Feature complete, testing
* ''1.0.0-rc.1'' - Release candidate
===== Checklist release =====
PRE-RELEASE:
[ ] Tutti i test superati
[ ] Code review completata
[ ] Documentazione aggiornata
[ ] CHANGELOG aggiornato
[ ] Versione aggiornata in package.json
[ ] Nessun TODO/FIXME nel codice
BUILD:
[ ] Build release creata (--mode release)
[ ] Artefatti build verificati
[ ] Pacchetti VSIX creati
[ ] Pacchetti testati localmente
PUBLISH:
[ ] Tag Git creato
[ ] Release GitHub creata
[ ] Pubblicazione Marketplace
[ ] Documentazione deployata
POST-RELEASE:
[ ] Version bump per prossimo sviluppo
[ ] Note di release comunicate
===== Manutenzione CHANGELOG =====
# Changelog
## [1.2.0] - 2024-01-15
### Added
- Nuova funzionalita X
- Supporto per Y
### Changed
- Comportamento migliorato per Z
### Fixed
- Bug nella funzionalita A risolto (#123)
### Removed
- Funzionalita B deprecata rimossa
===== Creare il build =====
# Clean build
wvds-build clean
wvds-build --mode release
# Creare VSIX
wvds-build package
# Risultato in binaries/dist/
ls binaries/dist/
# wvds-vscode-core-1.2.0.vsix
# wvds-vscode-build-1.2.0.vsix
# ...
===== Workflow Git =====
# Assicurarsi che main sia aggiornato
git checkout main
git pull origin main
# Aggiornare versione
# Modificare package.json, CHANGELOG.md
# Commit
git add -A
git commit -m "Release v1.2.0"
# Creare 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
===== Pubblicazione Marketplace =====
==== Prerequisiti ====
* ''vsce'' installato: ''npm install -g @vscode/vsce''
* Personal Access Token (PAT) con scope Marketplace
* Account Publisher registrato
==== Pubblicare ====
# Singola estensione
vsce publish -p $PAT
# Tutte le estensioni
for vsix in binaries/dist/*.vsix; do
vsce publish --packagePath "$vsix" -p $PAT
done
==== Verificare ====
Dopo la pubblicazione:
- Verificare pagina Marketplace
- Testare installazione in VS Code
- README visualizzato correttamente?
===== Processo hotfix =====
Per bug critici dopo il release:
# Creare branch hotfix dal tag
git checkout -b hotfix/1.2.1 v1.2.0
# Implementare fix
# ...
# Testare, committare
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 e 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 in main
git checkout main
git merge hotfix/1.2.1
git push origin main
===== Rollback =====
Se un release e difettoso:
# Marketplace: marcare versione precedente come "latest"
vsce unpublish wvds.wvds-vscode-core@1.2.0
# Oppure: pubblicare hotfix
===== Automazione =====
==== 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
===== Vedi anche =====
* [[.:build-pipeline|Pipeline di build]]
* [[..:p:packaging|Estensione Packaging]]
* [[.:testing|Testing]]