Bazel Docker Container'ını Kullanmaya Başlama

Sorun bildirme Kaynağı görüntüleme Nightly · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Bu sayfada, Bazel kapsayıcısının içeriği, Bazel kapsayıcısının içinde Bazel kullanılarak abseil-cpp projesinin nasıl derleneceği ve dizin bağlama özelliğiyle Bazel kapsayıcısını kullanarak bu projenin doğrudan ana makineden nasıl derleneceği hakkında ayrıntılı bilgi verilmektedir.

Dizin bağlama özelliğiyle Abseil projesini ana makinenizden derleme

Bu bölümdeki talimatlar, barındırma ortamınızda alınan kaynaklarla Bazel kapsayıcısını kullanarak derleme yapmanıza olanak tanır. Çalıştırdığınız her derleme komutu için bir kapsayıcı başlatılır. Derleme sonuçları, derlemeler arasında yeniden kullanılabilmeleri için barındırma 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/workspace

Derlemeler arasında paylaşılacak önbelleğe alınmış sonuçların yer alacağı bir klasör oluşturun.

mkdir -p /tmp/build_output/

Projeyi oluşturmak ve derleme çıktılarını ana makinenizdeki çıkış klasöründe kullanılabilir hale getirmek için Bazel kapsayıcısı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çmek için --config=asan|tsan|msan derleme işaretini ekleyerek projeyi temizleyicilerle derleyin.

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

Abseil projesini kapsayıcının içinden derleme

Bu bölümdeki talimatlar, kaynak kodları container'ın içindeyken Bazel container'ını kullanarak derleme yapmanıza olanak tanır. Geliştirme iş akışınızın başında bir kapsayıcı başlatarak ve kapsayıcı içindeki çalışma alanında değişiklikler yaparak 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/...

AddressSanitizer (asan), ThreadSanitizer (tsan) veya MemorySanitizer (msan)'ı seçmek için --config=asan|tsan|msanbuild işaretini ekleyerek projeyi temizleyicilerle derleyin.

ubuntu@5a99103747c6:~/abseil-cpp$ bazel build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test

Bazel kapsayıcısını keşfetme

Henüz yapmadıysanız Bazel kapsayıcısında 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 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'ini keşfetme

Bazel Docker görüntüsünün nasıl oluşturulduğunu kontrol etmek istiyorsanız Dockerfile'ini bazelbuild/continuous-integration/bazel/oci adresinde bulabilirsiniz.