Mengonfigurasi Bazel CI untuk Menguji Aturan untuk Remote Execution

Laporkan masalah Lihat sumber Per Malam · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

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:

Menyiapkan Bazel CI untuk pengujian

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

  2. Menambahkan bazel-toolchains Repositori GitHub ke file WORKSPACE Anda, 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 dengan perubahan Anda pada file presubmit.yml. (Lihat contoh permintaan pull.)

  2. 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.)

    Hasil contoh

  3. (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.

    Setelan aturan perlindungan cabang

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 dalam rbe-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 berdasarkan rbe-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:

  1. Membuat cloning bazel-toolchains repositori:

    git clone https://github.com/bazelbuild/bazel-toolchains
    
  2. Menyiapkan target container toolchain dan membangun container seperti yang dijelaskan dalam Container Toolchain.

  3. 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:

  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 dikirim:

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

  4. Catat checksum SHA256 container kustom Anda. Anda perlu sediakan dalam definisi platform build Anda nanti.

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