Bu sayfada, Bazel kapsayıcısının içeriği, Bazel kapsayıcısında Bazel kullanarak abseil-cpp projesinin nasıl oluşturulacağı ve dizin bağlama ile Bazel kapsayıcısı kullanılarak bu projenin doğrudan ana makineden nasıl oluşturulacağı hakkında ayrıntılı bilgi verilmektedir.
Dizin bağlama ile ana makinenizden Abseil projesi oluşturma
Bu bölümdeki talimatlar, ana makine ortamınızda kaynakları kontrol ederek Bazel kapsayıcısını kullanarak derleme yapmanıza olanak tanır. Yürüttüğünüz her derleme komutu için bir kapsayıcı başlatılır. Derleme sonuçları, derlemeler arasında yeniden kullanılabilmeleri için ana makine ortamınızda önbelleğe alınır.
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ı içeren bir klasör oluşturun.
mkdir -p /tmp/build_output/
Projeyi oluşturmak ve derleme çıkışlarını ana makinenizdeki çıkış klasöründe kullanılabilir hale getirmek için Bazel kapsayıcısı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/...
AddressSanitizer (asan), ThreadSanitizer (tsan) veya MemorySanitizer (msan) seçeneklerinden birini belirlemek için --config=asan|tsan|msan
build
flag komutunu ekleyerek 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
Abseil projesini kapsayıcının içinden oluşturma
Bu bölümdeki talimatlar, container'ın içindeki kaynaklarla Bazel container'ını kullanarak derleme yapmanıza olanak tanır. Geliştirme iş akışınızın başında bir kapsayıcı başlatıp değişiklikleri kapsayıcı içindeki çalışma alanında yaparak derleme sonuçlarını önbelleğe alabilirsiniz.
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 olarak belirtilmiştir.
Projeyi klonlayın.
root@5a99103747c6:~# git clone https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/
Düzenli olarak derleme yapın.
root@5a99103747c6:~/abseil-cpp# bazel build //absl/...
AddressSanitizer (asan), ThreadSanitizer (tsan) veya MemorySanitizer (msan) seçeneklerini belirlemek için --config=asan|tsan|msan
build flag'i ekleyerek 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şfetme
Henüz yapmadıysanız Bazel kapsayıcısında 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 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: 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