Halaman ini ditujukan untuk pemilik dan pengelola repositori aturan Bazel. Ini menjelaskan cara mengkonfigurasi sistem Bazel Continuous Integration (CI) untuk repositori untuk menguji kompatibilitas aturan Anda terhadap eksekusi jarak jauh yang lebih besar. Petunjuk di halaman ini berlaku untuk project yang disimpan di repositori GitHub Anda.
Prasyarat
Sebelum menyelesaikan langkah-langkah di halaman ini, pastikan hal berikut:
- Repositori GitHub merupakan bagian dari Organisasi GitHub Bazel.
- Anda telah mengonfigurasi Buildkite untuk repositori Anda seperti yang dijelaskan di Bazel Continuous Integration.
Menyiapkan Bazel CI untuk pengujian
Di file
.bazelci/presubmit.yml
Anda, lakukan hal berikut:a. Tambahkan konfigurasi bernama
rbe_ubuntu1604
.b. Di konfigurasi
rbe_ubuntu1604
, tambahkan target build dan pengujian yang ingin Anda uji terhadap eksekusi jarak jauh.Menambahkan
bazel-toolchains
Repositori GitHub ke fileWORKSPACE
Anda, disematkan ke rilis terbaru. Selain itu, tambahkan targetrbe_autoconfig
dengan 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 pada file
presubmit.yml
. (Lihat contoh permintaan pull.)Guna melihat hasil build, klik Details untuk RBE (Ubuntu 16.04) pull request check di GitHub, seperti yang ditunjukkan pada gambar di bawah ini. Tautan ini menjadi tersedia setelah permintaan pull digabungkan dan pengujian CI sudah berjalan. (Lihat contoh hasil.)
(Opsional) Setel pemeriksaan bazel test (RBE (Ubuntu 16.04)) sebagai pengujian yang diperlukan sebelum digabungkan dalam aturan perlindungan cabang. Pengaturan terletak di GitHub di Pengaturan > Cabang > Aturan perlindungan cabang, sebagaimana ditunjukkan dalam gambar berikut.
Memecahkan masalah build dan pengujian yang gagal
Jika build atau pengujian Anda gagal, kemungkinan hal ini terjadi karena hal berikut:
Alat pengujian atau build yang diperlukan tidak diinstal di container default. Build menggunakan konfigurasi
rbe_ubuntu1604
yang dijalankan secara default di dalamrbe-ubuntu16-04
yang mencakup alat yang umum digunakan pada banyak build Bazel. Namun, jika aturan mengharuskan alat yang tidak ada di penampung default, Anda harus membuat container kustom berdasarkanrbe-ubuntu16-04
dan sertakan alat-alat tersebut, seperti yang akan dijelaskan nanti.Target pembuatan atau pengujian menggunakan aturan yang tidak kompatibel dengan remote diselesaikan. Lihat Mengadaptasi Aturan Bazel untuk Eksekusi Jarak Jauh untuk detail tentang kompatibilitas dengan eksekusi jarak jauh.
Menggunakan kontainer khusus dalam konfigurasi CI rbe_ubuntu1604
Penampung 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 membangunnya dari sumber. Tujuan bagian selanjutnya menjelaskan kedua opsi tersebut.
Sebelum memulai, pastikan Anda telah menginstal gcloud
, docker
, dan git
.
Jika Anda membangun container dari sumber, Anda juga harus menginstal versi terbaru
versi Bazel.
Menarik 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-checksum
Ganti sha256-checksum dengan nilai checksum SHA256 untuk penampung terbaru.
Membangun kontainer rbe-ubuntu16-04 dari sumber
Untuk membuat penampung rbe-ubuntu16-04
dari sumber, lakukan hal berikut:
Membuat cloning
bazel-toolchains
repositori:git clone https://github.com/bazelbuild/bazel-toolchains
Menyiapkan target container toolchain dan membangun container seperti yang dijelaskan dalam Container Toolchain.
Tarik container yang baru dibuat:
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
Menjalankan container kustom
Untuk menjalankan penampung kustom, lakukan salah satu langkah berikut:
Jika Anda mengambil container dari Container Registry, jalankan perintah berikut berikut:
docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bash
Ganti
sha256-checksum
dengan nilai checksum SHA256 untuk penampung terbaru.Jika Anda membuat 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 informasi 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 Anda menyesuaikan container, bangun image container dan kirim ke Container Registry sebagai berikut:
Build image container:
docker build -t custom-container-name.
docker tag custom-container-name gcr.io/project-id/custom-container-name
Kirim image container ke Container Registry:
gcloud docker -- push gcr.io/project-id/custom-container-name
Buka URL berikut untuk memverifikasi bahwa penampung telah dikirim:
https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name
Catat checksum SHA256 container kustom Anda. Anda perlu sediakan dalam definisi platform build Anda nanti.
Mengonfigurasi penampung untuk akses publik seperti yang dijelaskan secara publik dapat diakses, sebagaimana dijelaskan dalam Menayangkan gambar secara publik.
Untuk informasi selengkapnya, lihat Mendorong dan Menarik Gambar.
Menentukan definisi platform build
Anda harus menyertakan konfigurasi platform Bazel di
konfigurasi toolchain kustom, yang memungkinkan Bazel untuk memilih toolchain
sesuai dengan platform perangkat
keras/perangkat lunak yang diinginkan. Untuk membuat
secara otomatis menjadi platform yang valid, Anda dapat menambahkan WORKSPACE
ke
Target rbe_autoconfig
dengan nama buildkite_config
yang mencakup
untuk memilih penampung kustom Anda. Untuk mengetahui detail tentang penyiapan ini, baca
dokumentasi terbaru untuk rbe_autoconfig
.