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