Halaman ini memberikan detail tentang isi kontainer Bazel, cara membangun project abseil-cpp menggunakan Bazel di dalam container Bazel, serta cara membuat project ini secara langsung dari komputer {i>host<i} menggunakan kontainer Bazel dengan pemasangan direktori.
Buat project Abseil dari mesin host dengan pemasangan direktori
Petunjuk di bagian ini memungkinkan Anda membangun aplikasi menggunakan container Bazel dengan sumber yang diperiksa di lingkungan {i>host<i} Anda. Penampung dimulai untuk setiap perintah build yang Anda jalankan. Hasil build di-cache di host Anda tertentu agar bisa digunakan kembali di berbagai build.
Buat clone project ke direktori di mesin host.
git clone https://github.com/abseil/abseil-cpp.git /src/workspace
Buat folder yang akan memiliki hasil yang di-cache untuk dibagikan di seluruh build.
mkdir -p /tmp/build_output/
Gunakan container Bazel untuk membangun project dan membuat build yang tersedia di folder {i> output<i} di mesin {i>host<i} Anda.
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/...
Bangun project menggunakan sanitizer dengan menambahkan build --config=asan|tsan|msan
flag untuk memilih AddressSanitizer (asan), ThreadSanitizer (tsan), atau
MemorySanitizer (msan) yang sesuai.
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
Membangun project Abseil dari dalam container
Petunjuk di bagian ini memungkinkan Anda membangun aplikasi menggunakan container Bazel dengan sumber yang ada di dalam container. Dengan memulai container di awal dari alur kerja pengembangan Anda dan melakukan perubahan di lingkungan kerja dalam , hasil build akan di-cache.
Mulai shell di container Bazel:
docker run --interactive --entrypoint=/bin/bash l.gcr.io/google/bazel:latest
Setiap ID penampung bersifat unik. Pada petunjuk di bawah ini, container-nya adalah 5a99103747c6.
Meng-clone project.
root@5a99103747c6:~# git clone https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/
Buat versi reguler.
root@5a99103747c6:~/abseil-cpp# bazel build //absl/...
Bangun project dengan sanitizer dengan menambahkan --config=asan|tsan|msan
build untuk memilih AddressSanitizer (asan), ThreadSanitizer (tsan) atau
MemorySanitizer (msan) yang sesuai.
root@5a99103747c6:~/abseil-cpp# bazel build --config=--config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
Jelajahi wadah Bazel
Jika belum melakukannya, mulai shell interaktif di dalam container Bazel.
docker run -it --entrypoint=/bin/bash l.gcr.io/google/bazel:latest
root@5a99103747c6:/#
Pelajari konten penampung.
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