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