Closed4
semantic-release を理解したい
初めに
CI/CD設計で頻出の「semantic release」を理解していきます。先に学ぶべき事項を以下記事にまとめたので併せてどうぞ。
事前に準備しておくこと
「semantic release」においてcommitメッセージの統一は非常に重要です。チームの方針としてcommitは自由形式で良い、という場合以外は「commitlint + husky」を使うと非常に効果的です。使い方については以下の記事にまとめています。
semantic-release のステップ
基本的には以下のステップが実行されます。
ステップ | 説明 |
---|---|
条件検証 (verifyConditions) | リリース実行の為の全ての条件を検証 |
最終リリース取得 | Gitタグを解析し、最後のリリースに該当するコミットを取得 |
コミット解析 (analyzeCommits) | 最終リリース以降のコミット情報に基づきリリースの種類を決定 |
リリース検証 (verifyRelease) | リリースの整合性を検証 |
ノート生成 (generateNotes) | 最終リリース以降のコミットに対するリリースノートの生成 |
Gitタグ作成 | 新しいリリースバージョンに対応するGitタグの作成 |
準備 (prepare) | リリース準備 |
公開 (publish) | リリース公開 |
通知 | 新しいリリースやエラーの通知 |
上記のステップごとにプラグインが個別に用意されており、それらをもとにリリース作業が行われます。
プラグインの紹介
ちなみに「github上」でもどのプラグインが存在するのかを確認できます。
標準プラグイン
何も設定しなくても入ってるプラグイン達
-
@semantic-release/commit-analyzer
- Major/Minor/Patchのいずれかを決定するためのプラグイン
-
@semantic-release/release-notes-generator
- リリースノートを生成するためのプラグイン
-
@semantic-release/npm
- npmパッケージのバージョン更新やリリースするためのプラグイン
-
@semantic-release/github
- Github Release や Commentを生成するためのプラグイン
オプションプラグイン
追加で利用可能なプラグイン。
-
@semantic-release/git
- リリース作業での変更をgitに反映させるためのプラグイン
-
@semantic-release/changelog
- Changelogの作成、更新
-
@semantic-release/exec
- 任意のコマンドを実行
-
@semantic-release/gitlab
- Gitlab用の
@semantic-release/github
パッケージ
- Gitlab用の
プラグインの罠
「semantic-release」が行う以下のステップにおいて各プラグインそれぞれが独自のステップを実行します。その詳細については個別プラグインのGithubページに記載されています。そしてその中でも独自のステップで重複が存在する場合もあるので、不要なステップがないか、よく確認する必要があります。
ステップ | 説明 |
---|---|
条件検証 (verifyConditions) | リリース実行の為の全ての条件を検証 |
コミット解析 (analyzeCommits) | 最終リリース以降のコミット情報に基づきリリースの種類を決定 |
リリース検証 (verifyRelease) | リリースの整合性を検証 |
ノート生成 (generateNotes) | 最終リリース以降のコミットに対するリリースノートの生成 |
準備 (prepare) | リリース準備 |
公開 (publish) | リリース公開 |
このスクラップは2022/09/10にクローズされました