बेज़ेल का परिचय

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

फ़ायदे

Bazel से ये फ़ायदे मिलते हैं:

  • बिल्ड करने के लिए इस्तेमाल की जाने वाली हाई-लेवल की भाषा. Bazel, आपके प्रोजेक्ट की बिल्ड प्रॉपर्टी के बारे में बताने के लिए, ऐसी भाषा का इस्तेमाल करता है जिसे कोई भी व्यक्ति आसानी से पढ़ सकता है. यह भाषा, सिमैंटिक लेवल पर काम करती है. अन्य टूल के मुकाबले, Bazel लाइब्रेरी, बाइनरी, स्क्रिप्ट, और डेटा सेट के कॉन्सेप्ट पर काम करता है. इससे आपको कंपाइलर और लिंकर जैसे टूल को अलग-अलग कॉल लिखने की जटिलता से बचने में मदद मिलती है.

  • Bazel तेज़ और भरोसेमंद है. Bazel, पहले किए गए सभी कामों को कैश मेमोरी में सेव करता है. साथ ही, फ़ाइल के कॉन्टेंट और बिल्ड कमांड, दोनों में हुए बदलावों को ट्रैक करता है. इस तरह, Bazel को पता चलता है कि किस चीज़ को फिर से बनाना है. साथ ही, वह सिर्फ़ उसी चीज़ को फिर से बनाता है. बिल्ड को और तेज़ करने के लिए, अपने प्रोजेक्ट को इस तरह से सेट अप किया जा सकता है कि वह ज़्यादा से ज़्यादा पैरलल और इंक्रीमेंटल तरीके से बिल्ड हो.

  • Bazel, कई प्लैटफ़ॉर्म पर काम करता है. Bazel, Linux, macOS, और Windows पर काम करता है. Bazel, एक ही प्रोजेक्ट से डेस्कटॉप, सर्वर, और मोबाइल जैसे कई प्लैटफ़ॉर्म के लिए बाइनरी और डिप्लॉय किए जा सकने वाले पैकेज बना सकता है.

  • Bazel के स्केल. Bazel, एक लाख से ज़्यादा सोर्स फ़ाइलों वाली बिल्ड को मैनेज करते समय तेज़ी से काम करता है. यह कई रिपॉज़िटरी और हज़ारों उपयोगकर्ताओं के साथ काम करता है.

  • Bazel में एक्सटेंशन की सुविधा उपलब्ध है. Bazel में कई भाषाओं का इस्तेमाल किया जा सकता है. साथ ही, इसे किसी अन्य भाषा या फ़्रेमवर्क के साथ भी इस्तेमाल किया जा सकता है.

Bazel का इस्तेमाल करना

Bazel की मदद से कोई प्रोजेक्ट बनाने या उसे टेस्ट करने के लिए, आम तौर पर ये काम किए जाते हैं:

  1. Bazel सेट अप करें. Bazel को डाउनलोड और इंस्टॉल करें.

  2. प्रोजेक्ट वर्कस्पेस सेट अप करें. यह एक ऐसी डायरेक्ट्री होती है जहां Bazel, बिल्ड इनपुट और BUILD फ़ाइलें ढूंढता है. साथ ही, यह बिल्ड आउटपुट को सेव करता है.

  3. एक BUILD फ़ाइल लिखें. इससे Bazel को यह पता चलता है कि क्या बनाना है और उसे कैसे बनाना है.

    BUILD फ़ाइल में, डोमेन के हिसाब से बनाई गई भाषा Starlark का इस्तेमाल करके, बिल्ड टारगेट तय किए जाते हैं. (उदाहरण के लिए, यहां देखें.)

    बिल्ड टारगेट, इनपुट आर्टफ़ैक्ट का एक सेट होता है. Bazel इसे और इसकी डिपेंडेंसी को बिल्ड करेगा. साथ ही, Bazel इसे बिल्ड करने के लिए, बिल्ड रूल का इस्तेमाल करेगा. इसके अलावा, बिल्ड रूल को कॉन्फ़िगर करने वाले विकल्पों का भी इस्तेमाल करेगा.

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

  4. कमांड लाइन से Bazel चलाएं. Bazel, आपके आउटपुट को वर्कस्पेस में रखता है.

Bazel का इस्तेमाल, सिर्फ़ बिल्ड बनाने के लिए नहीं किया जाता. इसका इस्तेमाल, टेस्ट चलाने और बिल्ड को क्वेरी करने के लिए भी किया जा सकता है. इससे आपके कोड में डिपेंडेंसी का पता लगाया जा सकता है.

Bazel की बिल्ड प्रोसेस

बिल्ड या टेस्ट चलाने के दौरान, Bazel ये काम करता है:

  1. लोड करता है, टारगेट से जुड़ी BUILD फ़ाइलें.

  2. यह इनपुट और उनकी डिपेंडेंसी का विश्लेषण करता है, तय किए गए बिल्ड नियमों को लागू करता है, और ऐक्शन ग्राफ़ बनाता है.

  3. यह इनपुट पर, बिल्ड ऐक्शन लागू करता है. ऐसा तब तक किया जाता है, जब तक कि फ़ाइनल बिल्ड आउटपुट नहीं मिल जाते.

पिछली सभी बिल्ड प्रोसेस का डेटा कैश मेमोरी में सेव होता है. इसलिए, Bazel कैश मेमोरी में सेव किए गए आर्टफ़ैक्ट की पहचान करके उनका फिर से इस्तेमाल कर सकता है. साथ ही, सिर्फ़ बदले गए आर्टफ़ैक्ट को फिर से बना सकता है या उनकी फिर से जांच कर सकता है. सही नतीजे पाने के लिए, Bazel को सेट अप किया जा सकता है. इससे सैंडबॉक्सिंग के ज़रिए, बिल्ड और टेस्ट को हर्मेटिकली चलाया जा सकता है. इससे, नतीजे में गड़बड़ी कम होती है और दोबारा जांच करने की सुविधा ज़्यादा मिलती है.

ऐक्शन ग्राफ़

ऐक्शन ग्राफ़, बिल्ड आर्टफ़ैक्ट, उनके बीच के संबंध, और Bazel की ओर से की जाने वाली बिल्ड कार्रवाइयों को दिखाता है. इस ग्राफ़ की मदद से Bazel, फ़ाइल के कॉन्टेंट में हुए बदलावों को ट्रैक कर सकता है. साथ ही, कार्रवाइयों में हुए बदलावों को भी ट्रैक कर सकता है. जैसे, बिल्ड या टेस्ट कमांड. इसके अलावा, यह भी जान सकता है कि पहले कौनसी बिल्ड कार्रवाई की गई थी. इस ग्राफ़ की मदद से, कोड में डिपेंडेंसी को आसानी से ट्रेस किया जा सकता है.

शुरू करने से जुड़े ट्यूटोरियल

Bazel का इस्तेमाल शुरू करने के लिए, शुरू करना लेख पढ़ें या सीधे Bazel के ट्यूटोरियल पर जाएं: