यह पेज, Bazel नियम के डेटा स्टोर करने की जगहों के मालिकों और रखरखाव करने वालों के लिए है. इसमें बताया गया है कि आपके डेटा को स्टोर करने की जगह के लिए, Bazel लगातार इंटिग्रेशन (सीआई) सिस्टम को कैसे कॉन्फ़िगर किया जाए. इससे यह जांच की जा सकेगी कि आपके नियम, रिमोट एक्ज़ीक्यूशन की प्रोसेस के साथ काम कर सकते हैं या नहीं. इस पेज पर दिए गए निर्देश, GitHub रिपॉज़िटरी (डेटा स्टोर करने की जगह) में सेव किए गए प्रोजेक्ट पर लागू होते हैं.
ज़रूरी शर्तें
इस पेज पर दिए गए चरणों को पूरा करने से पहले, इन बातों का ध्यान रखें:
- आपका GitHub डेटा स्टोर करने की जगह, Bazel GitHub संगठन का हिस्सा है.
- आपने अपने डेटा स्टोर करने की जगह के लिए Buildkite को कॉन्फ़िगर किया है, जैसा कि Bazel AdSense इंटिग्रेशन में बताया गया है.
टेस्टिंग के लिए Bazel CI का सेट अप करना
अपनी
.bazelci/presubmit.yml
फ़ाइल में, ये काम करें:a.
rbe_ubuntu1604
नाम का कॉन्फ़िगरेशन जोड़ें.b.
rbe_ubuntu1604
कॉन्फ़िगरेशन में, उन बिल्ड और टेस्ट टारगेट को जोड़ें जिनकी आपको रिमोट तौर पर एक्ज़ीक्यूशन की सुविधा के लिए टेस्ट करना है.bazel-toolchains
GitHub की रिपॉज़िटरी को अपनीWORKSPACE
फ़ाइल में जोड़ें. इसे नई रिलीज़ में पिन किया गया था.buildkite_config
नाम वालाrbe_autoconfig
टारगेट भी जोड़ें. इस उदाहरण में,rbe_ubuntu1604
के लिए BuildKite CI की मदद से, टूलचेन कॉन्फ़िगरेशन बनाया गया है. इसकी मदद से, रिमोट तरीके से एक्ज़ीक्यूशन किया जा सकता है.
load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
presubmit.yml
फ़ाइल में अपने बदलावों के साथ पुल का अनुरोध भेजें. (पुल अनुरोध का उदाहरण देखें.)बिल्ड के नतीजे देखने के लिए, GitHub में RBE (Ubuntu 16.04) के पुल के अनुरोध की जांच के लिए जानकारी पर क्लिक करें, जैसा कि नीचे दिए गए चित्र में दिखाया गया है. पुल के अनुरोध को मर्ज करने और सीआई टेस्ट शुरू होने के बाद, यह लिंक उपलब्ध हो जाता है. (उदाहरण के तौर पर, नतीजे देखें.)
(ज़रूरी नहीं) अपनी ब्रांच की सुरक्षा के नियम में मर्ज करने से पहले, bazel टेस्ट (RBE (Ubuntu 16.04)) को पास होने के लिए टेस्ट के तौर पर सेट करें. यह सेटिंग GitHub में सेटिंग > शाखाएं > शाखा सुरक्षा नियम में मौजूद है, जैसा कि नीचे दिए गए डायग्राम में दिखाया गया है.
असफल बिल्ड और टेस्ट की समस्या का हल करना
अगर आपके बिल्ड या टेस्ट काम नहीं करते हैं, तो ऐसा इन वजहों से हो सकता है:
ज़रूरी बिल्ड या टेस्ट टूल, डिफ़ॉल्ट कंटेनर में इंस्टॉल नहीं किए जाते हैं. यह फ़ंक्शन,
rbe-ubuntu16-04
कंटेनर में डिफ़ॉल्ट रूप से चलने वालेrbe_ubuntu1604
कॉन्फ़िगरेशन का इस्तेमाल करके बनाता है. इसमें ऐसे टूल शामिल होते हैं जो Bazel के कई बिल्ड में इस्तेमाल होते हैं. हालांकि, अगर आपके नियमों के लिए ज़रूरी है कि टूल डिफ़ॉल्ट कंटेनर में मौजूद न हों, तो आपकोrbe-ubuntu16-04
कंटेनर के आधार पर कस्टम कंटेनर बनाना होगा और बाद में बताए गए तरीके से उन टूल को शामिल करना होगा.बिल्ड या टेस्ट टारगेट ऐसे नियमों का इस्तेमाल कर रहे हैं जो रिमोट तरीके से चलाने के साथ काम नहीं करते. रिमोट एक्ज़ीक्यूशन के साथ काम करने के बारे में ज़्यादा जानने के लिए, रिमोट एक्ज़ीक्यूशन के लिए Bazel के नियमों को अपनाना देखें.
rbe_ubuntu1604 CI कॉन्फ़िगरेशन में कस्टम कंटेनर का इस्तेमाल करना
rbe-ubuntu16-04
कंटेनर इस यूआरएल पर सार्वजनिक रूप से उपलब्ध है:
http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04
इसे सीधे Container Registry से लिया जा सकता है या सोर्स से बनाया जा सकता है. अगले सेक्शन में, दोनों विकल्पों के बारे में बताया गया है.
शुरू करने से पहले, पक्का करें कि आपने gcloud
, docker
, और git
इंस्टॉल किए हों.
अगर कंटेनर को सोर्स से बनाया जा रहा है, तो आपको Bazel का नया वर्शन
भी इंस्टॉल करना होगा.
Container Registry से rbe-ubuntu16-04 को निकालना
कंटेनर रजिस्ट्री से rbe-ubuntu16-04
कंटेनर को खींचने के लिए, यह निर्देश चलाएं:
gcloud docker -- pull gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum
सबसे नए कंटेनर के लिए, sha256-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/bash
नए कंटेनर के लिए,
sha256-checksum
को SHA256 चेकसम वैल्यू से बदलें.अगर आपने सोर्स से कंटेनर बनाया है, तो यह कमांड चलाएं:
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
कस्टम कंटेनर में संसाधन जोड़ना
rbe-ubuntu16-04
कंटेनर में, मूल संसाधनों के संसाधन या वैकल्पिक वर्शन जोड़ने के लिए, Dockerfile
या
rules_docker
का इस्तेमाल करें.
अगर आपने 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 में पुश करना
कंटेनर को पसंद के मुताबिक बनाने के बाद, कंटेनर की इमेज बनाएं और उसे नीचे बताए गए तरीके से कंटेनर रजिस्ट्री में पुश करें:
कंटेनर की इमेज बनाएं:
docker build -t custom-container-name.
docker tag custom-container-name gcr.io/project-id/custom-container-name
कंटेनर इमेज को कंटेनर रजिस्ट्री में पुश करें:
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
में buildkite_config
नाम के साथ
rbe_autoconfig
टारगेट जोड़ा जा सकता है. इसमें कस्टम कंटेनर चुनने के लिए अतिरिक्त
अटैच शामिल होते हैं. इस सेटअप के बारे में ज़्यादा जानकारी के लिए, rbe_autoconfig
से जुड़ा अप-टू-डेट दस्तावेज़ पढ़ें.