Bazel, Make, Maven, और Gradle जैसा ही एक ओपन-सोर्स बिल्ड और टेस्ट टूल है. यह ऐसी बिल्ड लैंग्वेज का इस्तेमाल करता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. Bazel, कई भाषाओं में प्रोजेक्ट बनाने की सुविधा देता है. साथ ही, यह कई प्लैटफ़ॉर्म के लिए आउटपुट बनाता है. Bazel, एक से ज़्यादा रिपॉज़िटरी में बड़े कोडबेस और ज़्यादा उपयोगकर्ताओं के साथ काम करता है.
फ़ायदे
Bazel से ये फ़ायदे मिलते हैं:
हाई-लेवल वाली बिल्ड लैंग्वेज. Bazel, आपके प्रोजेक्ट की बिल्ड प्रॉपर्टी के बारे में बेहतर तरीके से बताने के लिए, ऐसी भाषा का इस्तेमाल करता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. अन्य टूल के उलट, Bazel लाइब्रेरी, बाइनरी, स्क्रिप्ट, और डेटा सेट के कांसेप्ट पर काम करता है. इससे आपको कंपाइलर और लिंकर जैसे टूल के लिए अलग-अलग कॉल लिखने की जटिलता से बचा जा सकता है.
Bazel तेज़ और भरोसेमंद है. Bazel, पहले किए गए सभी काम को कैश मेमोरी में सेव करता है. साथ ही, फ़ाइल के कॉन्टेंट और बिल्ड कमांड, दोनों में हुए बदलावों को ट्रैक करता है. इस तरह, Bazel को पता चलता है कि किसी चीज़ को कब फिर से बनाना है और वह सिर्फ़ उसी चीज़ को फिर से बनाता है. अपने बिल्ड को और तेज़ करने के लिए, अपने प्रोजेक्ट को एक साथ और ज़्यादा से ज़्यादा इंक्रीमेंटल तरीके से बिल्ड करने के लिए सेट अप किया जा सकता है.
Bazel, एक से ज़्यादा प्लैटफ़ॉर्म पर काम करता है. Bazel, Linux, macOS, और Windows पर काम करता है. Bazel, एक ही प्रोजेक्ट से कई प्लैटफ़ॉर्म के लिए बाइनरी और डिप्लॉय किए जा सकने वाले पैकेज बना सकता है. इन प्लैटफ़ॉर्म में डेस्कटॉप, सर्वर, और मोबाइल शामिल हैं.
Bazel स्केल. Bazel, 1,00,000 से ज़्यादा सोर्स फ़ाइलों वाले बिल्ड को आसानी से मैनेज करता है. यह कई रिपॉज़िटरी और हज़ारों उपयोगकर्ताओं के साथ काम करता है.
Bazel में एक्सटेंशन जोड़े जा सकते हैं. इसमें कई भाषाओं का इस्तेमाल किया जा सकता है. साथ ही, किसी भी दूसरी भाषा या फ़्रेमवर्क के साथ काम करने के लिए, Bazel को बढ़ाया जा सकता है.
Bazel का इस्तेमाल करना
आम तौर पर, Bazel की मदद से किसी प्रोजेक्ट को बनाने या उसकी जांच करने के लिए, ये काम किए जाते हैं:
Bazel सेट अप करें. Bazel डाउनलोड और इंस्टॉल करें.
प्रोजेक्ट का फ़ाइल फ़ोल्डर सेट अप करें. यह एक ऐसी डायरेक्ट्री है जहां Bazel, बिल्ड इनपुट और
BUILD
फ़ाइलों को खोजता है. साथ ही, यह बिल्ड आउटपुट को सेव भी करती है.BUILD
फ़ाइल लिखें. इससे Bazel को यह पता चलता है कि क्या बनाना है और उसे कैसे बनाना है.BUILD
फ़ाइल लिखने के लिए, डोमेन के हिसाब से बनी भाषा Starlark का इस्तेमाल करके, बिल्ड टारगेट तय किए जाते हैं. (उदाहरण के लिए, यहां देखें.)बिल्ड टारगेट, इनपुट आर्टफ़ैक्ट के एक सेट के साथ-साथ उनकी डिपेंडेंसी के बारे में बताता है. साथ ही, यह भी बताता है कि Bazel इसे बनाने के लिए किस बिल्ड रूल का इस्तेमाल करेगा और बिल्ड रूल को कॉन्फ़िगर करने के लिए कौनसे विकल्प उपलब्ध हैं.
बिल्ड नियम से पता चलता है कि Bazel किन बिल्ड टूल का इस्तेमाल करेगा, जैसे कि कंपाइलर और लिंकर. साथ ही, उनके कॉन्फ़िगरेशन के बारे में भी पता चलता है. Bazel में कई बिल्ड नियम होते हैं. ये नियम, काम करने वाले प्लैटफ़ॉर्म पर काम करने वाली भाषाओं में, सबसे सामान्य आर्टफ़ैक्ट टाइप को कवर करते हैं.
कमांड लाइन से Bazel चलाएं. Bazel, आपके आउटपुट को फ़ाइल फ़ोल्डर में डाल देता है.
बाइनरी बनाने के अलावा, Bazel का इस्तेमाल टेस्ट चलाने और अपने कोड में डिपेंडेंसी का पता लगाने के लिए, बाइनरी के बारे में क्वेरी करने के लिए भी किया जा सकता है.
Bazel की बिल्ड प्रोसेस
कोई बिल्ड या टेस्ट चलाते समय, Bazel ये काम करता है:
टारगेट से जुड़ी
BUILD
फ़ाइलों को लोड करता है.इनपुट और उनकी डिपेंडेंसी का विश्लेषण करता है. साथ ही, तय किए गए बिल्ड नियम लागू करता है और कार्रवाई ग्राफ़ बनाता है.
आखिरी बिल्ड आउटपुट तैयार होने तक, इनपुट पर बिल्ड ऐक्शन इस्तेमाल करता है.
पिछले सभी बिल्ड का काम कैश मेमोरी में सेव होता है. इसलिए, Bazel कैश मेमोरी में सेव किए गए आर्टफ़ैक्ट की पहचान कर सकता है और उनका फिर से इस्तेमाल कर सकता है. साथ ही, सिर्फ़ उन आर्टफ़ैक्ट को फिर से बनाया जा सकता है या उनकी फिर से जांच की जा सकती है जिनमें बदलाव हुआ है. सटीक होने की ज़रूरी शर्त को और बेहतर बनाने के लिए, Bazel को सैंडबॉक्सिंग की मदद से, पूरी तरह से बिल्ड और टेस्ट चलाने के लिए सेट अप किया जा सकता है. इससे, गड़बड़ी को कम करने और फिर से चलाने की सुविधा को बढ़ाने में मदद मिलती है.
ऐक्शन ग्राफ़
ऐक्शन ग्राफ़, बिल्ड आर्टफ़ैक्ट और उनके बीच के संबंधों के साथ-साथ, उन बिल्ड ऐक्शन को दिखाता है जिन्हें Bazel पूरा करेगा. इस ग्राफ़ की मदद से, Bazel, फ़ाइल कॉन्टेंट में हुए बदलावों के साथ-साथ, कार्रवाइयों में हुए बदलावों को भी ट्रैक कर सकता है. जैसे, बिल्ड या टेस्ट कमांड. साथ ही, यह भी पता चलता है कि पहले कौनसा बिल्ड काम किया गया था. ग्राफ़ की मदद से, अपने कोड में डिपेंडेंसी को आसानी से ट्रैक किया जा सकता है.
शुरू करने के बारे में ट्यूटोरियल
Bazel का इस्तेमाल शुरू करने के लिए, शुरू करना देखें या सीधे Bazel के ट्यूटोरियल पर जाएं: