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

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

फ़ायदे

Bazel के ये फ़ायदे हैं:

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

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

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

  • बेज़ल स्केल. Bazel 1,00,000+ सोर्स फ़ाइलों के साथ बिल्ड मैनेज करते समय आसानी से काम करता है. यह हज़ारों रिपॉज़िटरी (डेटा स्टोर करने की जगह) और उपयोगकर्ता आधारों के साथ काम करता है. यह हज़ारों में काम करता है.

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

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

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

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

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

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

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

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

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

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

इमारत बनाने के अलावा, Bazel का इस्तेमाल टेस्ट करने और बिल्ड की क्वेरी करने के लिए भी किया जा सकता है.

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

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

  1. टारगेट के लिए काम की BUILD फ़ाइलें लोड करता है.

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

  3. आखिरी बिल्ड आउटपुट बनने तक, इनपुट पर बिल्ड कार्रवाइयां एक्ज़ीक्यूट करता है.

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

कार्रवाई ग्राफ़

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

शुरू करने के बारे में ट्यूटोरियल

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