リモート実行のルールをテストするために Bazel CI を構成する

<ph type="x-smartling-placeholder"></ph> 問題を報告する ソースを表示 夜間 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

このページは、Bazel ルール リポジトリのオーナーとメンテナンス担当者を対象としています。これは、 では、Bazel 継続的インテグレーション(CI)システムを構成して、 リポジトリを使用して、リモート実行に対するルールの互換性をテストします。 説明します。このページの手順は、Google Compute Engine GitHub リポジトリ。

前提条件

このページの手順を完了する前に、次のことを確認してください。

テスト用の Bazel CI の設定

  1. .bazelci/presubmit.yml ファイルで次の操作を行います。

    a. rbe_ubuntu1604 という名前の構成ファイルを追加します。

    b. rbe_ubuntu1604 構成で、リモート実行に対してテストするビルドとテストのターゲットを追加します。

  2. bazel-toolchains を追加する GitHub リポジトリを WORKSPACE ファイル( 最新リリースをご覧ください。また、 buildkite_config という名前の rbe_autoconfig ターゲットを追加します。この例 BuildKite CI を使用してリモート実行用のツールチェーン構成を作成する rbe_ubuntu1604

load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
  1. presubmit.yml ファイルの変更を含む pull リクエストを送信します。(参照: pull リクエストの例をご覧ください)。

  2. ビルド結果を表示するには、RBE(Ubuntu)の [Details] をクリックします。 16.04)GitHub の pull リクエスト チェックを実行します。このリンク pull リクエストがマージされ、CI テストが 確認できます。(参照: 結果の例をご覧ください)。

    検索結果の例

  3. (省略可)[bazel テスト(RBE(Ubuntu 16.04))] チェックをテストとして設定する ブランチ保護ルールでマージする前に 満たす必要があります設定 GitHub の [Settings >支店 >ブランチ保護ルール 内部 IP アドレスを使用して通信できます

    ブランチ保護ルールの設定

失敗したビルドとテストのトラブルシューティング

ビルドやテストが失敗した場合、次の原因が考えられます。

  • 必要なビルドツールまたはテストツールがデフォルトのコンテナにインストールされていない。 rbe_ubuntu1604 構成を使用するビルドは、デフォルトで rbe-ubuntu16-04 コンテナには、多くの Bazel ビルドに共通するツールが含まれています。ただし、 デフォルトのコンテナにないツールが必要な場合は、 コンテナを作成する rbe-ubuntu16-04 それらのツールを含めます(後述)。

  • ビルドまたはテストのターゲットがリモート環境と互換性のないルールを使用している 詳しくは、 リモート実行用の Bazel ルールの調整 リモート実行との互換性の詳細。

rbe_ubuntu1604 CI 構成でカスタム コンテナを使用する

rbe-ubuntu16-04 コンテナは、次の URL で一般公開されています。

http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04

Container Registry から直接 pull することも、ソースからビルドすることもできます。「 次のセクションでは、両方のオプションについて説明します。

始める前に、gclouddockergit がインストールされていることを確認してください。 ソースからコンテナをビルドする場合は、最新の あることを確認します。

Container Registry から rbe-ubuntu16-04 を pull する

Container Registry から rbe-ubuntu16-04 コンテナを pull するには、次のコマンドを実行します。 次のコマンドを実行します。

gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum

sha256-checksum は、次の SHA256 チェックサム値に置き換えます。 最新のコンテナ

ソースから rbe-ubuntu16-04 コンテナをビルドする

ソースから rbe-ubuntu16-04 コンテナをビルドする手順は次のとおりです。

  1. bazel-toolchains リポジトリのクローンを作成します。

    git clone https://github.com/bazelbuild/bazel-toolchains
    
  2. 次の説明に沿って、ツールチェーン コンテナ ターゲットをセットアップし、コンテナをビルドします。 ツールチェーン コンテナ

  3. 新たにビルドされたコンテナを pull します。

    gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
    

カスタム コンテナの実行

カスタム コンテナを実行するには、次のいずれかを行います。

  • Container Registry からコンテナを pull した場合は、次のコマンドを実行します。 command:

    docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bash
    

    sha256-checksum は、次の SHA256 チェックサム値に置き換えます。 最新のコンテナ

  • ソースからコンテナをビルドした場合は、次のコマンドを実行します。

    docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
    

カスタム コンテナにリソースを追加する

Dockerfile または rules_docker でリソースを追加するか、 元のリソースの代替バージョンが rbe-ubuntu16-04 コンテナに作成されます。 Docker を初めて使用する場合は、以下をご覧ください。

たとえば、次の Dockerfile スニペットは my_tool_package をインストールします。

FROM gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
RUN apt-get update && yes | apt-get install -y my_tool_package

Container Registry にカスタム コンテナを push する

コンテナをカスタマイズしたら、コンテナ イメージをビルドし、 次のようなものです。

  1. コンテナ イメージをビルドします。

    docker build -t custom-container-name.
    docker tag custom-container-name gcr.io/project-id/custom-container-name
    
  2. コンテナ イメージを Container Registry に push します。

    gcloud docker -- push gcr.io/project-id/custom-container-name
    
  3. 次の URL に移動して、コンテナが push されたことを確認します。

    https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name

  4. カスタム コンテナの SHA256 チェックサムをメモしておきます。次の操作が必要です。 後でビルド プラットフォームの定義で使用します。

  5. 一般公開の説明に沿って、コンテナを公開アクセス用に構成する 説明されているように、 画像を公開する

    詳細については、次をご覧ください: イメージの push と pull

ビルド プラットフォームの定義を指定する

Bazel プラットフォームの構成を カスタム ツールチェーン構成(Bazel でツールチェーンを選択可能) 適切なハードウェア/ソフトウェア プラットフォームに適したものである必要があります。生成 自動的に有効なプラットフォームになる場合は、WORKSPACE に 追加を含む名前が buildkite_configrbe_autoconfig ターゲット カスタム コンテナを選択します。この設定の詳細については、 rbe_autoconfig の最新のドキュメント。