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