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

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 के ट्यूटोरियल पर जाएं: