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.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.bazel-toolchains
GitHub deposunu,WORKSPACE
dosyanıza ekleyin. Bu dosya, en son sürüme sabitlenir. Ayrıcarbe_autoconfig
adlı bir hedefbuildkite_config
ekleyin. Bu örnek,rbe_ubuntu1604
iç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.yml
dosyası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'da 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_ubuntu1604
yapılandırması kullanılarak oluşturulan derlemeler, varsayılan olarak birçok Bazel derlemesinde ortak olan araçları içeren birrbe-ubuntu16-04
kapsayıcısında çalışır. Ancak kurallarınız varsayılan kapsayıcıda bulunmayan araçlar gerektiriyorsarbe-ubuntu16-04
kapsayı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ütmeyle 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 yeni 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-checksum
sha256-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-toolchains
deposunu klonlayın:git clone https://github.com/bazelbuild/bazel-toolchains
Toolchain 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/bash
sha256-checksum
yerine 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
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-name
Container görüntüsünü Container Registry'ye aktarın:
gcloud docker -- push gcr.io/project-id/custom-container-name
Kapsayı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 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 belgeleri okuyun.