Làm quen với vùng chứa Bazel Docker

Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
Báo cáo sự cố Xem nguồn

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 cách sử dụng vùng chứa Bazel có gắn thư mục.

Xây dựng dự án Abseil từ máy chủ của bạn bằng cách 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 được kiểm tra trong môi trường lưu trữ. 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ôi trường máy chủ lưu trữ để bạn có thể sử dụng lại kết quả đó trên các bản dựng.

Hãy 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/workspace

Tạo một thư mục có kết quả được lưu vào bộ nhớ đệm để chia sẻ giữa các bản dựng.

mkdir -p /tmp/build_output/

Dùng vùng chứa Bazel để tạo dự án và cung cấp kết quả đầu ra của bản dựng trong thư mục đầu ra của 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 \
  l.gcr.io/google/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 \
  l.gcr.io/google/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 ở đầu quy trình phát triển và thực hiện các thay đổi trong tệp vùng chứa, kết quả bản dựng sẽ được lưu vào bộ nhớ đệm.

Bắt đầu một màn hình shell trong vùng chứa Bazel:

docker run --interactive --entrypoint=/bin/bash l.gcr.io/google/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/

Xây dựng công trình thường xuyên.

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

Nếu chưa thực hiện, hãy bắt đầu một màn hình shell tương tác bên trong vùng chứa Bazel.

docker run -it --entrypoint=/bin/bash l.gcr.io/google/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: 0.17.1
Build target: bazel-out/k8-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Fri Sep 14 10:39:25 2018 (1536921565)
Build timestamp: 1536921565
Build timestamp as int: 1536921565