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

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 की मदद से कोई प्रोजेक्ट बनाने या उसकी जांच करने के लिए, आम तौर पर ये काम किए जाते हैं:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ऐक्शन ग्राफ़

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

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

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