Bu sayfada, Bazel container'ının içeriği, Bazel container'ında Bazel kullanarak abseil-cpp projesinin nasıl oluşturulacağı ve dizin bağlama ile Bazel container'ı 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 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ı, 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 --depth 1 --branch 20220623.1 https://github.com/abseil/abseil-cpp.git /src/workspaceDerlemeler 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 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 \
gcr.io/bazel-public/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 \
gcr.io/bazel-public/bazel:latest \
--output_user_root=/tmp/build_output \
build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_testAbseil projesini container'ı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 container başlatıp değişiklikleri container içindeki çalışma alanında yaparak derleme sonuçlarını önbelleğe alabilirsiniz.
Bazel container'ında bir kabuk başlatın:
docker run --interactive --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latestHer container kimliği benzersizdir. Aşağıdaki talimatlarda container 5a99103747c6 olarak belirtilmiştir.
Projeyi klonlayın.
ubuntu@5a99103747c6:~$ git clone --depth 1 --branch 20220623.1 https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/Düzenli olarak derleme yapın.
ubuntu@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.
ubuntu@5a99103747c6:~/abseil-cpp$ bazel build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_testBazel container'ını keşfetme
Henüz yapmadıysanız Bazel container'ında etkileşimli bir kabuk başlatın.
docker run -it --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest
ubuntu@5a99103747c6:~$Container içeriğini 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.10ubuntu@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şfetme
Bazel Docker görüntüsünün nasıl oluşturulduğunu kontrol etmek isterseniz Dockerfile'ını bazelbuild/continuous-integration/bazel/oci adresinde bulabilirsiniz.