इस पेज पर, Basel कंटेनर के कॉन्टेंट के बारे में जानकारी दी गई है. इसके अलावा, उन्हें बनाने का तरीका भी बताया गया है Basel का इस्तेमाल करके abseil-cpp प्रोजेक्ट बेज़ल कंटेनर में रखा जा सकता है और इस प्रोजेक्ट को सीधे को सीधे माउंट करने की सुविधा के साथ बेज़ल कंटेनर का इस्तेमाल करके, होस्ट मशीन से कॉपी किया जा सकता है.
डायरेक्ट्री माउंटिंग की मदद से, अपनी होस्ट मशीन से Abseil प्रोजेक्ट बनाएं
इस सेक्शन में दिए गए निर्देशों की मदद से, बेज़ल कंटेनर का इस्तेमाल करके बनाया जा सकता है जिसमें सोर्स को होस्ट एनवायरमेंट में चेक आउट किया गया हो. कंटेनर शुरू हो गया है हर बिल्ड कमांड के लिए इस्तेमाल किया जा सकता है. बिल्ड के नतीजों को आपके होस्ट की कैश मेमोरी में सेव किया जाता है ताकि सभी बिल्ड में उनका फिर से इस्तेमाल किया जा सके.
प्रोजेक्ट को अपनी होस्ट मशीन की किसी डायरेक्ट्री में क्लोन करें.
git clone --depth 1 --branch 20220623.1 https://github.com/abseil/abseil-cpp.git /src/workspace
ऐसा फ़ोल्डर बनाएं जिसमें कैश मेमोरी में सेव किए गए नतीजे, सभी बिल्ड के साथ शेयर किए जा सकेंगे.
mkdir -p /tmp/build_output/
प्रोजेक्ट बनाने और उसे बनाने के लिए, Bagel कंटेनर का इस्तेमाल करें आउटपुट आपकी होस्ट मशीन के आउटपुट फ़ोल्डर में उपलब्ध होते हैं.
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/...
--config=asan|tsan|msan
बिल्ड जोड़कर, सैनिटाइज़र की मदद से प्रोजेक्ट बनाएं
AddressSanitizer (asan), ThreadSanitizer (tsan) को चुनने के लिए फ़्लैग करें या
Memory Sanitizer (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 \
gcr.io/bazel-public/bazel:latest \
--output_user_root=/tmp/build_output \
build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
कंटेनर के अंदर से Abseil प्रोजेक्ट बनाएं
इस सेक्शन में दिए गए निर्देशों की मदद से, बेज़ल कंटेनर का इस्तेमाल करके बनाया जा सकता है कंटेनर के अंदर के सोर्स के साथ. शुरुआत में कंटेनर को शुरू करके अपने डेवलपमेंट वर्कफ़्लो के बारे में और कंटेनर में, बिल्ड के नतीजे कैश मेमोरी में सेव किए जाएंगे.
बेज़ल कंटेनर में शेल शुरू करें:
docker run --interactive --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest
हर कंटेनर का आईडी यूनीक होता है. नीचे दिए गए निर्देशों में, कंटेनर 5a99103747c6 था.
प्रोजेक्ट का क्लोन बनाएं.
ubuntu@5a99103747c6:~$ git clone --depth 1 --branch 20220623.1 https://github.com/abseil/abseil-cpp.git && cd abseil-cpp/
नियमित रूप से बिल्ड करें.
ubuntu@5a99103747c6:~/abseil-cpp$ bazel build //absl/...
--config=asan|tsan|msan
को जोड़कर, सैनिटाइज़र की मदद से प्रोजेक्ट बनाएं
AddressSanitizer (asan), ThreadSanitizer (tsan) को चुनने के लिए फ़्लैग बनाएं या
Memory Sanitizer (msan) इस्तेमाल करें.
ubuntu@5a99103747c6:~/abseil-cpp$ bazel build --config={asan | tsan | msan} -- //absl/... -//absl/types:variant_test
बेज़ल कंटेनर को एक्सप्लोर करें
अगर आपने पहले से ऐसा नहीं किया है, तो बेज़ल कंटेनर के अंदर एक इंटरैक्टिव शेल शुरू करें.
docker run -it --entrypoint=/bin/bash gcr.io/bazel-public/bazel:latest
ubuntu@5a99103747c6:~$
कंटेनर के कॉन्टेंट को एक्सप्लोर करें.
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
Basel Dockerfile को एक्सप्लोर करें
अगर आपको यह देखना है कि Bagel Docker इमेज कैसे बनी है, तो इसकी Dockerfile को bazelbuild/continuous-integration/bazel/oci पर देखें.