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

किसी समस्या की शिकायत करें सोर्स देखें रात · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

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

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

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

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

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

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

  2. bazel-toolchains जोड़ें GitHub रिपॉज़िटरी को आपकी WORKSPACE फ़ाइल में, पिन किया गया नई रिलीज़. साथ ही buildkite_config नाम के साथ एक rbe_autoconfig टारगेट जोड़ें. यह उदाहरण BuildKite CI की मदद से, रिमोट तौर पर एक्ज़ीक्यूट करने के लिए टूलचेन कॉन्फ़िगरेशन बनाता है rbe_ubuntu1604 के लिए.

load("@bazel_toolchains//rules:rbe_repo.bzl", "rbe_autoconfig")
rbe_autoconfig(name = "buildkite_config")
  1. presubmit.yml फ़ाइल में, अपने बदलावों के साथ पुल का अनुरोध भेजें. (देखें उदाहरण पुल अनुरोध शामिल है.)

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

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

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

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

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

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

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

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

rbe_ubuntu1604 CI कॉन्फ़िगरेशन में कस्टम कंटेनर का इस्तेमाल करना

rbe-ubuntu16-04 कंटेनर सार्वजनिक तौर पर इस यूआरएल पर उपलब्ध है:

http://gcr.io/cloud-marketplace/google/rbe-ubuntu16-04

इसे सीधे Container Registry से लिया जा सकता है या सोर्स से बनाया जा सकता है. कॉन्टेंट बनाने अगले सेक्शन में दोनों विकल्पों के बारे में बताया गया है.

शुरू करने से पहले, पक्का करें कि आपने gcloud, docker, और git को इंस्टॉल किया हो. अगर सोर्स से कंटेनर बनाया जा रहा है, तो आपको सबसे नया का वर्शन है.

कंटेनर रजिस्ट्री से 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-checksum को नया कंटेनर.

  • अगर आपने कंटेनर को सोर्स से बनाया है, तो यहां दिया गया कमांड चलाएं:

    docker run -it gcr.io/project-id/custom-container-name@sha256:sha256sum /bin/bash
    

कस्टम कंटेनर में संसाधन जोड़ना

Dockerfile का इस्तेमाल करें या संसाधन जोड़ने के लिए rules_docker या rbe-ubuntu16-04 कंटेनर के लिए मूल संसाधनों के वैकल्पिक वर्शन. अगर आपने 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. कंटेनर को सार्वजनिक तौर पर बताए गए तरीके से सार्वजनिक तौर पर ऐक्सेस करने के लिए कॉन्फ़िगर करें पहुंच योग्य है, जैसा कि यहां बताया गया है इमेज को सार्वजनिक तौर पर दिखाना.

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

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

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