Bazel Docker Container'ını Kullanmaya Başlama

Sorun bildirin Kaynağı göster

Bu sayfada Bazel container içeriği, Bazel container içinde Bazel kullanarak abseil-cpp projesinin nasıl oluşturulacağı ve dizin bağlamalı Bazel container'ını kullanarak bu projenin doğrudan ana makineden nasıl derleneceği hakkında ayrıntılı bilgi verilmektedir.

Dizin ekleme ile ana makine makinenizden Abseil projesi derleme

Bu bölümdeki talimatlar, ana makine ortamınızda kontrol edilen kaynaklarla Bazel container'ı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 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 derleme çıkışlarının ana makinenizdeki çıkış klasöründe kullanılabilmesi 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 ekleyip AddressSanitizer (asan), ThreadSanitizer (tsan) veyaMemorySanitizer (msan) ile projeyi geliştirin.

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'dan Abseil projesi derleyin

Bu bölümdeki talimatlar, container içindeki kaynaklarla Bazel container'ını kullanarak derleme yapmanıza olanak tanır. Geliştirme iş akışınızın başında bir container başlatırsanız ve container 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 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 derleme işaretini ekleyip AddressSanitizer (asan), ThreadSanitizer (tsan) veyaMemorySanitizer (msan) ile projeyi geliştirin.

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ç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: 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