बिल्ड इवेंट प्रोटोकॉल

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

इवेंट बनाएं प्रोटोकॉल (BEP) की मदद से तीसरे पक्ष के प्रोग्राम, बेज़ल को शुरू करने के बारे में अहम जानकारी पा सकते हैं. इसके लिए उदाहरण के लिए, किसी IDE के लिए जानकारी इकट्ठा करने के लिए, BEP का इस्तेमाल किया जा सकता है प्लगिन या डैशबोर्ड ऐसा करता है जो बिल्ड के नतीजे दिखाता है.

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

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

  • बिल्ड इवेंट आइडेंटिफ़ायर: बिल्ड इवेंट के टाइप के आधार पर, यह ओपेक स्ट्रिंग या संरचित जानकारी बिल्ड इवेंट के बारे में ज़्यादा जानकारी मिलेगी. बिल्ड इवेंट आइडेंटिफ़ायर इनके लिए यूनीक होता है बिल्ड.

  • बच्चे: एक बिल्ड इवेंट, अन्य बिल्ड इवेंट की सूचना दे सकता है. इनमें ये शामिल हैं अपने बच्चे में उनके बिल्ड इवेंट आइडेंटिफ़ायर का इस्तेमाल करना फ़ील्ड में सेव किया जा सकता है. उदाहरण के लिए, PatternExpanded बिल्ड इवेंट उन टारगेट के बारे में बताता है जिन्हें वह बड़ा करता है बहुत बच्चों की तरह काम करता है. प्रोटोकॉल यह गारंटी देता है कि पहले इवेंट को छोड़कर सभी इवेंट इवेंट की घोषणा पिछले इवेंट से की जाती है.

  • पेलोड: पेलोड में, बिल्ड इवेंट के बारे में स्ट्रक्चर्ड जानकारी होती है. इवेंट के लिए खास तौर पर प्रोटोकॉल बफ़र मैसेज के तौर पर एन्कोड किया गया हो. ध्यान दें कि ऐसा हो सकता है कि पेलोड उम्मीद के मुताबिक न हो, लेकिन Aborted मैसेज हो सकता है अगर बिल्ड समय से पहले रद्द हो जाता है.

बिल्ड इवेंट ग्राफ़

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

इवेंट ग्राफ़ का स्ट्रक्चर, किसी कमांड का लाइफ़साइकल दिखाता है. हर बीईपी ग्राफ़ में ये विशेषता वाला आकार मौजूद है:

  1. रूट इवेंट हमेशा एक BuildStarted होता है इवेंट. अन्य सभी इवेंट, इसके डिसेंडेंट हैं.
  2. BuildStarted इवेंट के तुरंत बाद वाले बच्चों में आदेश.
  3. ऐसे इवेंट जिनमें निर्देश से तैयार किया गया डेटा शामिल होता है. जैसे, बनाई गई फ़ाइलें और जांच करने वाली फ़ाइलें नतीजे, BuildFinished से पहले दिखते हैं इवेंट.
  4. BuildFinished इवेंट को फ़ॉलो किया जा सकता है उन इवेंट के हिसाब से जिनमें बिल्ड की खास जानकारी शामिल हो. उदाहरण के लिए, मेट्रिक या प्रोफ़ाइलिंग डेटा).

बिल्ड इवेंट प्रोटोकॉल का इस्तेमाल करना

बाइनरी फ़ॉर्मैट में इस्तेमाल करें

बाइनरी फ़ॉर्मैट में बीईपी का इस्तेमाल करने के लिए:

  1. Babel को किसी फ़ाइल में प्रोटोकॉल बफ़र संदेशों को विकल्प --build_event_binary_file=/path/to/file. फ़ाइल में ये चीज़ें शामिल होंगी सीरियल वाले प्रोटोकॉल बफ़र मैसेज में, हर मैसेज की लंबाई को सीमा में रखा जाता है. हर मैसेज से पहले, इसकी लंबाई को वैरिएबल की लंबाई वाले पूर्णांक के तौर पर एन्कोड किया जाता है. इस प्रारूप को प्रोटोकॉल बफ़र लाइब्रेरी के parseDelimitedFrom(InputStream) तरीका.

  2. फिर, एक ऐसा प्रोग्राम लिखें जो क्रमिक प्रोटोकॉल बफ़र मैसेज.

टेक्स्ट या JSON फ़ॉर्मैट में इस्तेमाल करें

नीचे दिए गए Basel कमांड लाइन फ़्लैग, BEP को आउटपुट में आउटपुट करेंगे ऐसे फ़ॉर्मैट जिन्हें कोई भी व्यक्ति आसानी से पढ़ सके, जैसे कि टेक्स्ट और JSON:

--build_event_text_file
--build_event_json_file

बिल्ड इवेंट सेवा

इवेंट बनाएं सेवा प्रोटोकॉल, बिल्ड इवेंट पब्लिश करने के लिए एक सामान्य gRPC सेवा है. बिल्ड इवेंट सर्विस प्रोटोकॉल, BEP से अलग होता है और BEP इवेंट को ओपेक बाइट के रूप में देखता है. Baज़ेल की शिपिंग gRPC क्लाइंट के साथ बिल्ड इवेंट सर्विस प्रोटोकॉल को लागू करने के लिए की जाती है जो बिल्ड इवेंट प्रोटोकॉल इवेंट पब्लिश करता है. व्यक्ति --bes_backend=HOST:PORT फ़्लैग का इस्तेमाल करने के लिए इवेंट. अगर आपका बैकएंड gRPC का इस्तेमाल करता है, आपको पते से पहले सही स्कीम का इस्तेमाल करना होगा: सादे टेक्स्ट के लिए grpc:// TLS की सुविधा वाले gRPC के लिए gRPC और grpcs://.

इवेंट सेवा के लिए फ़्लैग बनाएं

Basel के पास Build Event Service प्रोटोकॉल से जुड़े कई फ़्लैग हैं, जिनमें ये शामिल हैं:

  • --bes_backend
  • --[no]bes_lifecycle_events
  • --bes_results_url
  • --bes_timeout
  • --bes_instance_name

इनमें से हर फ़्लैग की जानकारी के लिए, कमांड-लाइन रेफ़रंस.

पुष्टि और सुरक्षा

Bazz के बिल्ड इवेंट सर्विस को लागू करने की सुविधा, पुष्टि करने और TLS के साथ भी काम करती है. इन सेटिंग को नीचे दिए गए फ़्लैग इस्तेमाल करके कंट्रोल किया जा सकता है. कृपया ध्यान दें कि इन फ़्लैग का इस्तेमाल बेज़ल के रिमोट एक्ज़ीक्यूशन के लिए भी किया जाता है. इसका अर्थ है कि बिल्ड इवेंट सेवा और रिमोट एक्ज़ीक्यूशन एंडपॉइंट को एक ही शेयर करना होगा और TLS इन्फ़्रास्ट्रक्चर की पुष्टि करता है.

  • --[no]google_default_credentials
  • --google_credentials
  • --google_auth_scopes
  • --tls_certificate
  • --[no]tls_enabled

इनमें से हर फ़्लैग की जानकारी के लिए, कमांड-लाइन रेफ़रंस.

बिल्ड इवेंट सेवा और रिमोट कैशिंग

BEP में आम तौर पर लॉग फ़ाइलों के लिए कई संदर्भ होते हैं (test.log, test.xml, वगैरह) को कॉपी कर सकते हैं. रिमोट BES सर्वर आम तौर पर इन फ़ाइलों को ऐक्सेस नहीं किया जा सकता, क्योंकि ये अलग-अलग मशीनों पर होती हैं. पहुंचने का रास्ता इस समस्या को हल करने के लिए रिमोट कैश मेमोरी में सेव करने की सुविधा. Basel सभी आउटपुट फ़ाइलों को रिमोट कैश मेमोरी में अपलोड करेगा (इसमें फ़ाइलें शामिल हैं BEP में बताया गया) और BES सर्वर, संदर्भ वाली फ़ाइलों को फ़ेच कर सकता है को कैश मेमोरी में सेव करता है.

इसके लिए GitHub की समस्या 3689 देखें देखें.