設定 Bazel CI 來測試遠端執行的規則

回報問題 查看來源 。 。 。 。 夜間。 。 7.3 。 。 7.2 。 。 7.1 。 。 7.0 。 。 6.5

本頁資訊適用於 Bazel 規則存放區的擁有者和維護人員。這項服務 說明如何設定 Bazel 持續整合 (CI) 系統 方便您測試規則,確保規則與遠端執行作業的相容性 情境。本頁面的操作說明適用於儲存在 存取 Cloud IAM 存放區

必要條件

完成本頁的步驟之前,請確認下列事項:

設定 Bazel CI 進行測試

  1. 在您的 .bazelci/presubmit.yml 檔案中執行下列操作:

    a. 新增名為 rbe_ubuntu1604 的設定。

    b. 在 rbe_ubuntu1604 設定中,新增您要對遠端執行作業進行測試的建構和測試目標。

  2. 新增 bazel-toolchains 已固定至 WORKSPACE 檔案的 GitHub 存放區 最新版本。其他 新增名為「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 檔案。(詳情請參閱 提取要求範例)。

  2. 如要查看建構結果,請按一下 RBE (Ubuntu) 的「詳細資料」 16.04) GitHub 中的提取要求檢查,如下圖所示。這個連結 提取要求合併及持續整合測試之後,即可使用 執行。(詳情請參閱 結果範例)。

    搜尋結果範例

  3. (選用) 將 bazel test (RBE (RBE (RBE) 16.04)) 檢查設為測試 才能合併至分支保護規則設定 位於 GitHub 的 [Settings] (設定) > 分支版本 >分支版本保護規則 如下圖所示

    分支版本保護規則設定

排解建構和測試失敗的問題

如果建構或測試失敗,原因可能如下:

  • 預設容器中未安裝必要的建構或測試工具。 預設會使用 rbe_ubuntu1604 設定在 rbe-ubuntu16-04 ,其中提供許多 Bazel 建構作業通用的工具不過, 您的規則需要預設容器中沒有的工具,您必須 可根據實際工作環境流量 rbe-ubuntu16-04敬上 並納入這些工具

  • 建構或測試目標使用的規則與遠端設定不相容 執行作業詳情請見 調整 Remote Execution 的 Bazel 規則: 與遠端執行作業的相容性詳細資料

在 rbe_ubuntu1604 CI 設定中使用自訂容器

rbe-ubuntu16-04 容器可於以下網址公開存取:

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

您可以直接從 Container Registry 提取,或是從原始碼建構。 下一節將說明這兩個選項。

開始之前,請確認你已安裝 gclouddockergit。 如果您是從原始碼建構容器,也必須安裝最新版的容器 Bazel 版本

從 Container Registry 提取 rbe-ubuntu16-04

如要從 Container Registry 提取 rbe-ubuntu16-04 容器,請執行 以下指令:

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. 提取新建立的容器:

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

執行自訂容器

如要執行自訂容器,請執行下列其中一項操作:

  • 如果您是從 Container Registry 提取容器,請執行下列指令: 指令:

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

    請將 sha256-checksum 替換為 「最新容器」

  • 如果從原始碼建構容器,請執行下列指令:

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

將資源新增至自訂容器

請使用 Dockerfilerules_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

自訂容器之後,請建構容器映像檔 Container Registry,如下所示:

  1. 建構容器映像檔:

    docker build -t custom-container-name.
    docker tag custom-container-name gcr.io/project-id/custom-container-name
    
  2. 將容器映像檔推送到 Container Registry:

    gcloud docker -- push gcr.io/project-id/custom-container-name
    
  3. 請前往下列網址,確認容器已推送完成:

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

  4. 請記下自訂容器的 SHA256 總和檢查碼。您需要 以便稍後在建構平台定義中提供這些資訊

  5. 按照公開所述的方式設定容器以供公開存取 存取操作說明 公開提供圖片

    若需更多資訊,請參閲 推送及提取映像檔

指定建構平台定義

您必須在叢集中納入 Bazel 平台設定 自訂工具鍊設定,可讓 Bazel 選取工具鍊 所需的硬體/軟體平台如要產生 自動是有效的平台,您可以將其新增至 WORKSPACE 名為「buildkite_config」的 rbe_autoconfig 個目標,其中包含其他 來選取自訂容器如要進一步瞭解這項設定,請參閱 查看 rbe_autoconfig 的最新說明文件