【セマンティックリリース】

semantic-release とは?

最終更新:
💡 「次のバージョンは何番?」をコミット履歴が自動で教えてくれる

コミットメッセージを解析し、次のバージョン番号の決定、リリースノート生成、パッケージ公開などを自動化するツール。実行する処理や公開先はプラグインと設定による。

📌 このページのポイント
semantic-release:履歴から公開へ コミット履歴 feat: 新機能 fix: 修正 規約を解析 次の版を決定 公開処理 ノート・タグ 設定した公開先 CIで実行 テスト等の成功後 CHANGELOG.md保存は追加設定 対象になる変更があるときにリリース
コミットの規約と公開先の設定が必要。リリースノートとファイル保存を区別する
ひよこ ひよこ
semantic-releaseは何を自動化するの?
ペンギン先生 ペンギン先生
コミット履歴から次のバージョンを決め、リリースノートを生成し、Gitタグや公開処理につなげるツールだよ。公開先や追加の処理はプラグインで設定する。コードそのものの正しさを判断してくれるわけではないんだ。
ひよこ ひよこ
番号はどうやって決まるの?
ペンギン先生 ペンギン先生
既定の規約なら、fixはパッチ、featはマイナー、BREAKING CHANGEの記載がある破壊的変更はメジャーの更新になるよ。たとえば1.2.0から修正なら1.2.1、新機能なら1.3.0。複数の変更があれば、必要な更新の大きさを解析するんだ。
ひよこ ひよこ
mainにマージすれば必ず公開される?
ペンギン先生 ペンギン先生
CIでの実行設定と、リリース対象のブランチ指定が必要だよ。テストなどが成功した後に実行し、対象になる変更があるときに公開する。文書の修正だけなど、規則上リリースに結び付かないコミットもあるんだ。
ひよこ ひよこ
CHANGELOG.mdも既定で書き換わる?
ペンギン先生 ペンギン先生
リリースノートの生成と、リポジトリ内のファイル更新は別だよ。CHANGELOG.mdへの保存には@semantic-release/changelogを追加する。既定では、公開パッケージのバージョンが更新されても、その変更をリポジトリへコミットするわけではないんだ。
ひよこ ひよこ
npm以外にも使える?
ペンギン先生 ペンギン先生
公開先に合うプラグインや実行処理を設定すれば使えるよ。npm公開を無効にする設定もある。commitlintで規約を確認する方法も役立つけれど、必須の組み合わせではない。規約と実際の変更内容が合っているかはレビューしよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「semantic-release」って出てきたら「コミット履歴からバージョンとリリースを全自動化するツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「semantic-release」 = セマンティックなバージョンとリリースの自動化
💬 semanticはSemantic Versioning(セマンティックバージョニング)にも使われる言葉だよ。変更の影響をコミットの規約に従って判定し、バージョン番号へ反映する仕組みなんだ。

参考資料

← 用語集にもどる