← Katalog
E I A C

semantic-release

SDLC / Policy-as-Code

W pełni automatyczne wydania z Conventional Commits (publish-on-merge).

★ 22 000 MIT #sdlc#release#conventional-commits#automation

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.