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 sử dụng Bazel bên trong vùng chứa Bazel và cách trực tiếp tạo dự án này từ máy chủ lưu trữ bằng vùng chứa Bazel có gắn thư mục.
Xây dựng dự án Abseil từ máy chủ lưu trữ bằng tính năng gắn thư mục
Các hướng dẫn trong phần này cho phép bạn tạo bằng vùng chứa Bazel bằng các nguồn được kiểm tra trong môi trường lưu trữ của bạn. Một vùng chứa đã được khởi động cho mỗi lệnh tạo mà bạn thực thi. Kết quả bản dựng được lưu vào bộ nhớ đệm trong máy chủ để 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 trong máy chủ lưu trữ của bạn.
git clone --depth 1 --branch 20220623.1 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à tạo bản dựng có sẵn trong thư mục đầu ra trong 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 có trình dọn dẹp bằng cách thêm bản dựng --config=asan|tsan|msan
gắn cờ để 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
Cá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 bên trong vùng chứa. Bằng cách bắt đầu một vùng chứa từ đầu của quy trình phát triển và thực hiện các thay đổi trong quy trình 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.
Sao chép dự án.
ubuntu@5a99103747c6:~$ git clone --depth 1 --branch 20220623.1 https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/
Tạo một bản dựng thông thường.
ubuntu@5a99103747c6:~/abseil-cpp$ bazel build //absl/...
Tạo dự án bằng trình dọn dẹp bằng cách thêm --config=asan|tsan|msan
tạo cờ để chọn AddressSanitizer (asan), ThreadSanitizer (tsan) hoặc
MemorySanitizer (msan) cho phù hợp.
ubuntu@5a99103747c6:~/abseil-cpp$ bazel build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
Khám phá vùng chứa Bazel
Khởi động 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
ubuntu@5a99103747c6:~$
Khám phá nội dung vùng chứa.
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
Khám phá Bazel Dockerfile
Nếu muốn kiểm tra xem hình ảnh Bazel Docker được tạo như thế nào, bạn có thể tìm thấy Dockerfile của hình ảnh đó tại bazelbuild/continuous-integration/bazel/oci.