Changesets vs semantic-release: CIでのモノレポ向けリリース
Changesetsは明示的に書かれた変更ファイルを使います(モノレポに最適)。semantic-releaseはすべてをConventional Commitsから自動的に導出します。
Changesetsでは、コントリビューターが変更ごとにバンプを記述する小さなchangesetファイルを追加します。その後、リリースPRが影響を受けるパッケージをバージョニングして公開します - モノレポに強力です。semantic-releaseはコミットメッセージからバージョンを推測し、自動的に公開します。
| Changesets | semantic-release | |
|---|---|---|
| バージョニングのソース | 書かれたchangesetファイル | Conventional Commits |
| モノレポサポート | ファーストクラス(パッケージごと) | 可能、より多くのセットアップ |
| リリースフロー | リリースPR(レビュー) | pushで自動 |
| コントリビューターの労力 | changesetを追加 | 準拠したコミットを書く |
| 最適な用途 | モノレポ、意図的なバンプ | 単一パッケージ、完全自動化 |
CIでは
Changesetsはモノレポ向けに作られています: 各パッケージは明示的な変更ファイルからリリースPRを介してバージョニングされ公開され、パッケージごとの精密な制御とレビューゲートを提供します。semantic-releaseは単一パッケージと、コミットからの完全に自動化された公開に最適です。1つのリポジトリで多数のパッケージを保守するなら、通常Changesetsのほうが適します。レビュー手順なしの1パッケージなら、semantic-releaseのほうがシンプルです。
CIのセットアップ
公開とバージョニングのために、リリースジョブにトークンを与え、モノレポでは影響を受けるパッケージにビルドをキャッシュしスコープしてください。リリースジョブはCIのrunner上で実行されます。より高速なマネージドrunnerは、多数のパッケージをバンドルまたはコンパイルするリリースビルドを短縮します。
結論
レビューゲート付きで明示的なパッケージごとのバージョニングが欲しいモノレポ: Changesets。完全に自動化されたコミット駆動のリリースが欲しい単一パッケージ: semantic-release。モノレポのニーズと、リリースごとにどれだけ手動の意図を求めるかで選んでください。