Bazel Docker Container'ını Kullanmaya Başlama

. Sorun bildirin Kaynağı göster Gece · 7,3 · 7,2 · 7,1 · 7,0 · 6,5

Bu sayfada, Bazel kapsayıcısının içeriğine, Bazel kullanarak abseil-cpp projesini ve bu projenin doğrudan nasıl oluşturulacağını ele alacağız dizin bağlantısı içeren Bazel container'ını kullanarak bir ana makine makinesinden indiremezsiniz.

Dizin ekleme ile ana makine makinenizden Abseil projesi derleme

Bu bölümdeki talimatlar Bazel container'ını kullanarak derlemenizi ana makine ortamınızda kontrol edilen kaynakları kontrol edin. Bir kapsayıcı başlatıldı komutlarını çalıştırmaya devam edin. Derleme sonuçları ana makinenizde önbelleğe alınır Böylece derlemelerde yeniden kullanılabilir.

Projeyi ana makinenizdeki bir dizine klonlayın.

git clone https://github.com/abseil/abseil-cpp.git /src/workspace

Derlemeler arasında paylaşılacak önbelleğe alınmış sonuçların bulunduğu bir klasör oluşturun.

mkdir -p /tmp/build_output/

Projeyi derlemek ve derlemeyi oluşturmak için Bazel container'ını kullanın. çıkışları ekleyebilirsiniz.

docker run \
  -e USER="$(id -u)" \
  -u="$(id -u)" \
  -v /src/workspace:/src/workspace \
  -v /tmp/build_output:/tmp/build_output \
  -w /src/workspace \
  gcr.io/bazel-public/bazel:latest \
  --output_user_root=/tmp/build_output \
  build //absl/...

--config=asan|tsan|msan derlemesini ekleyerek projeyi dezenfektanlarla geliştirin flag'i kullanarak AddressSanitizer (asan), ThreadSanitizer (tsan) veya MemorySanitizer (msan) ile uyumlu.

docker run \
  -e USER="$(id -u)" \
  -u="$(id -u)" \
  -v /src/workspace:/src/workspace \
  -v /tmp/build_output:/tmp/build_output \
  -w /src/workspace \
  gcr.io/bazel-public/bazel:latest \
  --output_user_root=/tmp/build_output \
  build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test

Container'dan Abseil projesi derleyin

Bu bölümdeki talimatlar Bazel container'ını kullanarak derlemenizi kapsayıcıdaki kaynaklarla. En baştan bir kapsayıcı başlatarak ve en kötü hızlarda değişiklik yaparak container'da yüklü değilse derleme sonuçları önbelleğe alınır.

Bazel kapsayıcısında bir kabuk başlatın:

docker run --interactive --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest

Her kapsayıcı kimliği benzersizdir. Aşağıdaki talimatlarda kapsayıcı 5a99103747c6 idi.

Projeyi klonlayın.

root@5a99103747c6:~# git clone https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/

Düzenli bir derleme yapın.

root@5a99103747c6:~/abseil-cpp# bazel build //absl/...

--config=asan|tsan|msan ekleyerek projeyi dezenfektanlarla geliştirin AddressSanitizer (asan), ThreadSanitizer (tsan) veya MemorySanitizer (msan) ile uyumlu.

root@5a99103747c6:~/abseil-cpp# bazel build --config=--config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test

Bazel kapsayıcısını keşfedin

Henüz yapmadıysanız Bazel kapsayıcısının içinde etkileşimli bir kabuk başlatın.

docker run -it --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest
root@5a99103747c6:/#

Kapsayıcı içeriklerini keşfedin.

root@5a99103747c6:/# clang --version
clang version 8.0.0 (trunk 340178)
Target: x86_64-unknown-linux-gnu
Thread model: posix
InstalledDir: /usr/local/bin
root@5a99103747c6:/# java -version
openjdk version "1.8.0_181"
OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-0ubuntu0.16.04.1-b13)
OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode)
root@5a99103747c6:/# python -V
Python 2.7.12
root@5a99103747c6:/# python3 -V
Python 3.6.6
root@5a99103747c6:/# bazel version
Extracting Bazel installation...
Build label: 6.0.0
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Mon Dec 19 15:52:35 2022 (1671465155)
Build timestamp: 1671465155
Build timestamp as int: 1671465155