Uzaktan Yürütme Kurallarını Test Etmek için Bazel CI'yı Yapılandırma

Sorun bildirme Kaynağı görüntüleme Nightly · 7.4 .

Bu sayfa, Bazel kural depolarının sahipleri ve sorumluları içindir. Bu makalede, kurallarınızı uzaktan yürütme senaryosuyla uyumluluk açısından test etmek için deponuz için Bazel Sürekli Entegrasyon (CI) sisteminin nasıl yapılandırılacağı açıklanmaktadır. Bu sayfadaki talimatlar, GitHub depolarında depolanan projeler için geçerlidir.

Ön koşullar

Bu sayfadaki adımları tamamlamadan önce aşağıdakilerden emin olun:

Bazel CI'yi test için ayarlama

  1. .bazelci/presubmit.yml dosyanızda aşağıdakileri yapın:

    a. rbe_ubuntu1604 adlı bir yapılandırma ekleyin.

    b. rbe_ubuntu1604 yapılandırmasında, uzaktan yürütmeyle test etmek istediğiniz derleme ve test hedeflerini ekleyin.

  2. bazel-toolchains GitHub deposunu WORKSPACE dosyanıza en son sürüme sabitlenmiş şekilde ekleyin. Ayrıca buildkite_config adlı bir rbe_autoconfig hedefi de ekleyin. Bu örnekte, rbe_ubuntu1604 için BuildKite CI ile uzaktan yürütme için araç zinciri yapılandırması oluşturulur.

load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
  1. presubmit.yml dosyasında yaptığınız değişiklikleri içeren bir pull isteği gönderin. (Örnek çekme isteğine bakın.)

  2. Derleme sonuçlarını görüntülemek için aşağıdaki şekilde gösterildiği gibi, GitHub'da RBE (Ubuntu 16.04) pull isteği kontrolü için Ayrıntılar'ı tıklayın. Bu bağlantı, pull isteği birleştirildikten ve CI testleri çalıştırıldıktan sonra kullanılabilir hale gelir. (Örnek sonuçlara bakın.)

    Örnek sonuçlar

  3. (İsteğe bağlı) bazel test (RBE (Ubuntu 16.04)) kontrolünü, dal koruma kuralınızda birleştirme işleminden önce geçmesi gereken bir test olarak ayarlayın. Bu ayar, aşağıdaki şekilde gösterildiği gibi GitHub'daki Ayarlar > Dallar > Dal koruma kuralları bölümünde bulunur.

    Şube koruma kuralları ayarları

Başarısız derleme ve testlerle ilgili sorunları giderme

Derleme veya testleriniz başarısız olursa bunun nedeni aşağıdakilerden biri olabilir:

  • Zorunlu derleme veya test araçları varsayılan kapsayıcıya yüklenmemiş. rbe_ubuntu1604 yapılandırmasını kullanan derlemeler varsayılan olarak birçok Bazel derlemesinde ortak olan araçları içeren bir rbe-ubuntu16-04 kapsayıcı içinde çalışır. Ancak kurallarınızda varsayılan kapsayıcıda bulunmayan araçlar gerekiyorsa rbe-ubuntu16-04 kapsayıcısını temel alan özel bir kapsayıcı oluşturmanız ve daha sonra açıklandığı gibi bu araçları eklemeniz gerekir.

  • Derleme veya test hedefleri, uzaktan yürütmeyle uyumlu olmayan kurallar kullanıyor. Uzaktan yürütmeyle uyumluluk hakkında ayrıntılı bilgi için Bazel Kurallarını Uzaktan Yürütme İçin Uyarlama başlıklı makaleyi inceleyin.

rbe_ubuntu1604 CI yapılandırmasında özel bir kapsayıcı kullanma

rbe-ubuntu16-04 kapsayıcısı aşağıdaki URL'den herkese açık:

http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04

Doğrudan Container Registry'den alabilir veya kaynaktan derleyebilirsiniz. Aşağıdaki bölümlerde her iki seçenek de açıklanmaktadır.

Başlamadan önce gcloud, docker ve git uygulamalarını yüklediğinizden emin olun. Kapsülü kaynaktan derliyorsanız Bazel'in en son sürümünü de yüklemeniz gerekir.

rbe-ubuntu16-04'ü Container Registry'den alma

rbe-ubuntu16-04 container'ını Container Registry'den çekmek için aşağıdaki komutu çalıştırın:

gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum

sha256-checksum değerini en son kapsayıcı için SHA256 sağlama değeriyle değiştirin.

rbe-ubuntu16-04 kapsayıcısını kaynaktan derleme

rbe-ubuntu16-04 kapsayıcısını kaynaktan derlemek için aşağıdakileri yapın:

  1. bazel-toolchains deposunu klonlayın:

    git clone https://github.com/bazelbuild/bazel-toolchains
    
  2. Araç zinciri kapsayıcı hedefleri ayarlayın ve kapsayıcıyı Araç Zinciri Kapsayıcıları bölümünde açıklandığı şekilde oluşturun.

  3. Yeni oluşturulan kapsayıcıyı çekin:

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

Özel kapsayıcıyı çalıştırma

Özel kapsayıcıyı çalıştırmak için aşağıdakilerden birini yapın:

  • Container'ı Container Registry'den çektiyseniz aşağıdaki komutu çalıştırın:

    docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bash
    

    sha256-checksum değerini, en son container için SHA256 sağlama toplamı değeriyle değiştirin.

  • Container'ı kaynaktan derlediyseniz aşağıdaki komutu çalıştırın:

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

Özel kapsayıcıya kaynak ekleme

rbe-ubuntu16-04 kapsayıcısına kaynak veya orijinal kaynakların alternatif sürümlerini eklemek için Dockerfile veya rules_docker kullanın. Docker'da yeniyseniz aşağıdakileri okuyun:

Örneğin, aşağıdaki Dockerfile snippet'i my_tool_package'ı yükler:

FROM gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
RUN apt-get update && yes | apt-get install -y my_tool_package

Özel container'ı Container Registry'ye gönderme

Kapsayıcıyı özelleştirdikten sonra, container görüntüsünü derleyin ve aşağıdaki şekilde Container Registry'ye aktarın:

  1. Container görüntüsünü oluşturun:

    docker build -t custom-container-name.
    docker tag custom-container-name gcr.io/project-id/custom-container-name
    
  2. Container görüntüsünü Container Registry'ye aktarın:

    gcloud docker -- push gcr.io/project-id/custom-container-name
    
  3. Kapsayıcının aktarıldığını doğrulamak için aşağıdaki URL'ye gidin:

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

  4. Özel kapsayıcınızın SHA256 sağlama toplamını not edin. Daha sonra bu değeri derleme platformu tanımınıza eklemeniz gerekir.

  5. Resimleri herkese açık olarak yayınlama bölümünde açıklandığı şekilde kapsayıcıyı herkese açık olarak erişilebilir şekilde yapılandırın.

    Daha fazla bilgi için Resim yayınlama ve alma başlıklı makaleyi inceleyin.

Derleme platformu tanımını belirtme

Özel araç zinciri yapılandırmanıza bir Bazel platform yapılandırması eklemeniz gerekir. Bu, Bazel'in istenen donanım/yazılım platformuna uygun bir araç zinciri seçmesine olanak tanır. Geçerli bir platformu otomatik olarak oluşturmak için WORKSPACE'ünüze rbe_autoconfig adlı bir buildkite_config hedefi ekleyebilirsiniz. Bu hedef, özel kapsayıcınızı seçmek için ek özellikler içerir. Bu kurulumla ilgili ayrıntılar için rbe_autoconfig ile ilgili güncel dokümanları okuyun.