Bazel एक इंटिग्रेटेड टेस्टिंग वाला तेज़, सही, और बड़े पैमाने पर इस्तेमाल किया जा सकने वाला बिल्ड टूल है. यह इंडस्ट्री के सबसे बेहतर इकोसिस्टम में, कई भाषाओं, रिपॉज़िटरी, और प्लैटफ़ॉर्म के साथ काम करता है.
Bazel तेज़ी से काम करता है
Bazel को पता होता है कि हर बिल्ड कमांड के लिए कौनसी इनपुट फ़ाइलें ज़रूरी हैं. साथ ही, यह सिर्फ़ तब फिर से चलाया जाता है, जब हर बिल्ड के बीच इनपुट फ़ाइलों का सेट बदल गया हो. इससे, ग़ैर-ज़रूरी काम से बचा जा सकता है. यह एक ही कंप्यूटर या रिमोट बिल्ड नोड पर, बिल्ड कमांड को ज़्यादा से ज़्यादा पैरलल के साथ चलाता है. अगर बिल्ड के स्ट्रक्चर की अनुमति है, तो एक ही समय में हजारों बिल्ड या टेस्ट कमांड चलाए जा सकते हैं.
यह मेमोरी, डिस्क, और रिमोट बिल्ड फ़ार्म (अगर उपलब्ध हो) पर, कैश मेमोरी की कई लेयर के साथ काम करता है. Google पर, हम नियमित तौर पर 99% से ज़्यादा कैश हिट रेट हासिल करते हैं.
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 कर सकता है. इनमें सलाह और सेवा के तौर पर उपलब्ध सॉफ़्टवेयर (SaaS) भी शामिल हैं. ओपन सोर्स सॉफ़्टवेयर रिपॉज़िटरी में, प्रोग्रामिंग भाषाओं के लिए सहायता जैसे एक्सटेंशन एक्सप्लोर करें.