यह पेज, Bazel नियम डेटा स्टोर करने की जगहों के मालिकों और रखरखाव करने वालों के लिए है. इसमें बताया गया है कि अपने डेटा स्टोर करने की जगह के लिए Bazel लगातार इंटिग्रेशन (सीआई) सिस्टम को कॉन्फ़िगर कैसे करें. इससे आपके नियमों की जांच की जा सकेगी और यह जांच की जा सकती है कि नियम रिमोट तरीके से काम कर रहे हैं या नहीं. इस पेज पर दिए गए निर्देश, GitHub डेटा स्टोर करने की जगहों में सेव किए गए प्रोजेक्ट पर लागू होते हैं.
ज़रूरी शर्तें
इस पेज पर दिए गए चरणों को पूरा करने से पहले, इन बातों का ध्यान रखें:
- आपका GitHub डेटा स्टोर करने की जगह, Bazel GitHub संगठन का हिस्सा है.
- आपने अपने डेटा स्टोर करने की जगह के लिए, Buildkite को कॉन्फ़िगर किया है. इस बारे में, Bazel स्टिकर इंटिग्रेशन सेक्शन में बताया गया है.
टेस्टिंग के लिए Bazel CI को सेट अप करना
अपनी
.bazelci/presubmit.yml
फ़ाइल में, ये काम करें:a.
rbe_ubuntu1604
नाम का कॉन्फ़िगरेशन जोड़ें.b.
rbe_ubuntu1604
कॉन्फ़िगरेशन में, उन बिल्ड और टेस्ट टारगेट को जोड़ें जिनकी आपको रिमोट एक्ज़ीक्यूशन की जांच करनी है.अपनी
WORKSPACE
फ़ाइल में,bazel-toolchains
GitHub रिपॉज़िटरी जोड़ें, जिसे नई रिलीज़ में पिन किया गया हो. साथ ही,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 (Ubuntu16.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
कस्टम कंटेनर चलाना
कस्टम कंटेनर चलाने के लिए, इनमें से कोई एक काम करें:
अगर आपने कंटेनर 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
कस्टम कंटेनर को कंटेनर रजिस्ट्री में भेजना
कंटेनर को पसंद के मुताबिक बनाने के बाद, कंटेनर की इमेज बनाएं और उसे नीचे दिए गए तरीके से कंटेनर रजिस्ट्री में पुश करें:
कंटेनर की इमेज बनाएं:
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
का अप-टू-डेट दस्तावेज़ पढ़ें.