यह पेज, Bazel नियमों की रिपॉज़िटरी के मालिकों और उन्हें मैनेज करने वालों के लिए है. इसमें, अपनी रिपॉज़िटरी के लिए Bazel के कॉन्टिन्यूअस इंटिग्रेशन (सीआई) सिस्टम को कॉन्फ़िगर करने का तरीका बताया गया है. इससे, रिमोट तौर पर प्रोग्राम चलाने की सुविधा के साथ काम करने के लिए, अपने नियमों की जांच की जा सकती है. इस पेज पर दिए गए निर्देश, GitHub के डेटा स्टोर करने की जगहों में सेव किए गए प्रोजेक्ट पर लागू होते हैं.
ज़रूरी शर्तें
इस पेज पर दिए गए चरणों को पूरा करने से पहले, इन बातों का ध्यान रखें:
- आपकी GitHub रिपॉज़िटरी, Bazel GitHub संगठन का हिस्सा हो.
- आपने अपने डेटा स्टोर करने की जगह के लिए Buildkite को कॉन्फ़िगर किया है, जैसा कि Baze लगातार इंटिग्रेशन में बताया गया है.
टेस्टिंग के लिए 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) के लिए, पुल रिक्वेस्ट की जांच करने के लिए जानकारी पर क्लिक करें, जैसा कि नीचे दिए गए चित्र में दिखाया गया है. यह लिंक तब उपलब्ध होगा, जब पुल के अनुरोध को मर्ज कर दिया जाएगा और सीआई टेस्ट हो जाएंगे. (नतीजे के उदाहरण देखें.)
(वैकल्पिक) बेज़ल टेस्ट (RBE (Ubuntu 16.04)) की जांच को, पास होने के लिए ज़रूरी टेस्ट के तौर पर सेट करें. इससे आपको ब्रांच की सुरक्षा के नियम में मर्ज किया जा सकता है. यह सेटिंग, GitHub में सेटिंग > ब्रांच > ब्रांच की सुरक्षा के नियम में मिलेगी, जैसा कि इस इमेज में दिखाया गया है.
असफल बिल्ड और टेस्ट से जुड़ी समस्या हल करना
अगर आपका बिल्ड या टेस्ट पूरा नहीं हो पाता है, तो इसकी ये वजहें हो सकती हैं:
डिफ़ॉल्ट कंटेनर में, ज़रूरी बिल्ड या टेस्ट टूल इंस्टॉल नहीं हैं.
rbe_ubuntu1604
कॉन्फ़िगरेशन का इस्तेमाल करने वाले बिल्ड, डिफ़ॉल्ट रूप सेrbe-ubuntu16-04
कंटेनर में चलते हैं. इसमें कई 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
इंस्टॉल कर लिया हो.
अगर सोर्स से कंटेनर बनाया जा रहा है, तो आपको Basel का नया वर्शन भी इंस्टॉल करना होगा.
कंटेनर रजिस्ट्री से rbe-ubuntu16-04 को हटाना
Container Registry से 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
के लिए अप-टू-डेट दस्तावेज़ पढ़ें.