बेज़ल क्यों?

समस्या की शिकायत करें सोर्स देखें Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Bazel एक तेज़, सही, और बढ़ाने योग्य बिल्ड टूल है. इसमें टेस्टिंग की सुविधा इंटिग्रेट की गई है. यह इंडस्ट्री के सबसे बेहतरीन इकोसिस्टम में कई भाषाओं, रिपॉज़िटरी, और प्लैटफ़ॉर्म के साथ काम करता है.

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