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
  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。複数のオカレンスはマージされます。

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でも設定できます。これを使用する場合は、このフラグを使用するときに CLI で--cache-push フラグが 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