Bu sayfa, Bazel kural depolarının sahipleri ve geliştiricileri içindir. Bu videoda, kurallarınızın uzaktan yürütme senaryosunda uyumluluk testi 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:
- GitHub deponuz, Bazel GitHub kuruluşunun bir parçasıdır.
- Bazel Sürekli Entegrasyonu bölümünde açıklandığı gibi, deponuz için Buildkite'ı yapılandırdınız.
Bazel CI'yı test için ayarlama
.bazelci/presubmit.ymldosyanızda aşağıdakileri yapın:
a.
rbe_ubuntu1604adlı bir yapılandırma ekleyin.
b.
rbe_ubuntu1604yapılandırmasına, uzaktan yürütmeye göre test etmek istediğiniz derleme ve test hedeflerini ekleyin.
GitHub deposunu
bazel-toolchainsen son sürüme sabitlenmiş olarak
WORKSPACEdosyanıza ekleyin. Ayrıca
buildkite_configadlı bir
rbe_autoconfighedefi ekleyin. Bu örnekte,
rbe_ubuntu1604iç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")
presubmit.ymldosyası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.)
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 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.)
(İsteğe bağlı) Dal koruma kuralınızda birleştirme yapmadan önce geçmesi gereken test olarak bazel testi (RBE (RBE 16.04)) kontrolünü ayarlayın. Bu ayar, aşağıdaki şekilde gösterildiği gibi GitHub'daki Ayarlar > Dallar > Dal koruma kuralları bölümünde yer alır.
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. Birçok Bazel derlemesinde yaygın olarak kullanılan araçları içeren bir
rbe-ubuntu16-04kapsayıcısı içinde varsayılan olarak
rbe_ubuntu1604yapılandırma çalıştırmasını kullanarak derlemeler. Bununla birlikte, kurallarınız için varsayılan kapsayıcıda olmayan araçlar gerekiyorsa
rbe-ubuntu16-04kapsayı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 hedeflerinde uzaktan yürütmeyle uyumlu olmayan kurallar kullanılıyor. Uzaktan yürütmeyle uyumluluk hakkında 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:
bazel-toolchainsdeposunu klonlayın:
git clone https://github.com/bazelbuild/bazel-toolchains
Araç zinciri kapsayıcı hedeflerini ayarlayın ve kapsayıcıyı Araç Zinciri Kapsayıcıları'nda açıklandığı gibi oluşturun.
Yeni derlenmiş 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öğesini, en son container için SHA256 sağlama toplamı değeriyle değiştirin.
Kapsayıcıyı 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
Ö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
Kapsayıcıyı özelleştirdikten sonra, container görüntüsünü aşağıdaki gibi oluşturun ve 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
Kapsayıcı görüntüsünü Container Registry'ye aktarın:
gcloud docker -- push gcr.io/project-id/custom-container-name
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
Özel kapsayıcınızın SHA256 sağlama toplamını not edin. Bunu daha sonra derleme platformu tanımınızda sağlamanız gerekir.
Görüntüleri herkese açık olarak sunma bölümünde açıklandığı gibi, genel erişim için kapsayıcıyı herkesin erişebileceği şekilde 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çmesine olanak tanıyan bir Bazel platform yapılandırması eklemeniz gerekir. Otomatik olarak geçerli bir platform oluşturmak için
WORKSPACE hesabınıza
buildkite_config adlı bir
rbe_autoconfig hedefi ekleyebilirsiniz. Bu hedef, özel kapsayıcınızı seçmek için ilave operatörler içerir. Bu kurulumla ilgili ayrıntılar için
rbe_autoconfig ile ilgili güncel dokümanları inceleyin.