बिल्ड करने, टेस्ट रन करने या क्वेरी करने के लिए, बेज़ल को स्क्रिप्ट से कॉल किया जा सकता है डिपेंडेंसी ग्राफ़. Basel को असरदार स्क्रिप्टिंग के लिए डिज़ाइन किया गया है, लेकिन आपकी स्क्रिप्ट को बेहतर बनाने के लिए, इस सेक्शन में ध्यान रखने वाली कुछ बातें बताई गई हैं मज़बूत.
आउटपुट बेस चुनना
--output_base
विकल्प से यह कंट्रोल किया जाता है कि Basel प्रोसेस को किस जगह पर
एक बिल्ड के आउटपुट और साथ ही आंतरिक रूप से इस्तेमाल की जाने वाली काम करने वाली अलग-अलग फ़ाइलें
बेज़ल, जिसमें से एक लॉक एक ही समय पर होने वाले
कई Basel प्रोसेस के ज़रिए आउटपुट बेस.
अपनी स्क्रिप्ट के लिए सही आउटपुट बेस डायरेक्ट्री चुनना कई बातों पर निर्भर करता है
फ़ैक्टर. अगर आपको बिल्ड आउटपुट को किसी खास जगह पर डालना है, तो
तय करें कि आपको कौनसा आउटपुट बेस इस्तेमाल करना है. अगर आपको "रीड ओनली" बनाना है CANNOT TRANSLATE
बेज़ल (जैसे कि bazel query
), लॉक होने के तरीके ज़्यादा अहम होंगे. तय सीमा में
खास तौर पर, अगर आपको एक साथ स्क्रिप्ट के कई इंस्टेंस चलाने हैं,
आपको हर एक को एक अलग (या रैंडम) आउटपुट बेस देना होगा.
अगर आपने डिफ़ॉल्ट आउटपुट बेस वैल्यू का इस्तेमाल किया, तो आपको उसी वैल्यू के लिए मुकाबला करना होगा लॉक का इस्तेमाल, उपयोगकर्ता के इंटरैक्टिव Basel के निर्देशों के ज़रिए किया जाता है. अगर उपयोगकर्ता को ये समस्याएं आती हैं लंबे समय तक चलने वाले कमांड, जैसे कि बिल्ड शामिल किए हैं, तो आपकी स्क्रिप्ट को उनके लिए इंतज़ार करना होगा फ़ाइलों को जारी रखने से पहले उन्हें पूरा करना होगा.
सर्वर मोड के बारे में ज़रूरी जानकारी
डिफ़ॉल्ट रूप से, Basel की प्रोसेस, लंबे समय तक चलने वाली सर्वर प्रोसेस का इस्तेमाल डिफ़ॉल्ट तौर पर
ऑप्टिमाइज़ेशन. स्क्रिप्ट में Basel का उपयोग करते समय, shutdown
को कॉल करना न भूलें
या जब सर्वर का काम पूरा हो जाए, तो --max_idle_secs=5
तय करें, ताकि
जो सर्वर कुछ समय से इस्तेमाल में नहीं हैं वे तुरंत बंद हो जाते हैं.
मुझे कौनसा एग्ज़िट कोड मिलेगा?
Baज़र, नीचे दिए गए सोर्स कोड की वजह से होने वाली गड़बड़ियों के बीच अंतर करने की कोशिश करता है बाहरी गड़बड़ियों पर विचार करेगा, जो बेज़ल को सही तरीके से एक्ज़ीक्यूट करने से रोकती हैं. Basel को प्रोसेस करने पर, ये एग्ज़िट कोड मिल सकते हैं:
सभी निर्देशों के लिए इस्तेमाल होने वाले एग्ज़िट कोड:
0
- हो गया2
- कमांड लाइन से जुड़ी समस्या, गलत या गैर-कानूनी फ़्लैग या कमांड का इस्तेमाल करना या खराब एनवायरमेंट वैरिएबल. आपकी कमांड लाइन में बदलाव किया जाना चाहिए.8
- बिल्ड में रुकावट आई, लेकिन हमने उसे ऑर्डर के हिसाब से बंद कर दिया है.9
- सर्वर लॉक को रोका गया और--noblock_for_lock
को पास किया गया.32
- इस मशीन पर बाहरी सिस्टम की गड़बड़ी नहीं है.33
- Basel की मेमोरी खत्म हो गई है और वह क्रैश हो गया. आपको अपनी कमांड लाइन में बदलाव करना होगा.34
- Google के इस्तेमाल के लिए रिज़र्व है.35
- Google के इस्तेमाल के लिए रिज़र्व है.36
- पर्यावरण से जुड़ी स्थानीय समस्या, हो सकता है कि यह हमेशा के लिए हो.37
- बिना गड़बड़ी का अपवाद / बेज़ल (बेज़ल) में गड़बड़ी.38
- Google के इस्तेमाल के लिए रिज़र्व है.39
- Basel के लिए ज़रूरी ब्लॉब को रिमोट कैश से हटा दिया गया है.41-44
- Google के इस्तेमाल के लिए रिज़र्व है.45
- Build इवेंट सेवा में नतीजे पब्लिश करने में गड़बड़ी हुई.47
- Google के इस्तेमाल के लिए रिज़र्व है.
bazel build
, bazel test
निर्देशों के लिए लौटाने के कोड:
1
- बिल्ड नहीं किया जा सका.3
- ठीक है, लेकिन कुछ टेस्ट पूरे नहीं हो सके या समय खत्म हो गया.4
- बिल्ड सफल रहा, लेकिन टेस्टिंग का कोई टेस्ट नहीं मिला अनुरोध किया गया है.
bazel run
के लिए:
1
- बिल्ड नहीं किया जा सका.- अगर बिल्ड पूरा हो जाता है, लेकिन एक्ज़ीक्यूट किया गया सबप्रोसेस, बिना ज़ीरो एग्ज़िट करता है तो वह कमांड का एग्ज़िट कोड भी हो जाएगा.
bazel query
के लिए:
3
- कुछ हद तक कामयाब रहा, लेकिन क्वेरी में 1 या उससे ज़्यादा गड़बड़ियां हुईं BUILD फ़ाइल सेट का इनपुट दें. इसलिए, कार्रवाई के नतीजे 100% नहीं हैं भरोसेमंद. ऐसा शायद कमांड लाइन में मौजूद--keep_going
विकल्प की वजह से हुआ है.7
- निर्देश नहीं दिया जा सका.
आने वाले समय में Basel के वर्शन में, सामान्य फ़ेलियर की जगह अतिरिक्त एग्ज़िट कोड जोड़े जा सकते हैं
बाहर निकलने के लिए कोड 1
, जिसका मान शून्य के अलावा कोई दूसरा मान है.
हालांकि, ज़ीरो के अलावा सभी एग्ज़िट वैल्यू में हमेशा गड़बड़ी होगी.
.baezrc फ़ाइल को पढ़ा जा रहा है
डिफ़ॉल्ट रूप से, Basel, बेस में मौजूद .bazelrc
फ़ाइल को पढ़ता है
या उपयोगकर्ता की होम डायरेक्ट्री. यह है या नहीं
आपकी स्क्रिप्ट के लिए एक विकल्प है; कि आपकी स्क्रिप्ट ठीक तरह से
हर्मेटिक (जैसे कि रिलीज़ बिल्ड करते समय), आपको हर मैसेज के लिए
--bazelrc=/dev/null
विकल्प का इस्तेमाल करके. अगर आपको परफ़ॉर्मेंस
उपयोगकर्ता की पसंदीदा सेटिंग का उपयोग करके बनाए गए बिल्ड के लिए डिज़ाइन किया है, तो डिफ़ॉल्ट व्यवहार बेहतर होता है.
कमांड लॉग
Babel आउटपुट एक कमांड लॉग फ़ाइल में भी उपलब्ध है, जिसे आप ये निर्देश देंगे:
bazel info command_log
कमांड लॉग फ़ाइल में,
सबसे हाल का Basel आदेश है. ध्यान दें कि bazel info
चलाने से
कॉन्टेंट अपलोड कर दिया है, क्योंकि यह सबसे हाल का Basel कमांड बन जाता है.
हालांकि, कमांड लॉग फ़ाइल की जगह तब तक नहीं बदलेगी, जब तक कि
--output_base
या --output_user_root
विकल्पों की सेटिंग.
आउटपुट को पार्स करना
Basel आउटपुट को कई कामों के लिए पार्स करना काफ़ी आसान है. दो विकल्प, जो
ये आपकी स्क्रिप्ट के लिए काम की होती हैं. ये --noshow_progress
, प्रोग्रेस को रोकती हैं
और --show_result n
मैसेज और मैसेज भेज सकते हैं, जिनसे यह कंट्रोल होता है कि
"अप-टू-डेट नहीं होना" नहीं मैसेज प्रिंट किए जाते हैं; इन संदेशों को यहां पार्स किया जा सकता है
पता लगाया जा सकता है कि कौनसे टारगेट पूरे किए गए. साथ ही, आउटपुट की लोकेशन
बनाई गई फ़ाइलें शामिल होती हैं. अगर आप इस पर निर्भर हैं, तो n का बहुत बड़ा मान ज़रूर तय करें
ये मैसेज नहीं दिख रहे.
प्रोफ़ाइल बनाकर परफ़ॉर्मेंस की समस्या हल करना
परफ़ॉर्मेंस की प्रोफ़ाइल सेक्शन देखें.