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 ऑफ़र भी शामिल हैं. हमारे ओपन सोर्स सॉफ़्टवेयर रिपॉज़िटरी में, प्रोग्रामिंग भाषाओं के लिए सहायता जैसे एक्सटेंशन एक्सप्लोर करें.