इस पेज पर हरमैटिटी के बारे में जानकारी दी गई है. साथ ही, हर्मेटिक बिल्ड के इस्तेमाल के फ़ायदों के बारे में भी बताया गया है. आपके बिल्ड में नॉन-हर्मेटिक व्यवहार की पहचान करने की रणनीतियां.
खास जानकारी
एक जैसा इनपुट सोर्स कोड और प्रॉडक्ट कॉन्फ़िगरेशन दिए जाने पर, हर्मेटिक बिल्ड सिस्टम, बिल्ड को बदलावों से अलग करके हमेशा एक जैसा आउटपुट देता है को होस्ट सिस्टम से जुड़ना चाहिए.
बिल्ड को अलग करने के लिए, हर्मेटिक बिल्ड लाइब्रेरी के लिए असंवेदनशील होता है और लोकल या रिमोट होस्ट मशीन पर इंस्टॉल किए गए अन्य सॉफ़्टवेयर. वे इन चीज़ों पर निर्भर करते हैं बिल्ड टूल के खास वर्शन, जैसे कि कंपाइलर और डिपेंडेंसी, जैसे कि लाइब्रेरी. इससे बिल्ड प्रोसेस अपने-आप में पूरी हो जाती है, क्योंकि यह प्रोसेस पूरी नहीं होती मौजूदा एनवायरमेंट की बाहरी सेवाएं.
हरमैटिसिटी के दो अहम पहलू हैं:
- अलग-अलग: हर्मेटिक बिल्ड सिस्टम, टूल को सोर्स कोड मानता है. वे टूल की कॉपी डाउनलोड कर सकते हैं, उनका स्टोरेज मैनेज कर सकते हैं, और मैनेज की जा रही फ़ाइल में उनका इस्तेमाल कर सकते हैं पेड़. यह होस्ट मशीन और लोकल उपयोगकर्ता के बीच आइसोलेशन बनाता है, जिसमें भाषाओं के इंस्टॉल किए गए वर्शन भी शामिल हैं.
- सोर्स आइडेंटिटी: हर्मेटिक बिल्ड सिस्टम, यह पक्का करने की कोशिश करते हैं कि इनपुट. कोड डेटा स्टोर करने की जगहें, जैसे कि Git, कोड म्यूटेशन के सेट की पहचान हैश कोड का इस्तेमाल न किया जा सके. हर्मेटिक बिल्ड सिस्टम इस हैश का इस्तेमाल, बदलावों की पहचान करने के लिए करते हैं बिल्ड का इनपुट शामिल है.
फ़ायदे
हर्मेटिक बिल्ड के मुख्य फ़ायदे हैं:
- स्पीड: किसी कार्रवाई के आउटपुट को कैश मेमोरी में सेव किया जा सकता है. साथ ही, ज़रूरी नहीं है कि को तब तक चलाएं, जब तक इनपुट में बदलाव न हो.
- पैरलल एक्ज़ीक्यूशन: दिए गए इनपुट और आउटपुट के लिए, बिल्ड सिस्टम ये काम कर सकता है कुशल और समांतर गणना के लिए सभी क्रियाओं का ग्राफ़ बनाना निष्पादन. बिल्ड सिस्टम, नियमों को लोड करता है और ऐक्शन ग्राफ़ को कैलकुलेट करता है और हैश इनपुट का इस्तेमाल करें.
- एक से ज़्यादा बिल्ड: एक ही ऐसेट के लिए कई हर्मेटिक बिल्ड बनाए जा सकते हैं जिसमें हर बिल्ड के लिए अलग-अलग टूल और वर्शन का इस्तेमाल किया जाता है.
- दोहराने की क्षमता: हर्मेटिक बिल्ड समस्या हल करने के लिए अच्छा है, क्योंकि आपने उन स्थितियों के बारे में जानें जिनकी वजह से बिल्ड बनाया गया था.
नॉन-हर्मेटिकी की पहचान करना
अगर आपको Basel पर स्विच करने की तैयारी करनी है, तो माइग्रेशन की प्रोसेस को बेहतर बनाएं आपके मौजूदा बिल्ड' ऐडवांस लेवल के बारे में बात कर पाते हैं. इसके कुछ सामान्य सोर्स बिल्ड में नॉन-हर्मेटिकिटी:
.mk
फ़ाइलों में आर्बिट्रेरी प्रोसेसिंग- ऐसी कार्रवाइयां या टूल जो तय नहीं कर पाते कि फ़ाइलें बनती हैं. आम तौर पर, इनमें ये फ़ाइलें शामिल होती हैं बिल्ड आईडी या टाइमस्टैंप
- सिस्टम बाइनरी, जो सभी होस्ट में अलग-अलग होती हैं. जैसे,
/usr/bin
बाइनरी, कुल पाथ, नेटिव C++ नियमों के अपने-आप कॉन्फ़िगरेशन के लिए सिस्टम C++ कंपाइलर) - बिल्ड के दौरान सोर्स ट्री में लिखना. यह एक ही सोर्स को रोकता है ट्री का उपयोग किसी अन्य टारगेट के लिए नहीं किया जा सकता. पहला बिल्ड सोर्स को लिखता है ट्री, टारगेट A के लिए सोर्स ट्री को ठीक करता है. फिर, टारगेट B बनाने की कोशिश की जा रही है विफल.
नॉन-हर्मेटिक बिल्ड की समस्या हल करना
लोकल कैश मेमोरी में सेव होने पर, उन समस्याओं का पता चलता है जो लोकल कैश मेमोरी पर असर डालती हैं नॉन-हर्मेटिक कार्रवाइयां.
- पक्का करें कि शून्य क्रम में होने वाले बिल्ड मौजूद हों: अगर
make
का इस्तेमाल किया जाता है और बिल्ड सही तरीके से काम करता है, बिल्ड को फिर से चलाने से कोई लक्ष्य दोबारा नहीं बनाना चाहिए. अगर हर बिल्ड को चलाया जाता है, तो चरण दो बार या अलग-अलग सिस्टम पर चरण पूरे करने के लिए, फ़ाइल के कॉन्टेंट के हैश की तुलना करें और इससे अलग-अलग नतीजे मिलते हैं, तो बिल्ड फिर से नहीं बनाया जा सकता. - इसके लिए चरण चलाएं डीबग लोकल कैश मेमोरी हिट हम कई संभावित क्लाइंट मशीनों से ऐसे मामले जिनमें क्लाइंट एनवायरमेंट लीक हो रहा हो.
- एक ऐसे डॉक कंटेनर के अंदर बिल्ड चलाएं जिसमें चेक-आउट किया गया सोर्स ट्री और होस्ट टूल की साफ़ तौर पर जानकारी देने वाली सूची. गड़बड़ी पैदा करते हैं और गड़बड़ी के मैसेज इंप्लिसिट सिस्टम डिपेंडेंसी को कैच कर लेंगे.
- इसका इस्तेमाल करके, हरमैटिसिटी से जुड़ी समस्याओं का पता लगाएं और उन्हें हल करें रिमोट तौर पर लागू करने के नियम.
- सख्त सैंडबॉक्सिंग चालू करें हर कार्रवाई के स्तर पर हो सकता है. इसकी वजह यह है कि बिल्ड में की गई कार्रवाइयां, स्थिति बिल्ड या आउटपुट से जुड़ी समस्या का हल है.
- Workspace के नियम
इसकी मदद से डेवलपर, बाहरी फ़ाइल फ़ोल्डर में डिपेंडेंसी जोड़ सकते हैं. हालांकि,
इतनी होनी चाहिए कि उस प्रोसेस में आर्बिट्रेरी प्रोसेसिंग हो सके. आप
Basel Workspace के नियमों में, नॉन-हर्मेटिक (हर्मेटिक) कार्रवाइयों का लॉग पाएं. इसके लिए
फ़्लैग जोड़ रहा है
--experimental_workspace_rules_log_file=PATH
से आपका बेज़ल कमांड इस्तेमाल कर सकते हैं.
बेज़ल के साथ हरमैटिसिटी
हर्मेटिक का इस्तेमाल करके दूसरे प्रोजेक्ट को कैसे सफलता मिली, इस बारे में ज़्यादा जानकारी के लिए बनाने की कोशिश करते हैं, तो BagelCon से जुड़ी ये बातें देखें:
- Bazz के ऐप्लिकेशन की मदद से, रीयल-टाइम सिस्टम बनाना (SpaceX)
- बेज़ल रिमोट एक्ज़िक्यूशन ऐंड रिमोट कैशिंग (Uber और DualSigma)
- रिमोट एक्ज़ीक्यूशन और कैश मेमोरी की मदद से तेज़ी से बिल्ड
- Basel के प्रॉडक्ट को फ़्यूज़ करना: तेज़ी से इंक्रीमेंटल बिल्ड
- दूर से एक्ज़ीक्यूशन बनाम लोकल एक्ज़ीक्यूशन
- रिमोट कैश मेमोरी में सेव होने की सुविधा को बेहतर बनाना (आईबीएम)
- BMW की मदद से, सेल्फ़-ड्राइविंग कार बनाना (BMW)
- Bazel + सवाल-जवाब की सुविधा की मदद से सेल्फ़ ड्राइविंग कार बनाना (GM क्रूज़)