Skip to main content

Bazel のリモートビルド実行

概要

Bazel ビルドのリモート実行により、ビルドアクションとテストアクションを複数のマシンに分散できます。これにより、ビルドとテストの実行がスピードアップし、開発チーム間でビルド出力を再利用できるようになり、

Bazel ビルドのリモート実行により、ビルドアクションとテストアクションを複数のマシンに分散できます。これにより、ビルドとテストの実行がスピードアップし、開発チーム間でビルド出力を再利用できるようになり、一貫した環境が実現します

Bitriseビルドキャッシュは、BitriseとBitrise CI以外の環境の両方で、リモートビルド実行で使用できます。

Bitrise でのリモートビルド実行の設定

ワークフローエディター

コンフィギュレーション YAML

  1. Bazel 用ビットライズビルドキャッシュをセットアップ: Bitrise CI 環境での Bazel 用の Bitrise Build Cache の構成.

  2. Bitriseにログインして選択してください ビットライズCI 左側でプロジェクトを選択します。

  3. をクリックします ワークフロー メインページのボタン。

  4. Bazel 用ビットライズビルドキャッシュ ステップ 1、設定 ベゼル RBE を有効にする 入力フィールドに true

  1. 設定 YAML ファイルを開きます。

  2. を追加 activate-build-cache-for-bazel ワークフローにステップアップ。

    your-workflow:
      steps:
        - git-clone: {}
        - activate-build-cache-for-bazel:
            inputs:
            - enable_rbe: true

Bitrise以外の環境でのリモートビルド実行の設定

その他の CI

ローカル環境

  1. Bazel用のBitriseビルドキャッシュのセットアップを始めましょう: 非 Bitrise CI 環境での Bazel 用の Bitrise ビルド キャッシュの構成.

  2. Bitrise ビルドキャッシュを有効にする際には、以下を追加してください。 --rbe フラグ。

    /tmp/bin/bitrise-build-cache activate bazel --cache --cache-push=false --rbe

    キャッシュ

    を設定することをお勧めします --cache-push フラグを false に設定すると、リモートビルドの実行中にワーカーが結果をキャッシュにアップロードします。

  1. Bazel用のBitriseビルドキャッシュのセットアップを始めましょう: ローカル環境でのBazel用Bitriseビルドキャッシュの設定.

  2. Bitrise ビルドキャッシュを有効にする際には、以下を追加してください。 --rbe フラグ。

    /tmp/bin/bitrise-build-cache activate bazel --cache --cache-push=false --rbe

RBE エンドポイントの直接追加

ローカル開発環境でRBEを使用するには、CLIを使用せずにBazelにBitrise Accelerateサービスを直接向けることもできます。

--remote_executor=grpcs://bitrise-accelerate.services.bitrise.io:443

キープして--remote_cache=Build Cache CLI が挿入する行:リモートで生成されたアーティファクトは自動的にそこに書き込まれます。

リモートビルド実行の推奨フラグ

Bazel には、リモートビルドの実行を最大限に活用するために必要なコマンドフラグが多数用意されています。

表1 リモートビルド実行の推奨フラグ

国旗

[説明]

推奨値

--jobs

Bazel が一度に「実行中」に実行できるビルド/テストアクションの最大数を定義します。フラグを省略すると、Bazel はホスト VM 上の論理 CPU コアの数に自動的に戻ります。このデフォルトはローカルでの実行には適切ですが、RBE クラスターの使用率が非常に低くなります

--jobs=100ほとんどの Android/iOS モノリポジトリの出発点として最適ですが、ワーカー数に応じて徐々に増やすこともできます。

--jobs=100

--remote_default_exec_properties

デフォルトの実行プラットフォーム (ワーカープール) を定義します。次のようなキーと値のペアを指定します Arch=arm64 または OSFamily=Darwin。複数のオカレンスはマージされます。

他にないことを確認してください exec_properties ターゲットの任意の場所に設定されます。そうしないと Bazel がワーカープールと一致せず、ビルドが失敗します。

MacOS:

--remote_default_exec_properties=Arch=arm64
--remote_default_exec_properties=OSFamily=Darwin

リナックス:

--remote_default_exec_properties=Arch=amd64
--remote_default_exec_properties=OSFamily=Linux

--spawn_strategy

Bazel がアクションを実行しようとする順序を決定します。Bazel は、特定のアクションを実行できるストラテジーのリストの最初のストラテジーを使用します。デフォルト値は remote,worker,sandboxed,local

リモートを優先して、アクションがリモート実行環境で実行されるようにし、ローカル実行への正常なフォールバックを行います。

--spawn_strategy=remote,local

--noremote_upload_local_results

ローカルで作成された出力の再アップロードをスキップします。リモートワーカーはすでにアーティファクトをキャッシュにプッシュしているので、帯域幅を節約できます。

この設定フラグはBitriseビルドキャッシュCLIでも設定できます。使用する場合は、以下の点を確認してください --cache-push このフラグを使用すると、CLI でフラグが false またはオフになります。

--noremote_upload_local_results

これらのフラグをあなたに追加することをお勧めします .bazelrc ファイルと再利用:

MacOS:

build:remote --jobs=100
build:remote --noremote_upload_local_results
build:remote --spawn_strategy=remote,local
build:remote --remote_default_exec_properties=Arch=arm64
build:remote --remote_default_exec_properties=OSFamily=Darwin

リナックス:

build:remote --jobs=100
build:remote --noremote_upload_local_results
build:remote --spawn_strategy=remote,local
build:remote --remote_default_exec_properties=Arch=amd64
build:remote --remote_default_exec_properties=OSFamily=Linux

すべての準備が整ったら、任意の Bazel コマンドにリモート設定を追加することで、リモートビルドの実行を呼び出すことができます。

bazel build //... --config=remote