ओरिजनल ब्लॉग पोस्ट में बताया गया है कि Bazel 4.0 और इसके बाद के वर्शन में, दो रिलीज़ ट्रैक के लिए सहायता मिलती है: रोलिंग रिलीज़ और लंबे समय तक सहायता (एलटीएस) रिलीज़. इस पेज पर, Bazel के रिलीज़ मॉडल के बारे में नई जानकारी दी गई है.
रिलीज़ वर्शनिंग
Bazel, major.minor.patch सिमेंटिक वर्शनिंग स्कीम का इस्तेमाल करता है.
- मुख्य रिलीज़ में ऐसी सुविधाएं होती हैं जो पिछली रिलीज़ के साथ काम नहीं करती हैं. Bazel का हर मुख्य वर्शन, एलटीएस रिलीज़ होता है.
- माइनर रिलीज़ में, गड़बड़ियों को ठीक करने के लिए बैकवर्ड-कंपैटिबल सुविधाएं शामिल होती हैं. साथ ही, इसमें मुख्य ब्रांच से बैक-पोर्ट की गई सुविधाएं भी शामिल होती हैं.
- पैच रिलीज़ में, गंभीर गड़बड़ियों को ठीक किया जाता है.
इसके अलावा, रिलीज़ से पहले के वर्शन को दिखाने के लिए, अगले मेजर वर्शन नंबर में हाइफ़न और तारीख का सफ़िक्स जोड़ा जाता है.
उदाहरण के लिए, हर टाइप की नई रिलीज़ के लिए वर्शन नंबर इस तरह से होंगे:
- मेजर: 6.0.0
- सामान्य: 6.1.0
- पैच: 6.1.2
- रिलीज़ से पहले: 7.0.0-pre.20230502.1
सहायता पाने की प्रोसेस
Bazel के हर मुख्य वर्शन के लिए, सहायता के चार चरण होते हैं:
- रोलिंग: यह मुख्य वर्शन अब भी प्री-रिलीज़ में है. Bazel टीम, HEAD से रोलिंग रिलीज़ पब्लिश करती है.
- चालू है: यह मेजर वर्शन, एलटीएस का मौजूदा वर्शन है. Bazel टीम, मुख्य सुविधाओं और गड़बड़ियों को ठीक करने से जुड़े अपडेट को अपने माइनर रिलीज़ में बैकपोर्ट करती है.
- मेंटेनेंस: यह मेजर वर्शन, एलटीएस का पुराना वर्शन है. इस पर फ़िलहाल काम चल रहा है. Bazel टीम, इस एलटीएस रिलीज़ में सिर्फ़ सुरक्षा से जुड़ी समस्याओं और ओएस के साथ काम न करने से जुड़ी समस्याओं के लिए, अहम गड़बड़ियों को ठीक करने का वादा करती है.
- अब काम नहीं करता: Bazel टीम अब इस मुख्य वर्शन के लिए सहायता नहीं देती है. सभी उपयोगकर्ताओं को Bazel के नए एलटीएस वर्शन पर माइग्रेट करना चाहिए.
रिलीज़ करने की फ़्रीक्वेंसी
Bazel, दो रिलीज़ ट्रैक के लिए नियमित तौर पर रिलीज़ पब्लिश करता है.
रोलिंग रिलीज़
- रोलिंग रिलीज़, Google Blaze रिलीज़ के साथ कोऑर्डिनेट की जाती हैं. इन्हें हर दो हफ़्ते में HEAD से रिलीज़ किया जाता है. यह Bazel के अगले एलटीएस वर्शन की झलक है.
- रोलिंग रिलीज़ में, ऐसे बदलाव शामिल हो सकते हैं जो काम नहीं करते. हमारा सुझाव है कि पुराने सिस्टम के साथ काम न करने वाले फ़्लैग का इस्तेमाल, बड़े बदलावों के लिए किया जाए. पुराने सिस्टम के साथ काम न करने वाले बदलावों को रोल आउट करते समय, पुराने सिस्टम के साथ काम करने की सुविधा से जुड़ी हमारी नीति का पालन करना चाहिए.
एलटीएस रिलीज़
- मेजर रिलीज़: हर 12 महीने में, HEAD से एक नई एलटीएस रिलीज़ होने की उम्मीद है. एलटीएस का नया वर्शन रिलीज़ होने के बाद, वह तुरंत ऐक्टिव स्टेज में चला जाता है. वहीं, एलटीएस का पिछला वर्शन मेंटेनेंस स्टेज में चला जाता है.
- माइनर रिलीज़: ऐक्टिव एलटीएस ट्रैक पर नए माइनर वर्शन, हर दो महीने में एक बार रिलीज़ किए जाते हैं.
- पैच रिलीज़: एक्टिव और रखरखाव के चरणों में एलटीएस रिलीज़ के लिए नए पैच वर्शन, गंभीर गड़बड़ियों को ठीक करने के लिए मांग पर रिलीज़ किए जाएंगे.
- Bazel की एलटीएस रिलीज़, दो साल तक रखरखाव के चरण में रहने के बाद, बंद होने के चरण में पहुंच जाती है.
प्लान की गई रिलीज़ के लिए, कृपया GitHub पर रिलीज़ से जुड़ी समस्याएं देखें.
सपोर्ट मैट्रिक्स
| एलटीएस रिलीज़ | सहायता का चरण | सबसे नया वर्शन | सहायता बंद होने की तारीख |
|---|---|---|---|
| Bazel 7 | लगातार | GitHub का रिलीज़ पेज देखें | लागू नहीं |
| Bazel 6 | चालू है | 6.4.0 | दिसंबर 2025 |
| Bazel 5 | रखरखाव | 5.4.1 | जनवरी 2025 |
| Bazel 4 | रखरखाव | 4.2.4 | जनवरी 2024 |
Bazel के सभी वर्शन, GitHub पर रिलीज़ पेज पर देखे जा सकते हैं.
रिलीज़ करने की प्रक्रिया और नीतियां
रोलिंग रिलीज़ के लिए, प्रोसेस आसान है: हर दो हफ़्ते में, एक नई रिलीज़ बनाई जाती है. यह Google की इंटरनल Blaze रिलीज़ के बेसलाइन के मुताबिक होती है. रिलीज़ शेड्यूल के हिसाब से, हम रोलिंग रिलीज़ में कोई भी बदलाव वापस नहीं लाते.
एलटीएस रिलीज़ के लिए, यहां दी गई प्रोसेस और नीतियों का पालन किया जाता है:
- रिलीज़ के लिए बेसलाइन कमिट तय करें.
- एलटीएस के नए मेजर वर्शन के लिए, बेसलाइन कमिट, मुख्य ब्रांच का HEAD होता है.
- माइनर या पैच रिलीज़ के लिए, बेसलाइन कमिट, उसी एलटीएस रिलीज़ के मौजूदा सबसे नए वर्शन का HEAD होता है.
- बेसलाइन कमिट से
release-<version>के नाम से रिलीज़ ब्रांच बनाएं. - पुल रिक्वेस्ट के ज़रिए, रिलीज़ ब्रांच में बदलावों को बैकपोर्ट करें.
- कम्यूनिटी, कुछ कमिट को वापस पोर्ट करने का सुझाव दे सकती है. इसके लिए, GitHub की समस्याओं या पीआर से जुड़ी समस्याओं पर "
@bazel-io flag" का जवाब दें. इससे उन्हें संभावित रिलीज़ ब्लॉकर के तौर पर मार्क किया जा सकेगा. Bazel टीम, इन समस्याओं को प्राथमिकता के हिसाब से व्यवस्थित करती है और यह तय करती है कि कमिट को वापस पोर्ट करना है या नहीं. - सिर्फ़ मुख्य ब्रांच पर किए गए ऐसे कमिट वापस लाए जा सकते हैं जो पुराने सिस्टम के साथ काम करते हैं. मर्ज करने से जुड़ी समस्याओं को हल करने के लिए, कुछ और छोटे-मोटे बदलाव किए जा सकते हैं.
- कम्यूनिटी, कुछ कमिट को वापस पोर्ट करने का सुझाव दे सकती है. इसके लिए, GitHub की समस्याओं या पीआर से जुड़ी समस्याओं पर "
- रिलीज़ को रोकने वाली समस्याओं की पहचान करें और रिलीज़ ब्रांच में मिली समस्याओं को ठीक करें.
- Bazel CI पर, रिलीज़ ब्रांच की जांच postsubmit और डाउनस्ट्रीम टेस्ट पाइपलाइन में एक ही टेस्ट सुइट से की जाती है. Bazel टीम, रिलीज़ ब्रांच के टेस्टिंग के नतीजों पर नज़र रखती है. साथ ही, अगर कोई रिग्रेशन मिलता है, तो उसे ठीक करती है.
- जब रिलीज़ से जुड़ी सभी समस्याएं ठीक हो जाएं, तब रिलीज़ ब्रांच से नया रिलीज़ कैंडिडेट बनाएं.
- रिलीज़ कैंडिडेट की सूचना bazel-discuss पर दी जाती है. Bazel टीम, कैंडिडेट के लिए कम्यूनिटी की ओर से भेजी गई गड़बड़ी की रिपोर्ट पर नज़र रखती है.
- अगर रिलीज़ में रुकावट डालने वाली नई समस्याएं मिलती हैं, तो पिछले चरण पर वापस जाएं. इसके बाद, सभी समस्याओं को हल करने के बाद, रिलीज़ के लिए नया कैंडिडेट बनाएं.
- रिलीज़ ब्रांच में नई सुविधाएं तब तक नहीं जोड़ी जा सकतीं, जब तक कि रिलीज़ कैंडिडेट का पहला वर्शन न बन जाए.
- अगर रिलीज़ में कोई और समस्या नहीं मिलती है, तो रिलीज़ कैंडिडेट को आधिकारिक रिलीज़ के तौर पर पुश करें
- पैच रिलीज़ के लिए, रिलीज़ को कम से कम दो कामकाजी दिन बाद पुश करें. ऐसा तब करें, जब रिलीज़ कैंडिडेट का आखिरी वर्शन रिलीज़ हो गया हो.
- मुख्य और सामान्य रिलीज़ के लिए, रिलीज़ को आखिरी रिलीज़ कैंडिडेट के रिलीज़ होने के दो कामकाजी दिनों के बाद पुश करें. हालांकि, इसे पहले रिलीज़ कैंडिडेट के रिलीज़ होने के एक हफ़्ते से पहले पुश न करें.
- रिलीज़ को सिर्फ़ उस दिन पुश किया जाता है जब अगला दिन कामकाजी दिन हो.
- इस रिलीज़ की सूचना bazel-discuss पर दी गई है. Bazel टीम, नई रिलीज़ के लिए कम्यूनिटी की ओर से भेजी गई गड़बड़ी की रिपोर्ट पर नज़र रखती है और उन्हें ठीक करती है.
रिग्रेशन की रिपोर्ट करना
अगर किसी उपयोगकर्ता को Bazel के नए वर्शन, रिलीज़ कैंडिडेट या HEAD वर्शन में कोई गड़बड़ी मिलती है, तो कृपया GitHub पर गड़बड़ी की शिकायत करें. Bazelisk का इस्तेमाल करके, समस्या पैदा करने वाले कमिट का पता लगाया जा सकता है. साथ ही, इस जानकारी को बग रिपोर्ट में शामिल किया जा सकता है.
उदाहरण के लिए, अगर Bazel 6.1.0 के साथ आपका बिल्ड पूरा हो जाता है, लेकिन 6.2.0 के दूसरे रिलीज़ कैंडिडेट के साथ पूरा नहीं होता है, तो इस कमांड का इस्तेमाल करके बिसेक्ट किया जा सकता है
bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar
समस्या को फिर से बनाने के लिए, बिल्ड की स्थिति को रीसेट करने की ज़रूरत पड़ने पर, उससे जुड़ी Bazel कमांड चलाने के लिए, BAZELISK_SHUTDOWN या BAZELISK_CLEAN एनवायरमेंट वैरिएबल सेट किया जा सकता है. ज़्यादा जानकारी के लिए, Bazelisk की bisect सुविधा के बारे में दस्तावेज़ देखें.
bisect सुविधा का इस्तेमाल करने के लिए, Bazelisk को नए वर्शन पर अपग्रेड करना न भूलें.
नियम के साथ काम करने की सुविधा
अगर आप नियम बनाने वाले व्यक्ति हैं और आपको Bazel के अलग-अलग वर्शन के साथ काम करने वाले नियम बनाने हैं, तो कृपया नियम के साथ काम करने वाले वर्शन पेज देखें.