Định cấu hình Bazel CI để kiểm tra các quy tắc thực thi từ xa

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Báo cáo sự cố Xem nguồn

Trang này dành cho chủ sở hữu và người 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 Bazel (CI) cho kho lưu trữ của bạn để kiểm tra các quy tắc về khả năng tương thích với trường hợp 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:

Thiết lập CI Bazel để kiểm thử

  1. 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à kiểm thử mà bạn muốn kiểm thử để thực thi từ xa.

  2. Thêm kho lưu trữbazel-toolchains GitHub vào tệp WORKSPACE, được ghim vào bản phát hành mới nhất. Ngoài ra, hãy thêm một mục tiêu rbe_autoconfig có tên buildkite_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 cho rbe_ubuntu1604.

load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
  1. Gửi yêu cầu gộp các thay đổi của bạn vào tệp presubmit.yml. (Xem ví dụ về yêu cầu gộp.)

  2. Để xem kết quả về bản dựng, hãy nhấp vào Chi tiết để kiểm tra yêu cầu kéo RBE (Ubuntu 16.04) trong GitHub, như trong hình bên dưới. Đường liên kết này sẽ xuất hiện sau khi hợp nhất yêu cầu kéo và chạy thử nghiệm CI. (Xem ví dụ về kết quả.)

    Kết quả mẫu

  3. (Không bắt buộc) Đặt quy trình kiểm tra bazel (RBE (Ubuntu 16.04)) làm kiểm thử cần thiết để vượt qua trước khi hợp nhất trong quy tắc bảo vệ nhánh. Chế độ cài đặt này nằm trong GitHub trong phần Cài đặt > Nhánh > Quy tắc bảo vệ nhánh, như minh họa trong hình sau.

    Cài đặt quy tắc bảo vệ nhánh

Khắc phục sự cố các bản dựng và thử nghiệm không thành công

Nếu bản dựng hoặc thử nghiệm của bạn không thành công, thì nguyên nhân có thể là do những nguyên nhân sau:

  • Các công cụ thử nghiệm hoặc bản dựng bắt buộc không được cài đặt trong vùng chứa mặc định. Theo mặc định, các bản dựng sử dụng cấu hình rbe_ubuntu1604 sẽ chạy bên trong vùng chứa rbe-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 quy tắc yêu cầu công cụ không có trong vùng chứa mặc định, thì bạn phải tạo vùng chứa tùy chỉnh dựa trên vùng chứa rbe-ubuntu16-04 và bao gồm các công cụ đó như mô tả sau.

  • Mục tiêu bản dựng hoặc thử nghiệm đang sử dụng các quy tắc không tương thích với quy trình thực thi từ xa. Xem bài viết Điều chỉnh các quy tắc của Bazel để thực thi từ xa để biết thông tin chi tiết về khả năng tương thích với tính năng thực thi từ xa.

Sử dụng vùng chứa tùy chỉnh trong cấu hình rbe_ubuntu1604 CI

Vùng chứa rbe-ubuntu16-04 được cung cấp công khai tại URL sau:

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

Bạn có thể trực tiếp lấy dữ liệu này từ sổ đăng ký vùng chứa hoặc tạo 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, dockergit. 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ừ Đăng ký vùng chứa

Để lấy vùng chứa rbe-ubuntu16-04 từ Sổ đăng ký vùng chứa, 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:

  1. Hãy sao chép kho lưu trữ bazel-toolchains:

    git clone https://github.com/bazelbuild/bazel-toolchains
    
  2. Thiết lập các mục tiêu vùng chứa chuỗi công cụ và tạo vùng chứa như được giải thích trong Vùng chứa chuỗi công cụ.

  3. Kéo vùng chứa mới được tạo:

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

Chạy vùng chứa tùy 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ừ Đăng ký vùng chứa, 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 tùy chỉnh

Hãy 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 gốc 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:

Chẳng hạn, đoạn mã Dockerfile sau đây 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 lên Hệ thống tên miền vùng chứa

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 Đăng ký vùng chứa như sau:

  1. 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
    
  2. Đẩy hình ảnh vùng chứa vào Đăng ký vùng chứa:

    gcloud docker -- push gcr.io/project-id/custom-container-name
    
  3. Hãy chuyển đến URL sau để xác minh rằng vùng chứa đã được đẩy:

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

  4. Ghi lại tổng kiểm SHA256 của vùng chứa tùy chỉnh. Bạn sẽ cần cung cấp thuộc tính này trong định nghĩa về nền tảng xây dựng sau này.

  5. Định cấu hình vùng chứa để truy cập công khai như mô tả trong phần có thể truy cập công khai như được 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 để cho phép Bazel 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, bao gồm cả các thuộc tính bổ sung để chọn vùng chứa tuỳ chỉnh. Để 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 về rbe_autoconfig.