Closed4

semantic-release を理解したい

harrythecodeharrythecode

初めに

CI/CD設計で頻出の「semantic release」を理解していきます。先に学ぶべき事項を以下記事にまとめたので併せてどうぞ。

https://zenn.dev/amezousan/scraps/a7ed107c54446a

事前に準備しておくこと

「semantic release」においてcommitメッセージの統一は非常に重要です。チームの方針としてcommitは自由形式で良い、という場合以外は「commitlint + husky」を使うと非常に効果的です。使い方については以下の記事にまとめています。

https://zenn.dev/amezousan/scraps/15688951759a8d

harrythecodeharrythecode

semantic-release のステップ

基本的には以下のステップが実行されます。

ステップ 説明
条件検証 (verifyConditions) リリース実行の為の全ての条件を検証
最終リリース取得 Gitタグを解析し、最後のリリースに該当するコミットを取得
コミット解析 (analyzeCommits) 最終リリース以降のコミット情報に基づきリリースの種類を決定
リリース検証 (verifyRelease) リリースの整合性を検証
ノート生成 (generateNotes) 最終リリース以降のコミットに対するリリースノートの生成
Gitタグ作成 新しいリリースバージョンに対応するGitタグの作成
準備 (prepare) リリース準備
公開 (publish) リリース公開
通知 新しいリリースやエラーの通知

上記のステップごとにプラグインが個別に用意されており、それらをもとにリリース作業が行われます。

harrythecodeharrythecode

プラグインの紹介

ちなみに「github上」でもどのプラグインが存在するのかを確認できます。

標準プラグイン

何も設定しなくても入ってるプラグイン達

オプションプラグイン

追加で利用可能なプラグイン。

harrythecodeharrythecode

プラグインの罠

「semantic-release」が行う以下のステップにおいて各プラグインそれぞれが独自のステップを実行します。その詳細については個別プラグインのGithubページに記載されています。そしてその中でも独自のステップで重複が存在する場合もあるので、不要なステップがないか、よく確認する必要があります。

ステップ 説明
条件検証 (verifyConditions) リリース実行の為の全ての条件を検証
コミット解析 (analyzeCommits) 最終リリース以降のコミット情報に基づきリリースの種類を決定
リリース検証 (verifyRelease) リリースの整合性を検証
ノート生成 (generateNotes) 最終リリース以降のコミットに対するリリースノートの生成
準備 (prepare) リリース準備
公開 (publish) リリース公開
このスクラップは2022/09/10にクローズされました