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