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

7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

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

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

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

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

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

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

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

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

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

  3. (ज़रूरी नहीं) bazel test (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 इंस्टॉल कर लिया हो. अगर आपको सोर्स से कंटेनर बनाना है, तो आपको Bazel का नया वर्शन भी इंस्टॉल करना होगा.

Container Registry से 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

कस्टम कंटेनर चलाना

कस्टम कंटेनर चलाने के लिए, इनमें से कोई एक काम करें:

  • अगर आपने 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 में पुश करना

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

  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. कंटेनर को सार्वजनिक तौर पर ऐक्सेस करने के लिए कॉन्फ़िगर करें. इसके बारे में सार्वजनिक तौर पर इमेज दिखाना सेक्शन में बताया गया है.

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

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

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