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:
- GitHub deponuz şunun bir parçasıdır: Bazel GitHub kuruluşu.
- Buildkite'ı deponuz için şu şekilde yapılandırdınız: Bazel Sürekli Entegrasyon.
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 deposu,WORKSPACE
dosyanıza sabitlenmiş en son sürümdeki Ayrıcabuildkite_config
adında birrbe_autoconfig
hedefi ekle. Bu örnek BuildKite CI ile uzaktan yürütme için araç zinciri yapılandırması oluştururrbe_ubuntu1604
için.
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 pull isteği gönderin. (Bkz. örnek pull isteği.)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.)
(İ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.
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 olarak
rbe_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:
bazel-toolchains
deposunu klonlayın:git clone https://github.com/bazelbuild/bazel-toolchains
Araç zinciri kapsayıcı hedefleri ayarlayın ve container'ı aşağıda açıklandığı şekilde oluşturun. Araç Zinciri Kapsayıcıları.
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:
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 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. Yapmanız gerekenler bunu daha sonra derleme platformu tanımınızda sağlayın.
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.