بدء استخدام حاوية Docker

تقدّم هذه الصفحة تفاصيل حول محتوى حاوية Bazel وكيفية إنشاء مشروع aseil-cpp باستخدام Bazel داخل حاوية Bazel، وكيفية إنشاء هذا المشروع مباشرةً. من الجهاز المضيف باستخدام حاوية Bazel مع تثبيت الدليل.

يمكنك إنشاء مشروع Obseil من جهازك المضيف مع دليل.

تتيح لك التعليمات الواردة في هذا القسم الإنشاء باستخدام حاوية 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 لاختيار 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

إنشاء مشروع باسيل من داخل الحاوية

تتيح لك التعليمات الواردة في هذا القسم الإنشاء باستخدام حاوية Bazel مع المصادر داخل الحاوية. من خلال بدء حاوية في بداية سير عمل التطوير وإجراء تغييرات في worskpace ضمن الحاوية، سيتم تخزين نتائج الإصدار مؤقتًا.

ابدأ تشغيل واجهة مستخدم في حاوية 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 لتحديد AddressAddressitizer (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