रिमोट एक्ज़ीक्यूशन की जांच के नियमों के लिए, Bazel CI को कॉन्फ़िगर करना

समस्या की शिकायत करें सोर्स देखें

यह पेज, बैजल नियम का डेटा स्टोर करने की जगहों के मालिकों और रखरखाव करने वालों के लिए है. इसमें आपकी रिपॉज़िटरी के लिए बेज़ल कंटिन्यूअस इंटिग्रेशन (सीआई) सिस्टम को कॉन्फ़िगर करने का तरीका बताया गया है. इससे यह जांच की जा सकती है कि रिमोट एक्ज़ीक्यूशन की स्थिति के साथ आपके नियम काम करते हैं या नहीं. इस पेज पर दिए गए निर्देश, GitHub रिपॉज़िटरी में स्टोर किए गए प्रोजेक्ट पर लागू होते हैं.

ज़रूरी शर्तें

इस पेज पर दिए गए चरणों को पूरा करने से पहले, पक्का करें कि:

टेस्टिंग के लिए Baze CI को सेट अप करना

  1. अपनी .bazelci/presubmit.yml फ़ाइल में, ये काम करें:

    a. rbe_ubuntu1604 नाम वाला कॉन्फ़िगरेशन जोड़ें.

    b. rbe_ubuntu1604 कॉन्फ़िगरेशन में, ऐसे बिल्ड और टेस्ट टारगेट जोड़ें जिनकी जांच आपको रिमोट तौर पर एक्ज़ीक्यूट करने से करनी है.

  2. 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")
  1. presubmit.yml फ़ाइल में, अपने बदलावों के साथ पुल का अनुरोध भेजें. (पुल के अनुरोध का उदाहरण देखें.)

  2. बिल्ड के नतीजे देखने के लिए, GitHub में आरबीई (Ubuntu 16.04) पुल अनुरोध की जांच के ब्यौरा पर क्लिक करें, जैसा कि नीचे दिए गए डायग्राम में दिखाया गया है. यह लिंक तब उपलब्ध होगा, जब पुल के अनुरोध को मर्ज कर दिया जाएगा और सीआई टेस्ट हो जाएंगे. (नतीजों के उदाहरण देखें.)

    परिणामों के उदाहरण

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

    ब्रांच की सुरक्षा के नियमों की सेटिंग

असफल बिल्ड और टेस्ट से जुड़ी समस्या हल करना

अगर आपका बिल्ड या टेस्ट फ़ेल हो जाता है, तो ऐसा इन वजहों से हो सकता है:

  • बिल्ड या टेस्ट करने के लिए ज़रूरी टूल, डिफ़ॉल्ट कंटेनर में इंस्टॉल नहीं हैं. इसे rbe-ubuntu16-04 कंटेनर में डिफ़ॉल्ट रूप से चलने वाले rbe_ubuntu1604 कॉन्फ़िगरेशन का इस्तेमाल करके बनाया जाता है. इसमें कई बेज़ल बिल्ड के लिए आम तौर पर इस्तेमाल किए जाने वाले टूल शामिल हैं. हालांकि, अगर आपके नियमों के हिसाब से यह ज़रूरी है कि टूल डिफ़ॉल्ट कंटेनर में मौजूद न हों, तो आपको rbe-ubuntu16-04 कंटेनर के आधार पर कस्टम कंटेनर बनाना होगा. साथ ही, उन टूल को बाद में बताए गए तरीके से शामिल करना होगा.

  • बनाएं या टेस्ट टारगेट उन नियमों का इस्तेमाल कर रहे हैं जो रिमोट तौर पर एक्ज़ीक्यूट करने की सुविधा के साथ काम नहीं करते. रिमोट एक्ज़ीक्यूशन के साथ काम करने के बारे में जानकारी के लिए, रिमोट एक्ज़ीक्यूशन के लिए Baज़ल नियमों को लागू करना देखें.

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 कंटेनर बनाने के लिए, यह तरीका अपनाएं:

  1. bazel-toolchains डेटा स्टोर करने की जगह का क्लोन बनाएं:

    git clone https://github.com/bazelbuild/bazel-toolchains
    
  2. टूलचेन कंटेनर टारगेट सेट अप करें और टूलचेन कंटेनर में बताए गए तरीके से कंटेनर बनाएं.

  3. हाल ही में बने कंटेनर को नीचे की ओर खींचें:

    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

कस्टम कंटेनर को कंटेनर रजिस्ट्री में भेजना

कंटेनर को कस्टमाइज़ करने के बाद, कंटेनर इमेज बनाएं और उसे नीचे दिए गए तरीके से कंटेनर रजिस्ट्री में भेजें:

  1. कंटेनर इमेज बनाएं:

    docker build -t custom-container-name.
    docker tag custom-container-name gcr.io/project-id/custom-container-name
    
  2. कंटेनर इमेज को कंटेनर रजिस्ट्री में भेजें:

    gcloud docker -- push gcr.io/project-id/custom-container-name
    
  3. कंटेनर को पुश किए जाने की पुष्टि करने के लिए, यहां दिए गए यूआरएल पर जाएं:

    https://console.cloud.google.com/gcr/images/project-id/GLOBAL/custom-container-name

  4. अपने कस्टम कंटेनर के SHA256 चेकसम पर ध्यान दें. आपको बाद में, इसे बिल्ड प्लैटफ़ॉर्म की डेफ़िनिशन में सबमिट करना होगा.

  5. कंटेनर को सार्वजनिक तौर पर ऐक्सेस करने के लिए कॉन्फ़िगर करें. इसके बारे में सार्वजनिक तौर पर इमेज दिखाना सेक्शन में बताया गया है.

    ज़्यादा जानकारी के लिए, पुशिंग ऐंड पुलिंग इमेज देखें.

बिल्ड प्लैटफ़ॉर्म की परिभाषा तय करना

आपको अपने कस्टम टूलचेन कॉन्फ़िगरेशन में Bagel प्लैटफ़ॉर्म कॉन्फ़िगरेशन शामिल करना होगा. इससे Baze, अपनी पसंद के हार्डवेयर/सॉफ़्टवेयर प्लैटफ़ॉर्म के हिसाब से टूलचेन चुन पाएगा. अपने-आप एक मान्य प्लैटफ़ॉर्म जनरेट करने के लिए, WORKSPACE में buildkite_config नाम वाला rbe_autoconfig टारगेट जोड़ा जा सकता है. इसमें कस्टम कंटेनर चुनने के लिए, ज़्यादा एट्रिब्यूट शामिल किए जा सकते हैं. इस सेटअप के बारे में ज़्यादा जानकारी के लिए, rbe_autoconfig के अप-टू-डेट दस्तावेज़ पढ़ें.