در این صفحه جزئیاتی در مورد محتویات ظرف Bazel، نحوه ساخت پروژه abseil-cpp با استفاده از Bazel در داخل ظرف Bazel، و نحوه ساخت این پروژه به طور مستقیم از دستگاه میزبان با استفاده از ظرف Bazel با نصب دایرکتوری ارائه می شود.
پروژه Abseil را از دستگاه میزبان خود با نصب دایرکتوری بسازید
دستورالعمل های این بخش به شما امکان می دهد با استفاده از ظرف Bazel با منابع بررسی شده در محیط میزبان خود بسازید. برای هر دستور ساختی که اجرا می کنید یک کانتینر راه اندازی می شود. نتایج ساخت در محیط میزبان شما ذخیره میشوند تا بتوان از آنها دوباره در ساختها استفاده کرد.
پروژه را به دایرکتوری در دستگاه میزبان خود کلون کنید.
git clone https://github.com/abseil/abseil-cpp.git /src/workspace
پوشه ای ایجاد کنید که دارای نتایج ذخیره شده در حافظه پنهان باشد تا در بین ساخت ها به اشتراک گذاشته شود.
mkdir -p /tmp/build_output/
از ظرف Bazel برای ساخت پروژه استفاده کنید و خروجی های ساخت را در پوشه خروجی در دستگاه میزبان خود در دسترس قرار دهید.
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/...
با افزودن --config= asan | tsan | msan
پروژه را با ضدعفونی کننده ها بسازید --config= asan | tsan | msan
پرچم ساخت --config= asan | tsan | msan
را برای انتخاب AddressSanitizer (asan)، ThreadSanitizer (tsan) یا MemorySanitizer (msan) انتخاب کنید.
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
پروژه Abseil را از داخل کانتینر بسازید
دستورالعمل های این بخش به شما امکان می دهد با استفاده از ظرف Bazel با منابع داخل ظرف بسازید. با راهاندازی یک کانتینر در ابتدای گردش کار توسعه و انجام تغییرات در فضای کاری درون کانتینر، نتایج ساخت در حافظه پنهان ذخیره میشوند.
یک پوسته را در ظرف بازل شروع کنید:
docker run --interactive --entrypoint=/bin/bash l.gcr.io/google/bazel:latest
شناسه هر ظرف منحصر به فرد است. در دستورالعمل زیر، ظرف 5a99103747c6 بود.
پروژه را شبیه سازی کنید.
root@5a99103747c6:~# git clone https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/
یک ساخت منظم انجام دهید.
root@5a99103747c6:~/abseil-cpp# bazel build //absl/...
با افزودن --config= asan | tsan | msan
پروژه را با ضدعفونی کننده ها بسازید --config= asan | tsan | msan
پرچم ساخت --config= asan | tsan | msan
را برای انتخاب AddressSanitizer (asan)، ThreadSanitizer (tsan) یا MemorySanitizer (msan) انتخاب کنید.
root@5a99103747c6:~/abseil-cpp# bazel build --config=--config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
ظرف بازل را کاوش کنید
اگر قبلاً این کار را نکرده اید، یک پوسته تعاملی را در داخل ظرف Bazel راه اندازی کنید.
docker run -it --entrypoint=/bin/bash l.gcr.io/google/bazel:latest
root@5a99103747c6:/#
محتویات ظرف را کاوش کنید.
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