Bazel, तेज़ी से, सही तरीके से, और बढ़ाने योग्य बिल्ड टूल है. इसमें टेस्टिंग की सुविधा इंटिग्रेट की गई है. यह इंडस्ट्री के सबसे बेहतरीन इकोसिस्टम में कई भाषाओं, रिपॉज़िटरी, और प्लैटफ़ॉर्म के साथ काम करता है.
Bazel तेज़ी से काम करता है
Bazel को यह पता होता है कि हर बिल्ड कमांड के लिए किन इनपुट फ़ाइलों की ज़रूरत होती है. इसलिए, यह सिर्फ़ तब फिर से चलता है, जब हर बिल्ड के बीच इनपुट फ़ाइलों का सेट बदल गया हो. इससे गैर-ज़रूरी काम से बचा जा सकता है. यह एक ही कंप्यूटर या रिमोट बिल्ड नोड पर, ज़्यादा से ज़्यादा पैरललिज़्म के साथ बिल्ड कमांड चलाता है. अगर बिल्ड का स्ट्रक्चर इसकी अनुमति देता है, तो यह एक ही समय में हज़ारों बिल्ड या टेस्ट कमांड चला सकता है.
यह सुविधा, कैश मेमोरी की कई लेयर के साथ काम करती है. जैसे, मेमोरी में, डिस्क पर, और अगर उपलब्ध हो, तो रिमोट बिल्ड फ़ार्म पर. Google में, हम आम तौर पर 99% से ज़्यादा कैश हिट रेट हासिल करते हैं.
Bazel सही है
Bazel यह पक्का करता है कि आपके बाइनरी, आपके सोर्स कोड से सिर्फ़ बनाए गए हों. Bazel की कार्रवाइयां, अलग-अलग सैंडबॉक्स में चलती हैं. साथ ही, Bazel हर इनपुट फ़ाइल को ट्रैक करता है. Bazel, सिर्फ़ ज़रूरत पड़ने पर और हमेशा बिल्ड कमांड को फिर से चलाता है. इससे आपके बाइनरी अप-टू-डेट रहते हैं, ताकि एक ही सोर्स कोड से हमेशा एक ही बाइनरी मिले.
make clean को बार-बार लागू करने और ऐसे फ़ैंटम बग को ठीक करने की कोशिश करने से छुटकारा पाएं जो कभी बनाए ही नहीं गए सोर्स कोड में ठीक हो गए थे.
Bazel में एक्सटेंशन की सुविधा उपलब्ध है
अपने नियमों और मैक्रो को लिखकर, Bazel की पूरी क्षमता का इस्तेमाल करें. इससे, अलग-अलग प्रोजेक्ट में अपनी ज़रूरतों के हिसाब से Bazel को कस्टमाइज़ किया जा सकता है.
Bazel के नियम, Starlark में लिखे जाते हैं. यह हमारी प्रोग्रामिंग भाषा है, जो Python का सबसेट है. Starlark की मदद से, ज़्यादातर डेवलपर के लिए नियम लिखना आसान हो जाता है. साथ ही, ऐसे नियम भी बनाए जा सकते हैं जिनका इस्तेमाल पूरे नेटवर्क में किया जा सकता है.
इंटिग्रेट की गई टेस्टिंग
Bazel का इंटिग्रेटेड टेस्ट रनर सिर्फ़ उन टेस्ट को जानता है और उन्हें चलाता है जिन्हें फिर से चलाने की ज़रूरत होती है. इसके लिए, रिमोट एक्ज़ीक्यूशन का इस्तेमाल किया जाता है. अगर यह सुविधा उपलब्ध है, तो टेस्ट को एक साथ चलाया जाता है. रिमोट एक्ज़ीक्यूशन का इस्तेमाल करके, टेस्ट को हज़ारों बार तुरंत चलाएं. इससे, फ़्लेकी टेस्ट का पता जल्दी लगाया जा सकता है.
Bazel, टेस्ट के नतीजों को एक जगह पर अपलोड करने की सुविधा देता है. इससे, टेस्ट के नतीजों के बारे में आसानी से जानकारी दी जा सकती है. ऐसा CI पर या अलग-अलग डेवलपर के ज़रिए किया जा सकता है.
कई भाषाओं में उपलब्ध
Bazel, कई सामान्य प्रोग्रामिंग भाषाओं के साथ काम करता है. इनमें C++, Java, Kotlin, Python, Go, और Rust शामिल हैं. Bazel के एक ही इनवोकेशन में कई बाइनरी (जैसे, बैकएंड, वेब यूज़र इंटरफ़ेस (यूआई), और मोबाइल ऐप्लिकेशन) बनाई जा सकती हैं. इसके लिए, आपको किसी एक भाषा के इडियोमैटिक बिल्ड टूल का इस्तेमाल करने की ज़रूरत नहीं है.
एक से ज़्यादा रिपॉज़िटरी के साथ काम करने की सुविधा
Bazel, कई जगहों से सोर्स कोड इकट्ठा कर सकता है: आपको अपनी डिपेंडेंसी को वेंडर करने की ज़रूरत नहीं है (हालांकि, ऐसा किया जा सकता है!). इसके बजाय, Bazel को अपने सोर्स कोड या पहले से बने आर्टफ़ैक्ट (जैसे, git रिपॉज़िटरी या Maven Central) की जगह की जानकारी दी जा सकती है. इसके बाद, Bazel बाकी काम अपने-आप कर लेता है.
मल्टी-प्लैटफ़ॉर्म की सुविधा
Bazel, एक साथ कई प्लैटफ़ॉर्म के लिए प्रोजेक्ट बना सकता है. जैसे, Linux, macOS, Windows, और Android. यह एक प्लैटफ़ॉर्म पर कोड बनाने के लिए, क्रॉस-कंपाइलेशन की बेहतर सुविधाएं भी उपलब्ध कराता है. इससे दूसरे प्लैटफ़ॉर्म पर बिल्ड चलाया जा सकता है.
बड़ा नेटवर्क
इंडस्ट्री के लीडर को Bazel बहुत पसंद है. इसलिए, Bazel का इस्तेमाल करने वाले डेवलपर की एक बड़ी कम्यूनिटी बन गई है. ये डेवलपर, Bazel में योगदान भी देते हैं. ऐसे टूल, सेवाएं, और दस्तावेज़ ढूंढें जिनका इस्तेमाल Bazel कर सकता है. इनमें सलाह और SaaS ऑफ़रिंग शामिल हैं. हमारे ओपन सोर्स सॉफ़्टवेयर रिपॉज़िटरी में, प्रोग्रामिंग लैंग्वेज के लिए सहायता जैसे एक्सटेंशन एक्सप्लोर करें.