Skip to content
Latchkey

semantic-release vs release-please: CIでの自動リリース

どちらもConventional Commitsからバージョニングを自動化しますが、semantic-releaseはCIから直接公開し、release-pleaseはレビュー可能なリリースPRを提案します。

semantic-releaseはコミットを分析し、pushで新しいバージョン(changelog、タグ、レジストリ)を自動的に公開します。release-please(Google)は代わりにリリースPRを開いて維持し、それをマージするとリリースが切られ、人によるゲートを保ちます。

semantic-releaserelease-please
リリースのトリガーリリースブランチへのpushで自動リリースPRのマージ
人によるゲートデフォルトではなしあり(PRをレビュー)
Changelog/バージョニングコミットからコミットから
公開ステップ実行に組み込みPRマージ後
最適な用途完全に自動化されたパイプラインレビュー済みでまとめられたリリース

CIでは

semantic-releaseは完全にハンズオフです: 準拠したコミットをpushすれば、同じジョブでバージョニング、タグ付け、公開を行います。release-pleaseは、マージするまで変更とchangelogをまとめるリリースPRを維持することで人をループに残し、リリースされる内容をレビューしたいチームに向いています。どちらもConventional Commitsに依存し、CIのステップとして実行されます。

CIのセットアップ

タグ付けと公開のために、リリースジョブに適切なトークン/権限を与え、再現性のためにツールのバージョンを固定してください。リリースジョブはCIのrunner上で実行されます。より高速なマネージドrunnerは、成果物のコンパイルやバンドルも行うリリースビルドを短縮します。

結論

CIから直接、完全に自動化された公開が欲しいなら: semantic-release。ゲートとしてレビュー可能でまとめられたリリースPRが欲しいなら: release-please。どちらもConventional Commitsを使います - 各リリースにどれだけ人の制御を求めるかで選んでください。

関連ガイド