Mengonfigurasi Bazel CI untuk Menguji Aturan untuk Eksekusi Jarak Jauh

Tetap teratur dengan koleksi Simpan dan kategorikan konten berdasarkan preferensi Anda.
Laporkan masalah Lihat sumber

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

Menyiapkan Bazel CI 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 diuji terhadap eksekusi jarak jauh.

  2. Tambahkan repositori GitHubbazel-toolchains ke file WORKSPACE, yang disematkan ke rilis terbaru. Selain itu, tambahkan 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 pull bersama perubahan Anda ke file presubmit.yml. (Lihat contoh permintaan pull.)

  2. Untuk melihat hasil build, klik Details untuk pemeriksaan permintaan pull RBE (Ubuntu 16.04) di GitHub, seperti yang ditampilkan dalam gambar di bawah. Link ini 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 diperlukan untuk lulus sebelum digabungkan dalam aturan perlindungan cabang Anda. Setelan ini berada di GitHub di Setelan > Cabang > Aturan perlindungan cabang, seperti yang ditunjukkan pada gambar berikut.

    Setelan aturan perlindungan cabang

Memecahkan masalah build dan pengujian yang gagal

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

  • Alat build atau pengujian yang diperlukan tidak diinstal di penampung default. Build menggunakan konfigurasi rbe_ubuntu1604 yang dijalankan secara default di dalam container rbe-ubuntu16-04, yang mencakup alat yang umum untuk banyak build Bazel. Namun, jika aturan Anda memerlukan alat yang tidak ada di penampung default, Anda harus membuat penampung kustom berdasarkan penampung rbe-ubuntu16-04 dan menyertakan alat tersebut seperti yang dijelaskan nanti.

  • Target build atau pengujian menggunakan aturan yang tidak kompatibel dengan eksekusi jarak jauh. Baca artikel Mengadaptasi Aturan Bazel untuk Eksekusi Jarak Jauh untuk mengetahui detail tentang kompatibilitas dengan eksekusi jarak jauh.

Menggunakan container kustom di 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 membuatnya 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.

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

Membuat container rbe-ubuntu16-04 dari sumber

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

  1. Clone repositori bazel-toolchains:

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

  3. Menarik container yang baru dibuat:

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

Menjalankan penampung kustom

Untuk menjalankan penampung 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 membuat container dari sumber, jalankan perintah berikut:

    docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
    

Menambahkan resource ke penampung kustom

Gunakan Dockerfile atau rules_docker untuk menambahkan resource atau versi alternatif resource asli ke penampung rbe-ubuntu16-04. Jika Anda baru menggunakan Docker, baca referensi 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 penampung kustom ke Container Registry

Setelah Anda menyesuaikan penampung, buat image container dan kirim ke Container Registry seperti berikut:

  1. Buat image container:

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

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

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

  4. Catat checksum SHA256 penampung kustom Anda. Anda harus menyediakannya dalam definisi platform build nanti.

  5. Konfigurasikan penampung untuk akses publik seperti yang dijelaskan dalam dapat diakses secara publik seperti yang dijelaskan dalam Menyalurkan gambar secara publik.

    Untuk informasi selengkapnya, lihat Mendorong dan Menarik Gambar.

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 target rbe_autoconfig ke WORKSPACE dengan nama buildkite_config yang menyertakan atribut tambahan untuk memilih penampung kustom. Untuk mengetahui detail tentang penyiapan ini, baca dokumentasi terbaru untuk rbe_autoconfig.