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 \
l.gcr.io/google/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 \
l.gcr.io/google/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 l.gcr.io/google/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 l.gcr.io/google/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: 0.17.1 Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar Build time: Fri Sep 14 10:39:25 2018 (1536921565) Build timestamp: 1536921565 Build timestamp as int: 1536921565