Trang này cung cấp thông tin chi tiết về nội dung của vùng chứa Bazel, cách tạo dự án abseil-cpp bằng Bazel bên trong vùng chứa Bazel và cách tạo dự án này trực tiếp từ máy chủ lưu trữ bằng vùng chứa Bazel có tính năng gắn thư mục.
Xây dựng dự án Abseil từ máy chủ lưu trữ của bạn bằng tính năng gắn thư mục
Hướng dẫn trong phần này cho phép bạn tạo bằng vùng chứa Bazel với các nguồn đã kiểm tra trong môi trường lưu trữ của bạn. Một vùng chứa sẽ được khởi động cho mỗi lệnh tạo bản dựng mà bạn thực thi. Các kết quả bản dựng được lưu vào bộ nhớ đệm trong môi trường lưu trữ của bạn để có thể sử dụng lại trên các bản dựng.
Sao chép dự án vào một thư mục trên máy chủ.
git clone https://github.com/abseil/abseil-cpp.git /src/workspace
Tạo một thư mục lưu kết quả vào bộ nhớ đệm để chia sẻ giữa các bản dựng.
mkdir -p /tmp/build_output/
Sử dụng vùng chứa Bazel để tạo dự án và cung cấp kết quả của bản dựng trong thư mục đầu ra của máy chủ lưu trữ.
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/...
Tạo dự án bằng trình dọn dẹp bằng cách thêm cờ bản dựng --config=asan|tsan|msan
để chọn AddressSanitizer (asan), ThreadSanitizer (tsan) hoặc MemorySanitizer (msan) cho phù hợp.
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
Tạo dự án Abseil từ bên trong vùng chứa
Hướng dẫn trong phần này cho phép bạn tạo bằng cách sử dụng vùng chứa Bazel với các nguồn bên trong vùng chứa. Bằng cách bắt đầu một vùng chứa từ đầu quy trình phát triển và thực hiện các thay đổi trong worskpace bên trong vùng chứa đó, kết quả bản dựng sẽ được lưu vào bộ nhớ đệm.
Khởi động một shell trong vùng chứa Bazel:
docker run --interactive --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest
Mỗi mã vùng chứa là duy nhất. Trong hướng dẫn bên dưới, vùng chứa là 5a99103747c6.
Nhân bản dự án.
root@5a99103747c6:~# git clone https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/
Tạo một bản dựng thông thường.
root@5a99103747c6:~/abseil-cpp# bazel build //absl/...
Tạo dự án bằng trình dọn dẹp bằng cách thêm cờ bản dựng --config=asan|tsan|msan
để chọn AddressSanitizer (asan), ThreadSanitizer (tsan) hoặc MemorySanitizer (msan) cho phù hợp.
root@5a99103747c6:~/abseil-cpp# bazel build --config=--config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
Khám phá vùng chứa Bazel
Bắt đầu một shell tương tác bên trong vùng chứa Bazel nếu bạn chưa thực hiện.
docker run -it --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest
root@5a99103747c6:/#
Khám phá nội dung của vùng chứa.
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: 6.0.0 Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar Build time: Mon Dec 19 15:52:35 2022 (1671465155) Build timestamp: 1671465155 Build timestamp as int: 1671465155