इस पेज पर, Bazel कंटेनर के कॉन्टेंट के बारे में जानकारी दी गई है. साथ ही, Bazel कंटेनर में Bazel का इस्तेमाल करके, abseil-cpp प्रोजेक्ट को बनाने का तरीका बताया गया है. इसके अलावा, डायरेक्ट्री माउंट करने के साथ 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/...
AddressSanitizer (asan), ThreadSanitizer (tsan) या
MemorySanitizer (msan) को चुनने के लिए, --config=asan|tsan|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 कंटेनर का इस्तेमाल करके, बिल्ड किया जा सकता है. डेवलपमेंट वर्कफ़्लो की शुरुआत में कंटेनर शुरू करके और कंटेनर में वर्कस्पेस में बदलाव करके, बिल्ड के नतीजे कैश मेमोरी में सेव हो जाएंगे.
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/...
AddressSanitizer (asan), ThreadSanitizer (tsan) या
MemorySanitizer (msan) को चुनने के लिए, --config=asan|tsan|msan
बिल्ड फ़्लैग जोड़कर प्रोजेक्ट को सैनिटाइज़र के साथ बनाएं.
root@5a99103747c6:~/abseil-cpp# bazel build --config=--config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
Bazel कंटेनर के बारे में जानकारी
अगर आपने पहले से ही ऐसा नहीं किया है, तो 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