यह पेज, Bazel के नियमों को सेव करने वाले खातों के मालिकों और उन्हें मैनेज करने वाले लोगों के लिए है. इसमें डेटा स्टोर करने की जगह के लिए, बेज़ल कंटिन्यूअस इंटिग्रेशन (सीआई) सिस्टम को कॉन्फ़िगर करने का तरीका बताया गया है. इससे, किसी रिमोट एक्ज़ीक्यूशन के ख़िलाफ़ काम करने के लिए, आपके नियमों की जांच की जा सकती है. इस पेज पर दिए गए निर्देश GitHub के डेटा स्टोर करने की जगह में स्टोर किए गए प्रोजेक्ट पर लागू होते हैं.
ज़रूरी शर्तें
इस पेज पर बताए गए चरणों को पूरा करने से पहले, पक्का करें कि:
- GitHub का डेटा स्टोर करने की जगह, Bazel GitHub के संगठन का हिस्सा है.
- आपने डेटा स्टोर करने की जगह के लिए Buildकाइट को कॉन्फ़िगर किया है, जैसा कि Bazel लगातार इंटिग्रेशन में बताया गया है.
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 में अनुरोध की जांच आरबीई (Ubuntu 16.04) के लिए ब्यौरा पर क्लिक करें, जैसा कि नीचे दिए गए चित्र में दिखाया गया है. पुल का अनुरोध मर्ज होने और सीआई टेस्ट चलाने के बाद, यह लिंक उपलब्ध होगा. (उदाहरण के नतीजे देखें.)
(ज़रूरी नहीं) bazel में जांच (RBE (Ubuntu 16.04)) को ऐसे टेस्ट के तौर पर सेट करें जो आपको अपनी ब्रांच सुरक्षा के नियम को मर्ज करने से पहले पास होगा. यह सेटिंग GitHub में सेटिंग > ब्रांच > ब्रांच सुरक्षा नियम में मौजूद है, जैसा कि नीचे दिए गए डायग्राम में दिखाया गया है.
बिल्ड और जांच में सफल न होने की समस्या हल करना
अगर आपका बिल्ड या टेस्ट पूरे नहीं हो पाते हैं, तो इसकी ये वजहें हो सकती हैं:
डिफ़ॉल्ट कंटेनर में, ज़रूरी बिल्ड या टेस्ट टूल इंस्टॉल नहीं होते.
rbe_ubuntu1604
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
इसे सीधे कंटेनर रजिस्ट्री से लिया जा सकता है या सोर्स से बनाया जा सकता है. अगले सेक्शन में दोनों विकल्पों के बारे में बताया गया है.
शुरू करने से पहले, पक्का करें कि आपने gcloud
, docker
, और git
इंस्टॉल किए हों.
सोर्स से कंटेनर बनाते समय, आपको Bazel का नया वर्शन भी इंस्टॉल करना होगा.
कंटेनर रजिस्ट्री से 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
कस्टम कंटेनर को चलाना
कस्टम कंटेनर को चलाने के लिए, इनमें से कोई एक काम करें:
अगर आपने कंटेनर रजिस्ट्री से कंटेनर लिया है, तो यह निर्देश चलाएं:
docker run -it gcr.io/cloud-marketplace/google/rbe-ubuntu16-04@sha256:sha256-checksum/bin/bash
नए कंटेनर की SHA256 चेकसम वैल्यू से
sha256-checksum
बदलें.अगर आपने स्रोत से कंटेनर बनाया है, तो निम्न आदेश चलाएं:
docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
कस्टम कंटेनर में संसाधन जोड़ना
rbe-ubuntu16-04
कंटेनर में मूल संसाधन या रिसॉर्स के वैकल्पिक वर्शन जोड़ने के लिए, Dockerfile
या rules_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/ग्लोबल/custom-container-name
अपने कस्टम कंटेनर के SHA256 चेकसम को ध्यान में रखें. आपको इसे बाद में अपने बिल्ड प्लैटफ़ॉर्म की परिभाषा में बताना होगा.
सार्वजनिक ऐक्सेस के लिए कंटेनर को कॉन्फ़िगर करें, जैसा कि सार्वजनिक रूप से ऐक्सेस किया जा सकता है. इमेज को सार्वजनिक तौर पर दिखाना में बताया गया है.
ज़्यादा जानकारी के लिए, इमेज को खींचना और खींचना देखें.
बिल्ड प्लैटफ़ॉर्म की परिभाषा बताना
आपको अपने कस्टम टूलचेन कॉन्फ़िगरेशन में एक Bazel प्लैटफ़ॉर्म कॉन्फ़िगरेशन शामिल करना होगा, जिससे Bazel अपने मनचाहे हार्डवेयर/सॉफ़्टवेयर प्लैटफ़ॉर्म के लिए सही टूलचेन चुन सकता है. अपने-आप एक मान्य प्लैटफ़ॉर्म जनरेट करने के लिए, आप अपने WORKSPACE
a
rbe_autoconfig
टारगेट को buildkite_config
नाम के साथ जोड़ सकते हैं. इसमें, आपका कस्टम कंटेनर चुनने के लिए,
ज़्यादा जानकारी शामिल है. इस सेट अप के बारे में ज़्यादा जानकारी के लिए, rbe_autoconfig
से जुड़ा अप-टू-डेट दस्तावेज़ पढ़ें.