本頁面的適用對象為 Bazel 規則存放區的擁有者和維護者。以下說明如何為存放區設定 Bazel 持續整合 (CI) 系統,以測試規則是否與遠端執行情境的相容性。本頁的操作說明適用於儲存在 GitHub 存放區的專案。
必備條件
完成這個頁面上的步驟之前,請確認下列事項:
- 您的 GitHub 存放區是 Bazel GitHub 機構的一部分。
- 您已按照 Bazel 持續整合中的說明為存放區設定 Buildkite。
設定 Bazel CI 以進行測試
在您的
.bazelci/presubmit.yml
檔案中,執行下列操作:a. 新增名為
rbe_ubuntu1604
的設定。b. 在
rbe_ubuntu1604
設定中,新增要用於遠端執行測試的建構和測試目標。將
bazel-toolchains
GitHub 存放區新增至WORKSPACE
檔案,並固定至最新版本。此外,也新增名為buildkite_config
的rbe_autoconfig
目標。本範例會為rbe_ubuntu1604
使用 BuildKite CI 建立工具鍊設定,以進行遠端執行。
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
將包含變更內容的提取要求傳送至
presubmit.yml
檔案。(請參閱提取要求範例)。如要查看建構結果,請在 GitHub 中,按一下 RBE (Ubuntu 16.04) 提取要求檢查的「Details」(詳細資料),如下圖所示。在提取要求合併且 CI 測試執行後,這個連結就會顯示。(請參閱結果範例)。
(選用) 將 bazel test (RBE (Ubuntu 16.04)) 檢查設為測試所需的測試,才能在分支版本保護規則中合併。設定位於 GitHub 的「Settings」>「Branches」>「Branch Protection rules」,如下圖所示。
針對失敗的建構作業和測試進行疑難排解
如果建構或測試失敗,原因可能如下:
預設的容器中未安裝必要的建構或測試工具。 根據預設,使用
rbe_ubuntu1604
設定執行的建構作業會在rbe-ubuntu16-04
容器中執行,其中包含許多 Bazel 建構作業的常用工具。不過,如果您的規則需要預設容器中沒有的工具,您必須根據rbe-ubuntu16-04
容器建立自訂容器,並依後續說明加入這些工具。建構或測試目標所使用的規則與遠端執行不相容。如要進一步瞭解與遠端執行作業的相容性,請參閱「調整適用於遠端執行的 Bazel 規則」。
在 rbe_ubuntu1604 CI 設定中使用自訂容器
您可以前往下列網址公開 rbe-ubuntu16-04
容器:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
您可以直接從 Container Registry 提取,或是從原始碼建構。以下各節將說明這兩種選項。
開始之前,請先確認已安裝 gcloud
、docker
和 git
。
如果您是從原始碼建構容器,您還必須安裝最新版本的 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
容器,請執行下列操作:
複製
bazel-toolchains
存放區:git clone https://github.com/bazelbuild/bazel-toolchains
按照工具鍊容器的說明設定工具鍊容器目標,並建構容器。
提取剛建構的容器:
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
替換為最新容器的 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
自訂容器後,請建構容器映像檔,並將映像檔推送至 Container Registry,如下所示:
建構容器映像檔:
docker build -t custom-container-name.
docker tag custom-container-name gcr.io/project-id/custom-container-name
將容器映像檔推送到 Container Registry:
gcloud docker -- push gcr.io/project-id/custom-container-name
前往下列網址,確認容器已推送完成:
https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name
記下自訂容器的 SHA256 總和檢查碼。稍後您將需要在建構平台定義中提供該名稱。
按照公開提供映像檔中的說明,為公開存取設定容器。
詳情請參閱推送及提取映像檔。
指定建構平台定義
您必須在自訂工具鍊設定中加入 Bazel 平台設定,以允許 Bazel 選擇適合所需硬體/軟體平台的工具鍊。如要自動產生有效的平台,請將名為 buildkite_config
的 rbe_autoconfig
目標新增至 WORKSPACE
目標,該目標包含選取自訂容器的其他端點。如要進一步瞭解這項設定,請參閱 rbe_autoconfig
的最新說明文件。