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