リリースモデル

元のブログ 投稿で発表されているように、Bazel 4.0 以降のバージョンでは、ローリング リリースと長期サポート(LTS)リリースの 2 つのリリース トラックがサポートされています。このページでは、Bazel のリリースモデルに関する最新 情報について説明します。

リリースのバージョニング

Bazel では、 major.minor.patch セマンティック バージョニング スキームを使用します。

  • A メジャー リリース には、 以前のリリースとの下位互換性がない機能が含まれています。Bazel の各メジャー バージョンは LTS リリースです。
  • A マイナー リリース には、下位互換性のあるバグ修正と、メインブランチから バックポートされた機能が含まれています。
  • A パッチリリース には、重大なバグの修正が含まれています。

また、リリース前のバージョンは、次のメジャー バージョン番号にハイフンと 日付の接尾辞を追加して示されます。

たとえば、各タイプの新しいリリースでは、次のようなバージョン番号になります。

  • メジャー: 6.0.0
  • マイナー: 6.1.0
  • パッチ: 6.1.2
  • リリース前: 7.0.0-pre.20230502.1

サポート ステージ

Bazel の各メジャー バージョンには、次の 4 つのサポート ステージがあります。

  • ローリング: このメジャー バージョンはまだリリース前です。Bazel チームは HEAD からローリング リリースを公開します。
  • 有効: このメジャー バージョンは、現在有効な LTS リリースです。Bazel チームは、重要な機能とバグ修正をマイナー リリースにバックポートします。
  • メンテナンス: このメジャー バージョンは、メンテナンス モードの古い LTS リリースです。Bazel チームは、セキュリティの問題と OS の互換性の問題に関する重大なバグ修正のみをこの LTS リリースにバックポートすることを保証します。
  • 非推奨: Bazel チームはこのメジャー バージョンのサポートを提供しなくなりました。すべてのユーザーは、新しい Bazel LTS リリースに移行する必要があります。

リリースの頻度

Bazel は、2 つのリリース トラックのリリースを定期的に公開しています。

ローリング リリース

  • ローリング リリースは Google Blaze リリースと連携して、約 2 週間ごとに HEAD からリリースされます 。これは、次の Bazel LTS リリースのプレビューです。
  • ローリング リリースでは、互換性のない変更がリリースされる可能性があります。互換性のないフラグは メジャーな破壊的変更におすすめします。互換性のない変更のロールアウトは 下位互換性 ポリシーに準拠する必要があります。

LTS リリース

  • メジャー リリース: 新しい LTS リリースは、約 12 か月 ごとに HEAD からカットされる予定です。新しい LTS リリースが公開されると、すぐに有効 ステージに入り、以前の LTS リリースはメンテナンス ステージに入ります。
  • マイナー リリース: 有効な LTS トラックの新しいマイナー バージョンは、 2 か月に 1 回リリースされる予定です。
  • パッチリリース: 有効ステージと メンテナンス ステージの LTS リリースの新しいパッチ バージョンは、重大なバグ 修正のためにオンデマンドでリリースされる予定です。
  • Bazel LTS リリースは、 メンテナンス ステージで 2 年間経過すると、非推奨ステージに入ります。

計画されているリリースについては、GitHub のリリース に関する問題をご確認ください。

サポート マトリックス

LTS リリース サポート ステージ 最新バージョン サポートの終了
Bazel 7 ローリング GitHub リリースページを確認 なし
Bazel 6 有効 6.4.0 2025 年 12 月
Bazel 5 メンテナンス 5.4.1 2025 年 1 月
Bazel 4 メンテナンス 4.2.4 2024 年 1 月

すべての Bazel リリースは、GitHub の リリース ページで確認できます。

リリース手順とポリシー

ローリング リリースのプロセスは簡単です。約 2 週間ごとに、新しいリリースが作成され、Google 内部の Blaze リリースと同じベースラインに合わせられます。リリース スケジュールが短いため、ローリング リリースに変更をバックポートすることはありません 。

LTS リリースでは、次の手順とポリシーが適用されます。

  1. リリースのベースライン コミットを決定します。
    • 新しいメジャー LTS リリースの場合、ベースライン コミットはメイン ブランチの HEAD です。
    • マイナー リリースまたはパッチリリースのベースライン コミットは、同じ LTS リリースの 現在の最新バージョンの HEAD です。
  2. ベースライン コミットから release-<version> という名前のリリース ブランチを作成します。
  3. PR を介してリリース ブランチに変更をバックポートします。
    • コミュニティは、関連する GitHub の問題または PR に「@bazel-io flag」と返信して、バックポートする特定のコミットを提案できます。これにより、コミットはリリース ブロッカーの候補としてマークされます。Bazel チームは、それらをトリアージして、コミットをバックポートするかどうかを決定します。
    • バックポートできるのは、メインブランチの下位互換性のあるコミットのみです。 マージの競合を解決するための追加のマイナー変更は許容されます。
  4. リリース ブロッカーを特定し、リリース ブランチで見つかった問題を修正します。
    • リリース ブランチは、Bazel CI の postsubmit テストと ダウンストリーム テスト パイプライン で同じテストスイートを使用してテストされます。Bazel チームは、リリース ブランチのテスト結果をモニタリングし、見つかった回帰を修正します。
  5. 既知の リリース ブロッカーがすべて解決したら、リリース ブランチから新しいリリース候補版を作成します。
    • リリース候補版は bazel-discussで発表されます。 Bazel チームは、候補版に関するコミュニティのバグレポートをモニタリングします。
    • 新しいリリース ブロッカーが特定された場合は、前の手順に戻り、 すべての問題を解決してから新しいリリース候補版を作成します。
    • 最初のリリース候補版が作成された後、リリース ブランチに新しい機能を追加することはできません。
  6. リリース ブロッカーが検出されなかった場合は、リリース候補版を公式リリースとして push します。
    • パッチリリースの場合、最後のリリース候補版が公開されてから 少なくとも 2 営業日後にリリースを push します。
    • メジャー リリースとマイナー リリースの場合、最後のリリース候補版が公開されてから 2 営業日後にリリースを push しますが、最初のリリース候補版が公開されてから 1 週間以上経過してから push します。
    • リリースは、翌日が営業日 の日にのみ push されます。
    • リリースは bazel-discussで発表されます。 Bazel チームは、新しい リリースに関するコミュニティのバグレポートをモニタリングして対応します。

回帰を報告する

新しい Bazel リリース、リリース候補版、または HEAD の Bazel で回帰が見つかった場合は、 GitHubでバグを報告してください。Bazelisk を使用して原因となるコミットを特定し、この情報をバグ レポートに含めることができます。

たとえば、Bazel 6.1.0 ではビルドが成功するが、6.2.0 の 2 番目の リリース候補版では失敗する場合は、次のようにして二分検索できます。

bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar

問題を再現する必要がある場合は、BAZELISK_SHUTDOWN 環境変数または BAZELISK_CLEAN 環境変数を設定して、 対応する bazel コマンドを実行し、ビルド状態をリセットします。詳細については、Bazelisk の二分検索機能に関するドキュメントをご覧ください

二分検索 機能を使用するには、Bazelisk を最新バージョンにアップグレードしてください。

ルールの互換性

ルール作成者で、さまざまな Bazel バージョンとの互換性を維持する場合は、ルールの 互換性ページをご覧ください。