दूरस्थ निष्पादन के नियमों का परीक्षण करने के लिए Bazel CI को कॉन्फ़िगर करना

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

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

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

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

Bazel 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. (ज़रूरी नहीं) bazel में जांच (RBE (Ubuntu 16.04)) को ऐसे टेस्ट के तौर पर सेट करें जो आपको अपनी ब्रांच सुरक्षा के नियम को मर्ज करने से पहले पास होगा. यह सेटिंग GitHub में सेटिंग > ब्रांच > ब्रांच सुरक्षा नियम में मौजूद है, जैसा कि नीचे दिए गए डायग्राम में दिखाया गया है.

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

बिल्ड और जांच में सफल न होने की समस्या हल करना

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

  • डिफ़ॉल्ट कंटेनर में, ज़रूरी बिल्ड या टेस्ट टूल इंस्टॉल नहीं होते. rbe_ubuntu1604rbe-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 कंटेनर बनाने के लिए, ये करें:

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

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

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

    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

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

कंटेनर को पसंद के मुताबिक बनाने के बाद, कंटेनर इमेज को बनाएं और उसे कंटेनर रजिस्ट्री में इस तरह से पुश करें:

  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/ग्लोबल/custom-container-name

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

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

    ज़्यादा जानकारी के लिए, इमेज को खींचना और खींचना देखें.

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

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