Workspace के नियमों में नॉन-हार्मेटिक व्यवहार ढूंढना

अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है किसी समस्या की शिकायत करें सोर्स देखें रात · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

नीचे दी गई सूची में, होस्ट मशीन वह मशीन है जिस पर Ba बैंक चलता है.

रिमोट एक्ज़ीक्यूशन का इस्तेमाल करते समय, असल बिल्ड और/या टेस्ट के चरण होस्ट मशीन से हो रहे होते हैं, लेकिन इसके बजाय उन्हें रिमोट तौर पर एक्ज़ीक्यूशन के लिए भेजा जाता है सिस्टम. हालांकि, फ़ाइल फ़ोल्डर के नियमों को ठीक करने के चरण पूरे हो रहे हैं पर होस्ट मशीन पर ले जाता है. अगर आपका फ़ाइल फ़ोल्डर निष्पादन के दौरान उपयोग करने के लिए होस्ट मशीन, आपका बिल्ड निम्न के कारण टूट सकता है साथ काम नहीं करता.

रिमोट के लिए, Baze के नियमों को अपनाने के हिस्से के तौर पर एक्ज़ीक्यूशन होगा, तो आपको फ़ाइल फ़ोल्डर के ऐसे नियम और उन्हें ठीक करें. इस पेज में बताया गया है कि समस्या वाले फ़ाइल फ़ोल्डर का पता कैसे लगाया जा सकता है नियम बनाने और लागू करने के लिए कहें.

नॉन-हर्मेटिक नियमों को ढूंढना

Workspace के नियमों की मदद से, डेवलपर का उपयोग कर सकते हैं, लेकिन वे इतने ज़्यादा होते हैं कि कोई जानकारी आपके काम की है. सभी मिलते-जुलते निर्देश स्थानीय तौर पर प्रोसेस किए जाते हैं. इसके अलावा, नॉन-हर्मेटिकी का संभावित सोर्स. आम तौर पर, नॉन-हर्मेटिक बिहेवियर इसके ज़रिए परिचय मिला repository_ctx, जिसकी मदद से उपयोगकर्ताओं से इंटरैक्ट किया जा सकता है से कनेक्ट करना है.

Basel 0.18 की शुरुआत में, आपको कुछ ऐसे लॉग का लॉग मिल सकता है जो शायद नॉन-हर्मेटिक हैं कार्रवाइयां करने के लिए, --experimental_workspace_rules_log_file=[PATH] फ़्लैग जोड़ें आपका बेज़ल कमांड इस्तेमाल कर सकते हैं. यहां [PATH] एक फ़ाइल नाम है, जिसके तहत लॉग फ़ाइल में बनाया गया.

इन बातों का ध्यान रखें:

  • इवेंट के चलने के दौरान ही लॉग उसे कैप्चर कर लेता है. अगर कुछ चरणों को कैश मेमोरी में सेव करने के बाद, वे लॉग में नहीं दिखेंगे, इसलिए पूरा नतीजा पाने के लिए, ये काम न करें bazel clean --expunge को पहले चलाना न भूलें.

  • कभी-कभी फ़ंक्शन फिर से चलाए जा सकते हैं. इस स्थिति में, इवेंट, लॉग में कई बार दिखेंगे.

  • फ़िलहाल, Workspace के नियम सिर्फ़ Starlark इवेंट लॉग करते हैं.

फ़ाइल फ़ोल्डर शुरू करने के दौरान क्या किया गया था, यह जानने के लिए:

  1. bazel clean --expunge चलाएं. इस निर्देश से आपकी लोकल कैश मेमोरी मिट जाएगी और किसी भी कैश मेमोरी में सेव करने की सुविधा का इस्तेमाल कर सकते हैं, ताकि यह पक्का किया जा सके कि सभी इनिशलाइज़ेशन फिर से चलाए जाएंगे.

  2. --experimental_workspace_rules_log_file=/tmp/workspacelog को अपने Basel को निर्देश दें और बिल्ड को चलाएं.

    इससे एक बाइनरी प्रोटो फ़ाइल बनती है. इसमें इस तरह के मैसेज दिखते हैं WorkspaceEvent

  3. Basel सोर्स कोड डाउनलोड करें और देखने के लिए नीचे दिया गया तरीका अपनाएं. पार्स करने के लिए आपको सोर्स कोड की ज़रूरत पड़ेगी फ़ाइल फ़ोल्डर का लॉग workspacelog पार्सर.

    git clone https://github.com/bazelbuild/bazel.git
    cd bazel
    
  4. Basel के सोर्स कोड रेपो में, पूरे फ़ाइल फ़ोल्डर के लॉग को टेक्स्ट में बदलें.

    bazel build src/tools/workspacelog:parser
    bazel-bin/src/tools/workspacelog/parser --log_path=/tmp/workspacelog > /tmp/workspacelog.txt
    
  5. यह आउटपुट बहुत ज़्यादा दिलचस्प हो सकता है. इसमें बिल्ट-इन बेज़ल से मिला आउटपुट शामिल हो सकता है नियम.

    आउटपुट से कुछ नियम हटाने के लिए, --exclude_rule विकल्प का इस्तेमाल करें. उदाहरण के लिए:

    bazel build src/tools/workspacelog:parser
    bazel-bin/src/tools/workspacelog/parser --log_path=/tmp/workspacelog \
        --exclude_rule "//external:local_config_cc" \
        --exclude_rule "//external:dep" > /tmp/workspacelog.txt
    
  6. /tmp/workspacelog.txt खोलें और असुरक्षित कार्रवाइयों की जांच करें.

लॉग में ये चीज़ें शामिल होती हैं WorkspaceEvent कुछ मैसेज जो ऐसी कार्रवाइयों के बारे में बताते हैं जो ऐडवांस लेवल पर की जा सकती हैं. repository_ctx.

संभावित तौर पर नॉन-हर्मेटिक के तौर पर हाइलाइट की गई कार्रवाइयां, इस तरह हैं:

  • execute: होस्ट एनवायरमेंट पर आर्बिट्रेरी कमांड लागू करता है. देखें कि क्या ये होस्ट एनवायरमेंट के हिसाब से कुछ भी बना सकते हैं.

  • download, download_and_extract: हर्मेटिक बिल्ड पक्का करने के लिए, पक्का करें कि कि sha256 बताया गया है

  • file, template: यह अपने-आप में नॉन-हर्मेटिक नहीं है. हालांकि, हो सकता है कि यह एक तरह का तरीका हो रिपॉज़िटरी में होस्ट एनवायरमेंट पर डिपेंडेंसी शुरू करने के लिए. पक्का करें कि आपको यह पता हो कि यह इनपुट कहां से लिया गया है और इसका इस्तेमाल नहीं किया जा रहा है जो होस्ट एनवायरमेंट पर निर्भर करता है.

  • os: यह अपने-आप में नॉन-हर्मेटिक नहीं है. हालांकि, डिपेंडेंसी पाने का आसान तरीका आपकी साइट पर मौजूद कॉन्टेंट होस्ट कर सकता है. हर्मेटिक बिल्ड आम तौर पर इसे कॉल नहीं करता. यह आकलन करते समय कि आपका इस्तेमाल हर्मेटिक है या नहीं, ध्यान रखें कि यह होस्ट पर चल रही है, न कि कर्मियों पर. पर्यावरण से जुड़ी खास जानकारी हासिल करना रिमोट बिल्ड के लिए आम तौर पर अच्छा आइडिया नहीं होता है.

  • symlink: आम तौर पर यह सुरक्षित रहता है, लेकिन आपको लाल रंग के फ़्लैग दिख रहे होंगे. इससे जुड़ा कोई भी सिमलिंक रिपॉज़िटरी के बाहर या ऐब्सलूट पाथ की वजह से ऑफ़िस से दूर रहकर काम करने वाले कर्मचारी. अगर सिमलिंक को होस्ट मशीन की प्रॉपर्टी के आधार पर बनाया गया है शायद इससे भी समस्या हो.

  • which: आम तौर पर, होस्ट पर इंस्टॉल किए गए प्रोग्राम की जांच करने में समस्या आती है क्योंकि कर्मियों के कॉन्फ़िगरेशन अलग-अलग हो सकते हैं.