semantic-release
SDLC / Policy-as-Code
W pełni automatyczne wydania z Conventional Commits (publish-on-merge).
semantic-release w pełni automatyzuje cykl wydawniczy: po merge do gałęzi wydawniczej analizuje commity (Conventional Commits), ustala kolejną wersję wg SemVer, generuje changelog i publikuje wydanie — przez bogaty ekosystem wtyczek (npm, GitLab/GitHub Releases, obrazy i inne). W odróżnieniu od modelu „release PR” działa w trybie publish-on-merge: nie ma ręcznego kroku zatwierdzenia wersji, więc droga od merge do wydania jest najkrótsza.
Kiedy używać
- Chcesz pełnej automatyzacji wydań bez ręcznego podbijania wersji.
- Publikujesz pakiety/artefakty często i chcesz krótkiej drogi merge → release.
- Potrzebujesz kanałów wydawniczych (stable / next / beta / maintenance).
Przykład użycia
// .releaserc.json — kanały + wtyczki
{
"branches": ["main", { "name": "beta", "prerelease": true }],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/changelog",
"@semantic-release/gitlab",
"@semantic-release/git"
]
}
npx semantic-release # zwykle uruchamiane w CI po merge do main
Warto wiedzieć
- Kanały:
main→ stabilne,next/beta→ pre-release,1.x→ wydania utrzymaniowe. - Model „publish-on-merge” — kontrolę przenosisz na etap PR z kodem; jeśli wolisz jawną „bramkę wersji”, rozważ release-please.
- Działa na GitLab, Gitea i innych platformach przez wtyczki.