Bu sayfada, Bazel kapsayıcısının içeriğine, Bazel kullanarak abseil-cpp projesini ve bu projenin doğrudan nasıl oluşturulacağını ele alacağız dizin bağlantısı içeren Bazel container'ını kullanarak bir ana makine makinesinden indiremezsiniz.
Dizin ekleme ile ana makine makinenizden Abseil projesi derleme
Bu bölümdeki talimatlar Bazel container'ını kullanarak derlemenizi ana makine ortamınızda kontrol edilen kaynakları kontrol edin. Bir kapsayıcı başlatıldı komutlarını çalıştırmaya devam edin. Derleme sonuçları ana makinenizde önbelleğe alınır Böylece derlemelerde yeniden kullanılabilir.
Projeyi ana makinenizdeki bir dizine klonlayın.
git clone --depth 1 --branch 20220623.1 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 derlemeyi oluşturmak için Bazel container'ını kullanın. çıkışları ekleyebilirsiniz.
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
derlemesini ekleyerek projeyi dezenfektanlarla geliştirin
flag'i kullanarak AddressSanitizer (asan), ThreadSanitizer (tsan) veya
MemorySanitizer (msan) ile uyumlu.
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'dan Abseil projesi derleyin
Bu bölümdeki talimatlar Bazel container'ını kullanarak derlemenizi kapsayıcıdaki kaynaklarla. En baştan bir kapsayıcı başlatarak ve en kötü hızlarda değişiklik yaparak container'da yüklü değilse 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 idi.
Projeyi klonlayın.
ubuntu@5a99103747c6:~$ git clone --depth 1 --branch 20220623.1 https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/
Düzenli bir derleme yapın.
ubuntu@5a99103747c6:~/abseil-cpp$ bazel build //absl/...
--config=asan|tsan|msan
ekleyerek projeyi dezenfektanlarla geliştirin
AddressSanitizer (asan), ThreadSanitizer (tsan) veya
MemorySanitizer (msan) ile uyumlu.
ubuntu@5a99103747c6:~/abseil-cpp$ bazel build --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
ubuntu@5a99103747c6:~$
Kapsayıcı içeriklerini keşfedin.
ubuntu@5a99103747c6:~$ gcc --version gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 Copyright (C) 2019 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
ubuntu@5a99103747c6:~$ java -version openjdk version "1.8.0_362" OpenJDK Runtime Environment (build 1.8.0_362-8u372-ga~us1-0ubuntu1~20.04-b09) OpenJDK 64-Bit Server VM (build 25.362-b09, mixed mode)
ubuntu@5a99103747c6:~$ python -V Python 3.8.10
ubuntu@5a99103747c6:~$ bazel version WARNING: Invoking Bazel in batch mode since it is not invoked from within a workspace (below a directory having a WORKSPACE file). Extracting Bazel installation... Build label: 6.2.1 Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar Build time: Fri Jun 2 16:59:58 2023 (1685725198) Build timestamp: 1685725198 Build timestamp as int: 1685725198
Bazel Dockerfile'ı keşfedin
Bazel Docker görüntüsünün nasıl oluşturulduğundan emin olmak için Dockerfile'ı bazelbuild/continuous-integration/bazel/oci adresinde bulabilirsiniz.