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

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Bu sayfa, Bazel kural depolarının sahipleri ve sorumluları içindir. Google için Bazel Sürekli Entegrasyon (CI) sisteminin kurallarınızı uzaktan yürütmeye karşı uyumluluk açısından test etmek için deponuzu senaryoyu izler. Bu sayfadaki talimatlar, GitHub depoları

Ö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 deposu, WORKSPACE dosyanıza sabitlenmiş en son sürümdeki Ayrıca buildkite_config adında bir rbe_autoconfig hedefi ekle. Bu örnek BuildKite CI ile uzaktan yürütme için araç zinciri yapılandırması oluşturur rbe_ubuntu1604 için.

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. (Bkz. örnek pull isteği.)

  2. Derleme sonuçlarını görüntülemek için RBE (Ubuntu) için Ayrıntılar'ı 16.04) aşağıdaki şekilde gösterildiği gibi, GitHub'da pull isteği kontrolünü başlatabilirsiniz. Bu bağlantı pull isteği birleştirildikten ve CI testlerinden sonra kullanılabilir hale gelir belirler. (Bkz. örnek sonuçlar.)

    Örnek sonuçlar

  3. (İsteğe bağlı) bazel test (RBE (Ubuntu 16.04)) kontrolünü test olarak ayarlayın şube koruma kuralınızda birleştirme işleminden önce geçilmesi gerekir. Ayar GitHub'da bulunmaktadır: Ayarlar > Dallar > Dal koruma kuralları aşağıda gösterildiği gibi değiştirin.

    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. Varsayılan olarakrbe_ubuntu1604 rbe-ubuntu16-04 container'ını kullanabilirsiniz. Ancak, kurallarınız, varsayılan kapsayıcıda bulunmayan araçlar gerektirdiğinden, şuna göre bir özel container oluşturabilirsiniz: rbe-ubuntu16-04 kapsayıcıya dahil etmeli ve bu araçları daha sonra açıklandığı şekilde dahil etmelisiniz.

  • Derleme veya test hedefleri, uzaktan kumandayla uyumlu olmayan kurallar kullanıyor gösterir. Görüntüleyin Uzaktan Yürütme İçin Bazel Kurallarını Uyarlama ile uyumluluk hakkında ayrıntılı bilgi edinebilirsiniz.

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. İlgili içeriği oluşturmak için kullanılan 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 en yeni sürümünü kullanabilirsiniz.

Container Registry'den rbe-ubuntu16-04 çekme

rbe-ubuntu16-04 kapsayıcısını Container Registry'den çekmek için şu komutu kullanın:

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

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

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 container'ı aşağıda açıklandığı şekilde oluşturun. Araç Zinciri Kapsayıcıları.

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

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

    sha256-checksum değerini en son kapsayıcı.

  • 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

Dockerfile veya Kaynak eklemek için rules_docker veya orijinal kaynakların alternatif sürümlerini rbe-ubuntu16-04 kapsayıcısına yükleyin. 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

Container'ı özelleştirdikten sonra container görüntüsünü derleyin ve Container Registry şu şekildedir:

  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. Yapmanız gerekenler bunu daha sonra derleme platformu tanımınızda sağlayın.

  5. Herkese açık bölümünde açıklandığı gibi, container'ı herkese açık erişim için yapılandırın. açıklandığı şekilde erişilebilir Resimlerin herkese açık olarak sunulması.

    Daha fazla bilgi için bkz. Görüntü Aktarma ve Çekme.

Derleme platformu tanımını belirtme

Bazel platformu Bazel'in bir araç zinciri seçmesine olanak tanıyan özel araç zinciri yapılandırması istenen donanım/yazılım platformuna uygun olmalıdır. Oluşturmak için geçerli bir platform olmasını istiyorsanız WORKSPACE cihazınıza buildkite_config adlı rbe_autoconfig hedefi özelliğini kullanın. Bu kurulumla ilgili ayrıntılar için rbe_autoconfig hakkındaki güncel dokümanları inceleyin.