Bazel Docker Container'ını Kullanmaya Başlama

Sorun bildir Kaynağı göster

Bu sayfada Bazel container'ının içeriği, Bazel container içinde Bazel kullanarak abseil-cpp projesinin nasıl oluşturulacağı ve dizin ekleme ile Bazel container'ını kullanarak bu projenin doğrudan ana makineden nasıl oluşturulacağı anlatılmaktadır.

Dizin ekleme ile ana makinenizden Abseil projesi derleme

Bu bölümdeki talimatlar, barındırma ortamınızda kontrol edilen kaynaklarla Bazel kapsayıcısını kullanarak derleme yapmanıza olanak tanır. Yürüttüğünüz her derleme komutu için bir container başlatılır. Derleme sonuçları, ana makine ortamınızda önbelleğe alınır. Böylece, derlemeler arasında yeniden kullanılabilir.

Projeyi ana makine 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ı içeren bir klasör oluşturun.

mkdir -p /tmp/build_output/

Projeyi derlemek ve derleme çıkışlarını ana makine makinenizdeki çıkış klasöründe kullanılabilir hale getirmek için Bazel container'ını kullanın.

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 derleme işaretini ekleyerek ProjectSanitizer (asan), ThreadSanitizer (tsan) veyaMemorySanitizer'ı (msan) uygun şekilde seçerek projeyi temizleyicilerle oluşturun.

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'ın içinden Abseil projesi oluşturma

Bu bölümdeki talimatlar, kapsayıcı içindeki kaynaklarla birlikte Bazel kapsayıcısını kullanarak derleme yapmanıza olanak tanır. Bir container'ı geliştirme iş akışınızın başında başlatıp kapsayıcı içindeki en kötü hızda değişiklikler yaptığınızda 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'ydı.

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 derleme işaretini ekleyerek ProjectSanitizer (asan), ThreadSanitizer (tsan) veyaMemorySanitizer'ı (msan) uygun şekilde seçerek projeyi temizleyicilerle oluşturun.

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çeriğini inceleyin.

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