Bu sayfa, Bazel kuralı depolarının sahipleri ve bakımcıları içindir. Bu dokümanda, kurallarınızın uzak yürütme senaryosuyla uyumluluğunu test etmek için Bazel Sürekli Entegrasyon (CI) sistemini deponuzda 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:
- GitHub deponuz, Bazel GitHub kuruluşunun bir parçasıdır.
- Buildkite'ı, Bazel Sürekli Entegrasyon bölümünde açıklandığı şekilde deponuz için yapılandırmış olmanız gerekir.
Test için Bazel CI'yı ayarlama
.bazelci/presubmit.ymldosyanızda aşağıdakileri yapın:a.
rbe_ubuntu1604adlı bir yapılandırma ekleyin.b.
rbe_ubuntu1604yapılandırmasında, uzaktan yürütmeye karşı test etmek istediğiniz derleme ve test hedeflerini ekleyin.bazel-toolchainsGitHub deposunu,WORKSPACEdosyanıza ekleyin. Bu dosya, en son sürüme sabitlenir. Ayrıcarbe_autoconfigadlı bir hedefbuildkite_configekleyin. Bu örnek,rbe_ubuntu1604için BuildKite CI ile uzaktan yürütme için araç zinciri yapılandırması oluşturur.
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")rbe_autoconfig(name = "buildkite_config")
presubmit.ymldosyasında yaptığınız değişiklikleri içeren bir çekme isteği gönderin. (Örnek çekme isteğine bakın.)Derleme sonuçlarını görüntülemek için aşağıdaki şekilde gösterildiği gibi GitHub'daki RBE (Ubuntu 16.04) çekme isteği kontrolü için Ayrıntılar'ı tıklayın. Bu bağlantı, çekme isteği birleştirildikten ve CI testleri çalıştırıldıktan sonra kullanılabilir. (Örnek sonuçlara bakın.)

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

Başarısız derleme ve testlerle ilgili sorunları giderme
Derlemeniz veya testleriniz başarısız olursa bunun nedeni muhtemelen aşağıdakilerden biridir:
Gerekli derleme veya test araçları varsayılan kapsayıcıya yüklenmemiş.
rbe_ubuntu1604yapılandırması kullanılan derlemeler, varsayılan olarak birçok Bazel derlemesinde ortak olan araçları içeren birrbe-ubuntu16-04kapsayıcısında çalışır. Ancak kurallarınız varsayılan kapsayıcıda bulunmayan araçlar gerektiriyorsarbe-ubuntu16-04kapsayıcısına dayalı özel bir kapsayıcı oluşturmanız ve bu araçları daha sonra açıklanacağı şekilde eklemeniz gerekir.Derleme veya test hedefleri, uzaktan yürütme ile uyumlu olmayan kurallar kullanıyor. Uzaktan yürütmeyle uyumluluk hakkında ayrıntılı bilgi için Adapting Bazel Rules for Remote Execution (Uzaktan Yürütme İçin Bazel Kurallarını Uyarlama) başlıklı makaleye bakın.
rbe_ubuntu1604 CI yapılandırmasında özel container kullanma
rbe-ubuntu16-04 kapsayıcısı, aşağıdaki URL'de herkese açık olarak kullanılabilir:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
Doğrudan Container Registry'den çekebilir veya kaynaktan oluşturabilirsiniz. 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.
Container'ı kaynaktan oluşturuyorsanız Bazel'in en son sürümünü de yüklemeniz gerekir.
Container Registry'den rbe-ubuntu16-04'ü çekme
Container Registry'den rbe-ubuntu16-04 kapsayıcısını çekmek için aşağıdaki komutu çalıştırın:
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksumsha256-checksum yerine en son kapsayıcının SHA256 sağlama toplamı değerini girin.
rbe-ubuntu16-04 container'ını kaynaktan derleme
rbe-ubuntu16-04 container'ını kaynaktan oluşturmak için aşağıdakileri yapın:
bazel-toolchainsdeposunu klonlayın:git clone https://github.com/bazelbuild/bazel-toolchainsToolchain Containers (Araç Zinciri Kapsayıcıları) bölümünde açıklandığı gibi araç zinciri kapsayıcı hedeflerini ayarlayın ve kapsayıcıyı oluşturun.
Yeni oluşturulan kapsayıcıyı çekin:
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
Özel container'ı ç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/bashsha256-checksumyerine en son kapsayıcının SHA256 sağlama toplamı değerini girin.Container'ı 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 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'ı kullanmaya yeni başladıysanız aşağıdakileri okuyun:
Örneğin, aşağıdaki Dockerfile snippet'i my_tool_package öğesini 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
Container'ı özelleştirdikten sonra container görüntüsünü oluşturun ve aşağıdaki gibi Container Registry'ye aktarın:
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-nameContainer görüntüsünü Container Registry'ye aktarın:
gcloud docker -- push gcr.io/project-id/custom-container-nameKapsayıcının gönderildiğini doğrulamak için aşağıdaki URL'ye gidin:
https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name
Özel container'ınızın SHA256 sağlamasını not edin. Bu bilgiyi daha sonra derleme platformu tanımınızda sağlamanız gerekir.
Herkese açık resim sunma bölümünde açıklandığı gibi, herkese açık erişim için kapsayıcıyı yapılandırın.
Daha fazla bilgi için Resimleri gönderme ve çekme başlıklı makaleyi inceleyin.
Derleme platformu tanımını belirtme
Özel araç zinciri yapılandırmanıza bir Bazel platformu yapılandırması eklemeniz gerekir. Bu yapılandırma, 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 öğenize rbe_autoconfig adında bir hedef ekleyebilirsiniz. Bu hedef, özel kapsayıcınızı seçmek için ek özellikler içerir.buildkite_config Bu kurulumla ilgili ayrıntılar için rbe_autoconfig ile ilgili güncel dokümanları inceleyin.