Mengonfigurasi Bazel CI untuk Menguji Aturan untuk Remote Execution

Laporkan masalah Lihat sumber Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Halaman ini ditujukan untuk pemilik dan pengelola repositori aturan Bazel. Dokumen ini menjelaskan cara mengonfigurasi sistem Continuous Integration (CI) Bazel untuk repositori Anda guna menguji kompatibilitas aturan Anda terhadap 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-hal berikut:

Menyiapkan CI Bazel untuk pengujian

  1. 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.

  2. Tambahkan repositori GitHubbazel-toolchains ke file WORKSPACE Anda, yang disematkan ke rilis terbaru. Tambahkan juga target rbe_autoconfig dengan nama buildkite_config. Contoh ini membuat konfigurasi toolchain untuk eksekusi jarak jauh dengan BuildKite CI untuk rbe_ubuntu1604.

load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
  1. Kirim permintaan penarikan dengan perubahan Anda ke file presubmit.yml. (Lihat contoh pull request.)

  2. Untuk melihat hasil build, klik Detail 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.)

    Hasil contoh

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

    Setelan aturan perlindungan cabang

Memecahkan masalah build dan pengujian yang gagal

Jika build atau pengujian Anda gagal, kemungkinan hal ini disebabkan oleh:

  • Alat build atau pengujian yang diperlukan tidak diinstal di penampung default. Build yang menggunakan konfigurasi rbe_ubuntu1604 berjalan secara default di dalam container rbe-ubuntu16-04, yang mencakup alat umum untuk banyak build Bazel. Namun, jika aturan Anda memerlukan alat yang tidak ada dalam container default, Anda harus membuat container kustom berdasarkan container rbe-ubuntu16-04 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 detail tentang kompatibilitas dengan eksekusi jarak jauh.

Menggunakan container kustom 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 menariknya langsung dari Container Registry atau membangunnya dari sumber. Bagian berikut menjelaskan kedua opsi tersebut.

Sebelum memulai, pastikan Anda telah menginstal gcloud, docker, dan git. Jika Anda membangun container dari sumber, Anda juga harus menginstal Bazel versi terbaru.

Mengambil rbe-ubuntu16-04 dari Container Registry

Untuk menarik 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 container rbe-ubuntu16-04 dari sumber

Untuk mem-build container rbe-ubuntu16-04 dari sumber, lakukan hal berikut:

  1. Membuat cloning bazel-toolchains repositori:

    git clone https://github.com/bazelbuild/bazel-toolchains
  2. Siapkan target penampung toolchain dan bangun penampung seperti yang dijelaskan dalam Toolchain Containers.

  3. Tarik container yang baru dibuat:

    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 menarik container dari Container Registry, jalankan perintah 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 membangun 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 penampung rbe-ubuntu16-04. Jika Anda baru menggunakan Docker, baca artikel 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, bangun image container dan kirimkan ke Container Registry sebagai berikut:

  1. Build image container:

    docker build -t custom-container-name.
    docker tag custom-container-name gcr.io/project-id/custom-container-name
  2. Kirim image container ke Container Registry:

    gcloud docker -- push gcr.io/project-id/custom-container-name
  3. Buka URL berikut untuk memverifikasi bahwa penampung telah di-push:

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

  4. Catat checksum SHA256 dari container kustom Anda. Anda harus memberikannya dalam definisi platform build nanti.

  5. Konfigurasi container untuk akses publik seperti yang dijelaskan dalam Menayangkan gambar 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 menyertakan atribut tambahan untuk memilih penampung kustom Anda. Untuk mengetahui detail penyiapan ini, baca dokumentasi terbaru untuk rbe_autoconfig.