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

Bu sayfa, Bazel kural depolarının sahipleri ve geliştiricileri için hazırlanmıştır. Bu bölümde, kurallarınızı uzaktan yürütme senaryosuyla uyumluluk açısından test etmek için 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 aşağıdakilerden emin olun:

Bazel CI'yı 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ına, uzaktan yürütmeye karşı test etmek istediğiniz derleme ve test hedeflerini ekleyin.

  2. GitHub deposunu bazel-toolchains WORKSPACE dosyanıza ekleyin ve en son sürüme sabitleyin. Ayrıca buildkite_config adlı bir rbe_autoconfig hedefi ekleyin. Bu örnekte, rbe_ubuntu1604 için BuildKite CI ile uzaktan yürütmeye yönelik 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 pull isteği bölümünü inceleyin.)

  2. Derleme sonuçlarını görüntülemek üzere aşağıdaki resimde gösterildiği gibi GitHub'da RBE (Ubuntu 16.04) pull isteği kontrolü için Details'i (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çları inceleyin.)

    Örnek sonuçlar

  3. (İsteğe bağlı) Dal koruma kuralınızı birleştirmeden önce geçmesi gereken bazel test (RBE (RBE (Ubuntu 16.04)))))) kontrolünü geçmesi gereken bir test olarak ayarlayın. Bu ayar, aşağıdaki resimde gösterildiği gibi GitHub'da Ayarlar > Şubeler > Şube koruma kuralları bölümünde yer alır.

    Dal koruma kuralları ayarları

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

Derlemeniz 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. Çoğu Bazel derlemesinde yaygın olarak kullanılan araçları içeren rbe-ubuntu16-04 container'ı içinde varsayılan olarak çalıştırılan rbe_ubuntu1604 yapılandırmasını kullanarak derleme yapar. Bununla birlikte, kurallarınız varsayılan kapsayıcıda mevcut olmayan araçların olmasını gerektiriyorsa rbe-ubuntu16-04 kapsayıcısına dayalı özel bir kapsayıcı oluşturmanız ve bu araçları daha sonra açıklandığı şekilde eklemeniz gerekir.

  • Oluşturma veya test etme hedefleri, uzaktan yürütmeyle uyumlu olmayan kurallar kullanıyor. Uzaktan yürütmeyle uyumluluk hakkındaki 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 container kullanma

rbe-ubuntu16-04 kapsayıcısı, aşağıdaki URL'de herkesin erişimine açıktır:

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

Doğrudan Container Registry'den alabilir 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. Container'ı kaynaktan oluşturuyorsanız Bazel'in en son sürümünü de yüklemeniz gerekir.

Container Registry'den rbe-ubuntu16-04 dosyasını çekme

rbe-ubuntu16-04 kapsayıcısı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 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ıları'nda açıklandığı gibi, araç zinciri kapsayıcı hedeflerini ayarlayın ve kapsayıcıyı oluşturun.

  3. Yeni derlenen container'ı çekin:

    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 yeni 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 container'a 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'ı kullanmaya yeni başladıysanız aşağıdakileri 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 kapsayıcıyı Container Registry'ye aktarma

Container'ı özelleştirdikten sonra container görüntüsünü aşağıdaki şekilde derleyin ve 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. Kapsayıcı 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 container'ınızın SHA256 sağlama toplamını not edin. Bunu daha sonra derleme platformunuzun tanımında sağlamanız gerekecektir.

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

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

Derleme platformu tanımını belirtme

Özel araç zinciri yapılandırmanıza, Bazel'ın istenen donanım/yazılım platformuna uygun bir araç zinciri seçmesini sağlayan bir Bazel platform yapılandırması eklemeniz gerekir. Otomatik olarak geçerli bir platform oluşturmak için WORKSPACE kampanyanıza, özel kapsayıcınızı seçmek için ek operatörler içeren buildkite_config adlı bir rbe_autoconfig hedefi ekleyebilirsiniz. Bu kurulumla ilgili ayrıntılar için rbe_autoconfig'in güncel belgelerini okuyun.