Halaman ini ditujukan untuk pemilik dan pengelola repositori aturan Bazel. Halaman ini menjelaskan cara mengonfigurasi sistem Continuous Integration (CI) Bazel untuk repositori Anda guna menguji kompatibilitas aturan Anda dengan skenario eksekusi jarak jauh. Petunjuk di halaman ini berlaku untuk project yang disimpan di repositori GitHub.
Prasyarat
Sebelum menyelesaikan langkah-langkah di halaman ini, pastikan hal berikut:
- Repositori GitHub Anda adalah bagian dari organisasi GitHub Bazel.
- Anda telah mengonfigurasi Buildkite untuk repositori Anda seperti yang dijelaskan dalam Continuous Integration Bazel.
Menyiapkan CI Bazel untuk pengujian
Di file
.bazelci/presubmit.yml, lakukan hal berikut:a. Tambahkan konfigurasi bernama
rbe_ubuntu1604.b. Dalam konfigurasi
rbe_ubuntu1604, tambahkan target build dan pengujian yang ingin Anda uji terhadap eksekusi jarak jauh.Tambahkan repositori GitHub
bazel-toolchainske fileWORKSPACEAnda, yang disematkan ke rilis terbaru. Tambahkan juga targetrbe_autoconfigdengan namabuildkite_config. Contoh ini membuat konfigurasi toolchain untuk eksekusi jarak jauh dengan BuildKite CI untukrbe_ubuntu1604.
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")rbe_autoconfig(name = "buildkite_config")
Kirim permintaan pull dengan perubahan Anda ke file
presubmit.yml. (Lihat contoh permintaan pull.)Untuk melihat hasil build, klik Details untuk pemeriksaan permintaan pull RBE (Ubuntu 16.04) di GitHub, seperti yang ditunjukkan pada gambar di bawah. Link ini akan tersedia setelah permintaan pull digabungkan dan pengujian CI dijalankan. (Lihat contoh hasil.)

(Opsional) Tetapkan pemeriksaan bazel test (RBE (Ubuntu 16.04)) sebagai pengujian yang harus lulus sebelum menggabungkan aturan perlindungan cabang Anda. Setelan ini terletak di GitHub di Settings > Branches > Branch protection rules, seperti yang ditunjukkan pada gambar berikut.

Memecahkan masalah build dan pengujian yang gagal
Jika build atau pengujian Anda gagal, kemungkinan besar hal ini disebabkan oleh hal berikut:
Alat build atau pengujian yang diperlukan tidak diinstal di container default. Build yang menggunakan konfigurasi
rbe_ubuntu1604berjalan secara default di dalamrbe-ubuntu16-04container, yang mencakup alat yang umum untuk banyak build Bazel. Namun, jika aturan Anda memerlukan alat yang tidak ada di container default, Anda harus membuat container kustom berdasarkanrbe-ubuntu16-04container dan menyertakan alat tersebut seperti yang dijelaskan nanti.Target build atau pengujian menggunakan aturan yang tidak kompatibel dengan eksekusi jarak jauh. Lihat Menyesuaikan Aturan Bazel untuk Eksekusi Jarak Jauh untuk mengetahui detail tentang kompatibilitas dengan eksekusi jarak jauh.
Menggunakan container kustom dalam konfigurasi CI rbe_ubuntu1604
Container rbe-ubuntu16-04 tersedia secara publik di URL berikut:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
Anda dapat mengambilnya langsung dari Container Registry atau mem-build-nya dari sumber. Bagian berikutnya menjelaskan kedua opsi tersebut.
Sebelum memulai, pastikan Anda telah menginstal gcloud, docker, dan git.
Jika mem-build container dari sumber, Anda juga harus menginstal Bazel versi terbaru.
Mengambil rbe-ubuntu16-04 dari Container Registry
Untuk mengambil container rbe-ubuntu16-04 dari Container Registry, jalankan perintah berikut:
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksumGanti sha256-checksum dengan nilai checksum SHA256 untuk container terbaru.
Mem-build container rbe-ubuntu16-04 dari sumber
Untuk mem-build container rbe-ubuntu16-04 dari sumber, lakukan hal berikut:
Kloning repositori
bazel-toolchains:git clone https://github.com/bazelbuild/bazel-toolchainsSiapkan target container toolchain dan build container seperti yang dijelaskan dalam Container Toolchain.
Ambil container yang baru di-build:
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
Menjalankan container kustom
Untuk menjalankan container kustom, lakukan salah satu hal berikut:
Jika Anda mengambil container dari Container Registry, jalankan perintah berikut:
docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bashGanti
sha256-checksumdengan nilai checksum SHA256 untuk container terbaru.Jika Anda mem-build container dari sumber, jalankan perintah berikut:
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
Menambahkan resource ke container kustom
Gunakan Dockerfile atau
rules_docker untuk menambahkan resource atau
versi alternatif dari resource asli ke container rbe-ubuntu16-04.
Jika Anda baru menggunakan Docker, baca hal berikut:
Misalnya, cuplikan Dockerfile berikut menginstal 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
Mengirim container kustom ke Container Registry
Setelah menyesuaikan container, build image container dan kirimkan ke Container Registry sebagai berikut:
Bangun image container:
docker build -t custom-container-name.docker tag custom-container-name gcr.io/project-id/custom-container-nameKirim image container ke Container Registry:
gcloud docker -- push gcr.io/project-id/custom-container-nameBuka URL berikut untuk memverifikasi bahwa container telah dikirim:
https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name
Catat checksum SHA256 container kustom Anda. Anda akan diminta untuk memberikannya dalam definisi platform build nanti.
Konfigurasi container untuk akses publik seperti yang dijelaskan dalam dapat diakses secara publik seperti yang dijelaskan dalam Menayangkan image secara publik.
Untuk mengetahui informasi selengkapnya, lihat Mengirim dan Mengambil Image.
Menentukan definisi platform build
Anda harus menyertakan konfigurasi platform Bazel dalam konfigurasi toolchain kustom, yang memungkinkan Bazel memilih toolchain
yang sesuai dengan platform hardware/software yang diinginkan. Untuk membuat
platform yang valid secara otomatis, Anda dapat menambahkan ke WORKSPACE target
rbe_autoconfig dengan nama buildkite_config, yang mencakup atribut tambahan
untuk memilih container kustom Anda. Untuk mengetahui detail tentang penyiapan ini, baca
dokumentasi terbaru untuk rbe_autoconfig.