ओरिजनल ब्लॉग पोस्ट में बताए गए मुताबिक, 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 पर रिलीज़ या पीआर से जुड़ी समस्याओं पर "
- रिलीज़ में आने वाली समस्याओं की पहचान करें और रिलीज़ ब्रांच में मिली समस्याओं को ठीक करें.
- postsubmit Bazel की टीम, रिलीज़ ब्रांच के टेस्टिंग के नतीजों पर नज़र रखती है और मिली किसी भी समस्या को ठीक करती है.
- रिलीज़ में आने वाली सभी समस्याओं को ठीक करने के बाद, रिलीज़ ब्रांच से रिलीज़ कैंडिडेट बनाएं.
- रिलीज़ कैंडिडेट के बारे में, bazel-discuss पर बताया जाता है. Bazel की टीम, कैंडिडेट के लिए कम्यूनिटी की ओर से दी गई गड़बड़ी की रिपोर्ट पर नज़र रखती है.
- अगर रिलीज़ में आने वाली नई समस्याओं की पहचान की जाती है, तो पिछले चरण पर वापस जाएं और सभी समस्याओं को ठीक करने के बाद, रिलीज़ कैंडिडेट बनाएं.
- रिलीज़ कैंडिडेट बनने के बाद, रिलीज़ ब्रांच में नई सुविधाएं नहीं जोड़ी जा सकतीं.
- अगर रिलीज़ में आने वाली कोई समस्या नहीं मिलती है, तो रिलीज़ कैंडिडेट को आधिकारिक रिलीज़ के तौर पर पुश करें
- पैच रिलीज़ के लिए, रिलीज़ कैंडिडेट के रिलीज़ होने के कम से कम दो कामकाजी दिनों बाद, रिलीज़ को पुश करें.
- मेजर और माइनर रिलीज़ के लिए, रिलीज़ कैंडिडेट के रिलीज़ होने के दो कामकाजी दिनों बाद, रिलीज़ को पुश करें. हालांकि, रिलीज़ कैंडिडेट के रिलीज़ होने के एक हफ़्ते से पहले, रिलीज़ को पुश न करें.
- रिलीज़ को सिर्फ़ ऐसे दिन पुश किया जाता है जिसके अगले दिन कामकाजी दिन हो.
- रिलीज़ के बारे में, bazel-discuss पर बताया जाता है. Bazel की टीम, नई रिलीज़ के लिए कम्यूनिटी की ओर से दी गई गड़बड़ी की रिपोर्ट पर नज़र रखती है और उन्हें ठीक करती है.
रिग्रेशन की रिपोर्ट करना
अगर किसी उपयोगकर्ता को Bazel की नई रिलीज़, रिलीज़ कैंडिडेट या HEAD पर मौजूद Bazel में कोई रिग्रेशन मिलता है, तो कृपया 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
की बिसेक्ट सुविधा के बारे में दस्तावेज़ देखें.
बिसेक्ट सुविधा का इस्तेमाल करने के लिए, Bazelisk को नए वर्शन पर अपग्रेड करना न भूलें.
नियमों के साथ काम करने की सुविधा
अगर आप नियमों के लेखक हैं और Bazel के अलग-अलग वर्शन के साथ काम करने की सुविधा बनाए रखना चाहते हैं, तो कृपया नियमों के साथ काम करने की सुविधा वाला पेज देखें.