Trang này dành cho chủ sở hữu và nhà bảo trì kho lưu trữ quy tắc Bazel. Hướng dẫn này mô tả cách định cấu hình hệ thống Tích hợp liên tục (CI) Bazel cho kho lưu trữ để kiểm thử các quy tắc về khả năng tương thích với tình huống thực thi từ xa. Hướng dẫn trên trang này áp dụng cho các dự án được lưu trữ trong kho lưu trữ GitHub.
Điều kiện tiên quyết
Trước khi hoàn tất các bước trên trang này, hãy đảm bảo những điều sau:
- Kho lưu trữ GitHub của bạn thuộc tổ chức Bazel GitHub.
- Bạn đã định cấu hình Buildkite cho kho lưu trữ của mình như được mô tả trong bài viết Tích hợp liên tục Bazel.
Thiết lập Bazel CI để thử nghiệm
Trong tệp
.bazelci/presubmit.yml
, hãy làm như sau:a. Thêm cấu hình có tên
rbe_ubuntu1604
.b. Trong cấu hình
rbe_ubuntu1604
, hãy thêm các mục tiêu bản dựng và mục tiêu kiểm thử mà bạn muốn kiểm thử dựa trên quá trình thực thi từ xa.Thêm kho lưu trữ
bazel-toolchains
GitHub vào tệpWORKSPACE
, được ghim vào bản phát hành mới nhất. Đồng thời thêm mục tiêurbe_autoconfig
có tênbuildkite_config
. Ví dụ này tạo cấu hình chuỗi công cụ để thực thi từ xa bằng BuildKite CI chorbe_ubuntu1604
.
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
Gửi yêu cầu xuất dữ liệu cùng với các thay đổi của bạn đến tệp
presubmit.yml
. (Xem ví dụ về yêu cầu lấy dữ liệu.)Để xem kết quả về bản dựng, hãy nhấp vào Details (Thông tin chi tiết) về yêu cầu kiểm tra yêu cầu kéo RBE (Ubuntu 16.04) trên GitHub, như minh hoạ trong hình dưới đây. Đường liên kết này sẽ hoạt động sau khi yêu cầu lấy dữ liệu được hợp nhất và các bài kiểm thử CI đã chạy. (Xem kết quả ví dụ.)
(Không bắt buộc) Đặt quy trình kiểm thử kiểm thử bazel (RBE (RBE (Ubuntu 16.04))) thành quy trình kiểm thử bắt buộc phải vượt qua trước khi hợp nhất quy tắc bảo vệ nhánh của bạn. Chế độ cài đặt này nằm trên GitHub, trong phần Settings > Branches > Branch Defense rules (Cài đặt > Nhánh > Quy tắc bảo vệ nhánh) như minh hoạ trong hình sau.
Khắc phục sự cố về bản dựng và hoạt động kiểm thử không thành công
Nếu bản dựng hoặc quá trình kiểm thử không thành công thì nguyên nhân có thể là do:
Công cụ kiểm thử hoặc bản dựng bắt buộc không được cài đặt trong vùng chứa mặc định. Các bản dựng sử dụng cấu hình
rbe_ubuntu1604
chạy theo mặc định bên trong vùng chứarbe-ubuntu16-04
, bao gồm các công cụ phổ biến cho nhiều bản dựng Bazel. Tuy nhiên, nếu các quy tắc của bạn yêu cầu các công cụ không có trong vùng chứa mặc định, bạn phải tạo một vùng chứa tuỳ chỉnh dựa trên vùng chứarbe-ubuntu16-04
và thêm các công cụ đó như mô tả ở phần sau.Các mục tiêu xây dựng hoặc kiểm thử đang sử dụng các quy tắc không tương thích với thực thi từ xa. Xem Điều chỉnh các quy tắc Bazel để thực thi từ xa để biết thông tin chi tiết về khả năng tương thích với thực thi từ xa.
Sử dụng vùng chứa tuỳ chỉnh trong cấu hình CI rbe_ubuntu1604
Vùng chứa rbe-ubuntu16-04
có sẵn công khai tại URL sau:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
Bạn có thể lấy trực tiếp từ Container Registry hoặc tạo mã từ nguồn. Các phần tiếp theo mô tả cả hai tuỳ chọn.
Trước khi bắt đầu, hãy đảm bảo bạn đã cài đặt gcloud
, docker
và git
.
Nếu đang tạo vùng chứa từ nguồn, bạn cũng phải cài đặt phiên bản Bazel mới nhất.
Kéo rbe-ubuntu16-04 từ Container Registry
Để kéo vùng chứa rbe-ubuntu16-04
từ Container Registry, hãy chạy lệnh sau:
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
Thay thế sha256-checksum bằng giá trị tổng kiểm SHA256 cho vùng chứa mới nhất.
Xây dựng vùng chứa rbe-ubuntu16-04 từ nguồn
Để tạo vùng chứa rbe-ubuntu16-04
từ nguồn, hãy làm như sau:
Sao chép kho lưu trữ
bazel-toolchains
:git clone https://github.com/bazelbuild/bazel-toolchains
Thiết lập mục tiêu vùng chứa chuỗi công cụ và tạo vùng chứa như đã giải thích trong Vùng chứa chuỗi công cụ.
Kéo vùng chứa mới tạo:
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
Chạy vùng chứa tuỳ chỉnh
Để chạy vùng chứa tuỳ chỉnh, hãy làm theo một trong những cách sau:
Nếu bạn đã kéo vùng chứa từ Container Registry, hãy chạy lệnh sau:
docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bash
Thay thế
sha256-checksum
bằng giá trị tổng kiểm SHA256 cho vùng chứa mới nhất.Nếu bạn đã tạo vùng chứa từ nguồn, hãy chạy lệnh sau:
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
Thêm tài nguyên vào vùng chứa tuỳ chỉnh
Sử dụng Dockerfile
hoặc rules_docker
để thêm tài nguyên hoặc phiên bản thay thế của tài nguyên ban đầu vào vùng chứa rbe-ubuntu16-04
.
Nếu bạn mới sử dụng Docker, hãy đọc những nội dung sau:
Ví dụ: đoạn mã Dockerfile
sau đây sẽ cài đặt 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
Đẩy vùng chứa tuỳ chỉnh đến Container Registry
Sau khi bạn đã tuỳ chỉnh vùng chứa, hãy tạo hình ảnh vùng chứa và đẩy hình ảnh đó vào Sổ đăng ký vùng chứa như sau:
Tạo hình ảnh vùng chứa:
docker build -t custom-container-name.
docker tag custom-container-name gcr.io/project-id/custom-container-name
Đẩy hình ảnh vùng chứa đến Container Registry:
gcloud docker -- push gcr.io/project-id/custom-container-name
Di chuyển đến URL sau để xác minh vùng chứa đã được đẩy:
https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name
Ghi lại tổng kiểm SHA256 của vùng chứa tuỳ chỉnh. Sau này, bạn sẽ cần cung cấp thông tin này trong định nghĩa nền tảng xây dựng.
Định cấu hình vùng chứa để truy cập công khai theo mô tả trong phần có thể truy cập công khai như giải thích trong phần Phân phát hình ảnh công khai.
Để biết thêm thông tin, hãy xem phần Đẩy và kéo hình ảnh.
Chỉ định định nghĩa nền tảng xây dựng
Bạn phải đưa cấu hình nền tảng Bazel vào cấu hình chuỗi công cụ tuỳ chỉnh để Bazel có thể chọn một chuỗi công cụ phù hợp với nền tảng phần cứng/phần mềm mong muốn. Để tự động tạo một nền tảng hợp lệ, bạn có thể thêm vào WORKSPACE
mục tiêu rbe_autoconfig
có tên buildkite_config
, trong đó có các thuộc tính bổ sung để chọn vùng chứa tuỳ chỉnh của bạn. Để biết thông tin chi tiết về cách thiết lập này, hãy đọc tài liệu mới nhất cho rbe_autoconfig
.