semantic-releaseのメンテナンスブランチ設定
古いメジャーバージョンへのバックポート修正をサポートするsemantic-release設定。mainでv2.xを開発しながらv1.xのパッチをリリース。
Specialized Configuration
詳細な説明
レガシーバージョン向けメンテナンスブランチ
メンテナンスブランチにより、mainブランチで新機能を開発しながら、古いメジャーバージョンのパッチリリースを継続できます。
設定
{
"branches": [
"+([0-9])?(.{+([0-9]),x}).x",
"main",
{"name": "next", "prerelease": true}
],
"plugins": [
"@semantic-release/commit-analyzer",
"@semantic-release/release-notes-generator",
"@semantic-release/npm",
"@semantic-release/github"
]
}
メンテナンスブランチの仕組み
globパターン+([0-9])?(.{+([0-9]),x}).xは以下のようなブランチ名にマッチします:
| ブランチ | リリースされるバージョン |
|---|---|
1.x |
1.x.x(v1のパッチ) |
2.x |
2.x.x(v2のパッチ) |
main |
最新のmajor/minor/patch |
ワークフロー例
- v2.x(mainブランチ)で開発中
- v1.xで重大なバグが発見される
- 最後のv1タグから
1.xブランチを作成/チェックアウト - 修正をcherry-pickまたは作成
1.xにプッシュ — semantic-releaseがv1.x.yを公開
ユースケース
複数のメジャーバージョンが本番環境にある場合に、古いバージョンにセキュリティパッチやバグ修正が必要なライブラリ。ユーザーが常に最新メジャーバージョンにアップグレードできるわけではないデータベースドライバ、HTTPクライアント、フレームワークプラグインに一般的。