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