यह पेज, Bazel के नियम वाले डेटाबेस के मालिकों और रखरखाव करने वालों के लिए है. इसमें बताया गया है कि रिमोट एक्ज़ीक्यूशन के किसी सिनेरियो के तहत, अपने नियमों की कंपैटिबिलिटी की जांच करने के लिए, अपने डेटाबेस के लिए Bazel के कंटीन्यूअस इंटिग्रेशन (सीआई) सिस्टम को कैसे कॉन्फ़िगर किया जाए. इस पेज पर दिए गए निर्देश, GitHub डेटाबेस में सेव किए गए प्रोजेक्ट पर लागू होते हैं.
ज़रूरी शर्तें
इस पेज पर दिए गए तरीके को पूरा करने से पहले, पक्का करें कि ये शर्तें पूरी हों:
- आपका GitHub डेटाबेस, Bazel के GitHub संगठन का हिस्सा हो.
- आपने अपने डेटाबेस के लिए Buildkite को Bazel के कंटीन्यूअस इंटिग्रेशनमें बताए गए तरीके से कॉन्फ़िगर किया हो.
टेस्टिंग के लिए, Bazel के सीआई को सेट अप करना
अपनी
.bazelci/presubmit.ymlफ़ाइल में, यह काम करें:a.
rbe_ubuntu1604नाम का कॉन्फ़िगरेशन जोड़ें.b.
rbe_ubuntu1604कॉन्फ़िगरेशन में, वे टारगेट जोड़ें जिन्हें आपको रिमोट एक्ज़ीक्यूशन के तहत टेस्ट करना है.अपने
WORKSPACEफ़ाइल में,bazel-toolchainsGitHub डेटाबेस जोड़ें. इसे सबसे नए वर्शन पर पिन करें. साथ ही,rbe_autoconfigटारगेट कोbuildkite_configनाम से जोड़ें. इस उदाहरण में,rbe_ubuntu1604के लिए BuildKite सीआई के साथ रिमोट एक्ज़ीक्यूशन के लिए टूलचेन कॉन्फ़िगरेशन बनाया गया है.
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")rbe_autoconfig(name = "buildkite_config")
presubmit.ymlफ़ाइल में किए गए बदलावों के साथ, पुल अनुरोध भेजें. (पुल अनुरोध का उदाहरण देखें.)बिल्ड के नतीजे देखने के लिए, GitHub में RBE (Ubuntu 16.04) के पुल अनुरोध की जांच के लिए, जानकारी पर क्लिक करें. जैसा कि नीचे दी गई इमेज में दिखाया गया है. पुल अनुरोध के मर्ज हो जाने और सीआई टेस्ट के रन हो जाने के बाद, यह लिंक उपलब्ध हो जाता है. (नतीजों का उदाहरण देखें.)

(ज़रूरी नहीं) bazel test (RBE (Ubuntu 16.04)) की जांच को, अपनी ब्रांच की सुरक्षा के नियम में मर्ज करने से पहले पास करने के लिए ज़रूरी टेस्ट के तौर पर सेट करें. यह सेटिंग, GitHub में सेटिंग > ब्रांच > ब्रांच की सुरक्षा के नियम में मौजूद होती है. जैसा कि नीचे दी गई इमेज में दिखाया गया है.

बिल्ड और टेस्ट के फ़ेल होने की समस्या हल करना
अगर आपका बिल्ड या टेस्ट फ़ेल हो जाता है, तो इसकी वजह यह हो सकती है:
डिफ़ॉल्ट कंटेनर में, ज़रूरी बिल्ड या टेस्ट टूल इंस्टॉल नहीं हैं.
rbe_ubuntu1604कॉन्फ़िगरेशन का इस्तेमाल करके बनाए गए बिल्ड, डिफ़ॉल्ट रूप सेrbe-ubuntu16-04कंटेनर में रन होते हैं. इसमें, कई Bazel बिल्ड के लिए सामान्य टूल शामिल होते हैं. हालांकि, अगर आपके नियमों के लिए ऐसे टूल की ज़रूरत है जो डिफ़ॉल्ट कंटेनर में मौजूद नहीं हैं, तो आपकोrbe-ubuntu16-04कंटेनर के आधार पर एक कस्टम कंटेनर बनाना होगा. साथ ही, उन टूल को शामिल करना होगा. इसके बारे में बाद में बताया गया है.बिल्ड या टेस्ट टारगेट, ऐसे नियमों का इस्तेमाल कर रहे हैं जो रिमोट एक्ज़ीक्यूशन के साथ काम नहीं करते. रिमोट एक्ज़ीक्यूशन के साथ कंपैटिबिलिटी के बारे में ज़्यादा जानने के लिए, रिमोट एक्ज़ीक्यूशन के लिए Bazel के नियमों को अडैप्ट करना लेख पढ़ें.
rbe_ubuntu1604 सीआई कॉन्फ़िगरेशन में कस्टम कंटेनर का इस्तेमाल करना
rbe-ubuntu16-04 कंटेनर, इस यूआरएल पर सार्वजनिक तौर पर उपलब्ध है:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
इसे सीधे Container Registry से पुल किया जा सकता है या सोर्स से बनाया जा सकता है. अगले सेक्शन में, दोनों विकल्पों के बारे में बताया गया है.
शुरू करने से पहले, पक्का करें कि आपने gcloud, docker, और git इंस्टॉल कर लिया हो.
अगर कंटेनर को सोर्स से बनाया जा रहा है, तो आपको Bazel का सबसे नया वर्शन भी इंस्टॉल करना होगा.
Container Registry से rbe-ubuntu16-04 को पुल करना
Container Registry से rbe-ubuntu16-04 कंटेनर को पुल करने के लिए, यह कमांड चलाएं:
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksumsha256-checksum को, सबसे नए कंटेनर के SHA256 चेकसम की वैल्यू से बदलें.
सोर्स से rbe-ubuntu16-04 कंटेनर बनाना
सोर्स से rbe-ubuntu16-04 कंटेनर बनाने के लिए, यह तरीका अपनाएं:
bazel-toolchainsडेटाबेस की कॉपी बनाएं:git clone https://github.com/bazelbuild/bazel-toolchainsटूलचेन कंटेनर के टारगेट सेट अप करें और कंटेनर बनाएं. इसके बारे में, टूलचेन कंटेनर लेख में बताया गया है.
हाल ही में बनाए गए कंटेनर को पुल करें:
gcloud docker -- pull gcr.io/project-id/custom-container-namesha256-checksum
कस्टम कंटेनर को रन करना
कस्टम कंटेनर को रन करने के लिए, इनमें से कोई एक तरीका अपनाएं:
अगर आपने कंटेनर को Container Registry से पुल किया है, तो यह कमांड चलाएं:
docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bashsha256-checksumको, सबसे नए कंटेनर के SHA256 चेकसम की वैल्यू से बदलें.अगर आपने कंटेनर को सोर्स से बनाया है, तो यह कमांड चलाएं:
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
कस्टम कंटेनर में संसाधन जोड़ना
Dockerfile या
rules_docker का इस्तेमाल करके, संसाधन या
ओरिजनल संसाधनों के दूसरे वर्शन rbe-ubuntu16-04 कंटेनर में जोड़ें.
अगर आपने Docker का इस्तेमाल पहले कभी नहीं किया है, तो यह लेख पढ़ें:
उदाहरण के लिए, Dockerfile के इस स्निपेट से my_tool_package इंस्टॉल होता है:
FROM gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
RUN apt-get update && yes | apt-get install -y my_tool_package
कस्टम कंटेनर को Container Registry पर पुश करना
कंटेनर को पसंद के मुताबिक बनाने के बाद, कंटेनर इमेज बनाएं और उसे Container Registry पर पुश करें. इसके लिए, यह तरीका अपनाएं:
कंटेनर इमेज बनाएं:
docker build -t custom-container-name.docker tag custom-container-name gcr.io/project-id/custom-container-nameकंटेनर इमेज को Container Registry पर पुश करें:
gcloud docker -- push gcr.io/project-id/custom-container-nameकंटेनर को पुश किया गया है या नहीं, यह देखने के लिए इस यूआरएल पर जाएं:
https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name
अपने कस्टम कंटेनर के SHA256 चेकसम को नोट करें. आपको इसे बाद में, अपने बिल्ड प्लैटफ़ॉर्म की परिभाषा में देना होगा.
-
ज़्यादा जानकारी के लिए, इमेज को पुश और पुल करना लेख पढ़ें.
बिल्ड प्लैटफ़ॉर्म की परिभाषा तय करना
आपको अपने
कस्टम टूलचेन कॉन्फ़िगरेशन में, Bazel प्लैटफ़ॉर्म कॉन्फ़िगरेशन शामिल करना होगा. इससे Bazel, मनचाहे हार्डवेयर/सॉफ़्टवेयर प्लैटफ़ॉर्म के हिसाब से टूलचेन
चुन सकता है. मान्य प्लैटफ़ॉर्म को अपने-आप जनरेट करने के लिए, अपने WORKSPACE में
rbe_autoconfig टारगेट को buildkite_config नाम से जोड़ा जा सकता है. इसमें, आपके कस्टम कंटेनर को चुनने के लिए अतिरिक्त
एट्रिब्यूट शामिल होते हैं. इस सेटअप के बारे में ज़्यादा जानने के लिए, rbe_autoconfig के लिए अप-टू-डेट दस्तावेज़ पढ़ें.