Bu sayfa, Bazel kural depolarının sahipleri ve sorumluları içindir. Bu makalede, kurallarınızı uzaktan yürütme senaryosuyla uyumluluk açısından test etmek için deponuz için Bazel Sürekli Entegrasyon (CI) sisteminin nasıl yapılandırılacağı 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 Entegrasyon bölümünde açıklandığı gibi, deponuz için Buildkite'ı yapılandırdınız.
Bazel CI'yi test için 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ütmeyle test etmek istediğiniz derleme ve test hedeflerini ekleyin.bazel-toolchains
GitHub deposunuWORKSPACE
dosyanıza en son sürüme sabitlenmiş şekilde ekleyin. Ayrıcabuildkite_config
adında birrbe_autoconfig
hedefi ekleyin. Bu örnekte,rbe_ubuntu1604
için BuildKite CI ile uzaktan yürütme için araç zinciri yapılandırması oluşturulur.
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 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ı, çekme 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ı) bazel test (RBE (Ubuntu 16.04)) kontrolünü, dal koruma kuralınızda birleştirme işleminden önce geçmesi gereken bir test olarak ayarlayın. Bu ayar, aşağıdaki şekilde gösterildiği gibi GitHub'daki Ayarlar > Dallar > Dal koruma kuralları bölümünde bulunur.
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:
Zorunlu derleme veya test araçları varsayılan kapsayıcıya yüklenmemiş. Birçok Bazel derlemesinde ortak olarak kullanılan araçları içeren
rbe-ubuntu16-04
container'ında varsayılan olarak çalıştırılanrbe_ubuntu1604
yapılandırmasını kullanarak derlemeler. Ancak kurallarınızda varsayılan kapsayıcıda bulunmayan araçlar gerekiyorsarbe-ubuntu16-04
kapsayıcısını temel alan özel bir kapsayıcı oluşturmanız ve daha sonra açıklandığı gibi bu araçları 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 Bazel Kurallarını Uzaktan Yürütme İçin Uyarlama başlıklı makaleyi inceleyin.
rbe_ubuntu1604 CI yapılandırmasında özel bir kapsayıcı kullanma
rbe-ubuntu16-04
kapsayıcısı aşağıdaki URL'de herkese açıktır:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
Kodu doğrudan Container Registry'den çekebilir veya kaynaktan derleyebilirsiniz. Sonraki bölümlerde her iki seçenek de açıklanmaktadır.
Başlamadan önce gcloud
, docker
ve git
'yi yüklediğinizden emin olun.
Kapsülü kaynaktan derliyorsanız Bazel'in en son sürümünü de yüklemeniz gerekir.
rbe-ubuntu16-04'ü Container Registry'den alma
rbe-ubuntu16-04
container'ı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 kapsayıcı için SHA256 sağlama değeriyle değiştirin.
rbe-ubuntu16-04 kapsayıcısını kaynaktan derleme
rbe-ubuntu16-04
container'ını kaynaktan derlemek için aşağıdakileri yapın:
bazel-toolchains
deposunu klonlayın:git clone https://github.com/bazelbuild/bazel-toolchains
Araç zinciri kapsayıcı hedefleri ayarlayın ve kapsayıcıyı Araç Zinciri Kapsayıcıları bölümünde açıklandığı şekilde oluşturun.
Yeni oluşturulan kapsayıcıyı çekin:
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
Özel kapsayıcıyı çalıştırma
Özel container'ı ç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
değerini en son kapsayıcı için SHA256 sağlama 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 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'da yeniyseniz 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
Kapsayıcıyı özelleştirdikten sonra, container görüntüsünü derleyin ve aşağıdaki şekilde 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 yayınlandığı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 değerini not edin. Daha sonra derleme platformu tanımınızda belirtmeniz gerekir.
Resimleri herkese açık olarak yayınlama bölümünde açıklandığı şekilde kapsayıcıyı herkese açık olarak erişilebilir şekilde yapılandırın.
Daha fazla bilgi için Resim yayınlama ve alma başlıklı makaleyi inceleyin.
Derleme platformu tanımını belirtme
Özel araç zinciri yapılandırmanıza, Bazel'in istenen donanım/yazılım platformuna uygun bir araç zinciri seçmesini sağlayan bir Bazel platformu yapılandırması eklemeniz gerekir. Geçerli bir platformu otomatik olarak oluşturmak için WORKSPACE
'ünüze rbe_autoconfig
adlı bir buildkite_config
hedefi ekleyebilirsiniz. Bu hedef, özel kapsayıcınızı seçmek için ek özellikler içerir. Bu kurulumla ilgili ayrıntılar için rbe_autoconfig
ile ilgili güncel dokümanları okuyun.