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

Sorun bildirin Kaynağı göster

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

Ön koşullar

Bu sayfadaki adımları tamamlamadan önce şunlardan emin olun:

Test için Bazel CI'yı 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ütmeye karşı test etmek istediğiniz derleme ve test hedeflerini ekleyin.

  2. bazel-toolchains GitHub deposunu WORKSPACE dosyanıza, en son sürüme sabitlenmiş olarak ekleyin. Ayrıca buildkite_config adında bir rbe_autoconfig hedefi ekleyin. Bu örnek, rbe_ubuntu1604 için BuildKite CI ile uzaktan yürütmeye yönelik araç zinciri yapılandırması oluşturur.

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 pull isteği bölümüne 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ı) Şube koruma kuralınızda birleştirmeden önce bazel test (RBE (Ubuntu 16.04)) kontrolünü geçmeniz gereken bir test olarak ayarlayın. Bu ayar, GitHub'da aşağıdaki şekilde gösterildiği gibi Ayarlar > Dallar > Dal koruma kuralları altında bulunur.

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

  • Gerekli derleme veya test araçları, varsayılan kapsayıcıda yüklü değil. Birçok Bazel derlemesinde ortak olarak kullanılan araçları içeren rbe-ubuntu16-04 container'ında varsayılan olarak çalıştırılan rbe_ubuntu1604 yapılandırmasını kullanarak derlemeler. Bununla birlikte, kurallarınız varsayılan kapsayıcıda bulunmayan araçlar gerektiriyorsa rbe-ubuntu16-04 kapsayıcısını temel alan özel bir kapsayıcı oluşturmanız ve bu araçları daha sonra açıklandığı şekilde dahil etmeniz gerekir.

  • Derleme veya test hedefleri, uzaktan yürütmeyle uyumlu olmayan kurallar kullanıyor. Uzaktan yürütmeyle uyumlulukla ilgili ayrıntılar için Uzaktan Yürütme İçin Bazel Kurallarını Uyarlama bölümüne bakın.

rbe_ubuntu1604 CI yapılandırmasında özel bir container kullanma

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

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

Kodu doğrudan Container Registry'den çekebilir veya kaynaktan derleyebilirsiniz. Sonraki 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. Kapsayıcıyı kaynaktan oluşturuyorsanız Bazel'in en yeni sürümünü de yüklemeniz gerekir.

Container Registry'den rbe-ubuntu16-04 çekme

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 container için SHA256 sağlama toplamı değeriyle değiştirin.

rbe-ubuntu16-04 container'ını kaynaktan derleme

rbe-ubuntu16-04 container'ı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 derlenen container'ı alın:

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

Özel container'ı çalıştırma

Özel container'ı çalıştırmak için aşağıdakilerden birini yapın:

  • Container'ı Container Registry'den aldıysanız 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.

  • Kapsayıcıyı kaynaktan oluşturduysanız aşağıdaki komutu çalıştırın:

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

Özel container'a kaynak ekleme

rbe-ubuntu16-04 kapsayıcısına kaynakları veya orijinal kaynakların alternatif sürümlerini eklemek için Dockerfile ya da rules_docker kullanın. Docker'ı kullanmaya yeni başladıysanız aşağıdaki bilgileri okuyun:

Örneğin, aşağıdaki Dockerfile snippet'i my_tool_package uygulamasını 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 aktarma

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 derleme platformu tanımınızda belirtmeniz gerekir.

  5. Container'ı, Görüntüleri herkese açık olarak sunma bölümünde açıklandığı gibi, herkesin erişebileceği şekilde yapılandırın.

    Daha fazla bilgi için Görüntü Aktarma ve Çekme bölümüne bakın.

Derleme platformu tanımını belirtme

Özel araç zinciri yapılandırmanıza, Bazel'in istenen donanım/yazılım platformuna uygun bir araç zinciri seçmesini sağlayan bir Bazel platformu yapılandırması eklemeniz gerekir. Otomatik olarak geçerli bir platform oluşturmak için WORKSPACE sayfanıza, özel container'ınızı seçecek başka katılımcılar içeren buildkite_config adında bir rbe_autoconfig hedefi ekleyebilirsiniz. Bu kurulumla ilgili ayrıntılar için rbe_autoconfig'in güncel dokümanlarını okuyun.