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ủ bằng vùng chứa Bazel có tính năng gắn thư mục.
Tạo dự án Abseil từ máy chủ 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 có các nguồn được kiểm xuất trong môi trường máy chủ. Một vùng chứa sẽ khởi động cho mỗi lệnh tạo mà bạn thực thi. Kết quả tạo được lưu vào bộ nhớ đệm trong môi trường máy chủ để có thể dùng lại trên các bản tạo.
Sao chép dự án vào một thư mục trong máy chủ.
git clone https://github.com/abseil/abseil-cpp.git /src/workspaceTạo một thư mục sẽ có kết quả được lưu vào bộ nhớ đệm để chia sẻ trên các bản tạo.
mkdir -p /tmp/build_output/Sử dụng vùng chứa Bazel để tạo dự án và cung cấp các đầu ra bản tạo trong thư mục đầu ra trên máy chủ.
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ờ tạo --config=asan|tsan|msan build
để 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_testTạ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 vùng chứa Bazel có các nguồn bên trong vùng chứa. Bằng cách khởi động một vùng chứa ở đầu quy trình phát triển và thực hiện các thay đổi trong không gian làm việc bên trong vùng chứa, kết quả tạo 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:latestMỗ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.
Sao chép dự án.
root@5a99103747c6:~# git clone https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/Thực hiện một bản tạo 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ờ --config=asan|tsan|msan
tạo để 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_testKhám phá vùng chứa Bazel
Nếu bạn chưa làm, hãy khởi động một shell tương tác bên trong vùng chứa Bazel.
docker run -it --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest
root@5a99103747c6:/#Khám phá nội dung 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/binroot@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.12root@5a99103747c6:/# python3 -V Python 3.6.6root@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