semantic-release vs release-please: CIでの自動リリース
どちらもConventional Commitsからバージョニングを自動化しますが、semantic-releaseはCIから直接公開し、release-pleaseはレビュー可能なリリースPRを提案します。
semantic-releaseはコミットを分析し、pushで新しいバージョン(changelog、タグ、レジストリ)を自動的に公開します。release-please(Google)は代わりにリリースPRを開いて維持し、それをマージするとリリースが切られ、人によるゲートを保ちます。
| semantic-release | release-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を使います - 各リリースにどれだけ人の制御を求めるかで選んでください。
関連ガイド
Changesets vs semantic-release: Releases for Monorepos in CIChangesets vs semantic-release for CI: explicit changesets vs commit-driven releases, monorepo support, and v…
Automating GitHub Releases with GitHub ActionsAutomate GitHub Releases on tag push: generate notes, attach build artifacts, and publish with softprops/acti…
How to Speed Up GitHub Actions: 9 High-Impact TacticsMake GitHub Actions faster: caching, parallelization, test splitting, Docker layer caching, slimmer images, a…