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

ワークフロー例

  1. v2.x(mainブランチ)で開発中
  2. v1.xで重大なバグが発見される
  3. 最後のv1タグから1.xブランチを作成/チェックアウト
  4. 修正をcherry-pickまたは作成
  5. 1.xにプッシュ — semantic-releaseがv1.x.yを公開

ユースケース

複数のメジャーバージョンが本番環境にある場合に、古いバージョンにセキュリティパッチやバグ修正が必要なライブラリ。ユーザーが常に最新メジャーバージョンにアップグレードできるわけではないデータベースドライバ、HTTPクライアント、フレームワークプラグインに一般的。

試してみる — Semantic Release Config Builder

フルツールを開く