Bazel Docker Container'ını Kullanmaya Başlama

Sorun bildir Kaynağı göster

Bu sayfada Bazel container'ının içeriği, Bazel container içinde Bazel kullanarak abseil-cpp projesinin nasıl oluşturulacağı ve dizin ekleme ile Bazel container'ını kullanarak bu projenin doğrudan ana makineden nasıl oluşturulacağı anlatılmaktadır.

Dizin ekleme ile ana makinenizden Abseil projesi derleme

Bu bölümdeki talimatlar, barındırma ortamınızda kontrol edilen kaynaklarla Bazel kapsayıcısı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, derlemeler arasında yeniden kullanılabilir.

Projeyi ana makine 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ı içeren bir klasör oluşturun.

mkdir -p /tmp/build_output/

Projeyi derlemek ve derleme çıkışlarını ana makine 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/...

--config=asan|tsan|msan derleme işaretini ekleyerek ProjectSanitizer (asan), ThreadSanitizer (tsan) veyaMemorySanitizer'ı (msan) uygun şekilde seçerek 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_test

Container'ın içinden Abseil projesi oluşturma

Bu bölümdeki talimatlar, kapsayıcı içindeki kaynaklarla birlikte Bazel kapsayıcısını kullanarak derleme yapmanıza olanak tanır. Bir container'ı geliştirme iş akışınızın başında başlatıp kapsayıcı 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 gcr.io/bazel-public/bazel:latest

Her kapsayıcı kimliği benzersizdir. Aşağıdaki talimatlarda kapsayıcı 5a99103747c6'ydı.

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 derleme işaretini ekleyerek ProjectSanitizer (asan), ThreadSanitizer (tsan) veyaMemorySanitizer'ı (msan) uygun şekilde seçerek projeyi temizleyicilerle oluşturun.

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çeriğini inceleyin.

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