रिलीज़ मॉडल

जैसा कि ओरिजनल ब्लॉग पोस्ट में बताया गया है, 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 रिलीज़ के जैसी ही होती है. रिलीज़ का शेड्यूल तेज़ होने की वजह से, हम रोलिंग रिलीज़ में कोई बदलाव शामिल नहीं करते.

एलटीएस रिलीज़ के लिए, यहां दी गई प्रोसेस और नीतियों का पालन किया जाता है:

  1. रिलीज़ के लिए, बेसलाइन कमिट तय करें.
    • एलटीएस की नई मेजर रिलीज़ के लिए, बेसलाइन कमिट, मुख्य ब्रांच का HEAD होता है.
    • माइनर या पैच रिलीज़ के लिए, बेसलाइन कमिट, एलटीएस की मौजूदा रिलीज़ का HEAD होता है.
  2. बेसलाइन कमिट से, release-<version> नाम की रिलीज़ ब्रांच बनाएं.
  3. पीआर के ज़रिए, रिलीज़ ब्रांच में बदलाव शामिल करें.
    • कम्यूनिटी, कुछ कमिट को शामिल करने का सुझाव दे सकती है. इसके लिए, GitHub पर रिलीज़ या पीआर से जुड़ी समस्याओं पर "@bazel-io flag" का जवाब दें. इससे, इन कमिट को रिलीज़ में शामिल करने से जुड़ी संभावित समस्याओं के तौर पर मार्क किया जा सकेगा. Bazel की टीम, इन कमिट की जांच करके यह तय करती है कि इन्हें रिलीज़ में शामिल किया जाए या नहीं.
    • मुख्य ब्रांच पर, पुराने वर्शन के साथ काम करने वाले कमिट को ही रिलीज़ में शामिल किया जा सकता है. मर्ज से जुड़ी समस्याओं को ठीक करने के लिए, छोटे-मोटे बदलाव किए जा सकते हैं.
  4. रिलीज़ में शामिल करने से जुड़ी समस्याओं की पहचान करें और रिलीज़ ब्रांच में मिली समस्याओं को ठीक करें.
    • postsubmit Bazel की टीम, रिलीज़ ब्रांच के टेस्ट के नतीजों पर नज़र रखती है और मिली किसी भी गड़बड़ी को ठीक करती है.
  5. रिलीज़ में शामिल करने से जुड़ी सभी समस्याओं को ठीक करने के बाद, रिलीज़ ब्रांच से रिलीज़ कैंडिडेट बनाएं.
    • रिलीज़ कैंडिडेट के बारे में, bazel-discuss, पर जानकारी दी जाती है. Bazel की टीम, कैंडिडेट के लिए कम्यूनिटी की गड़बड़ी की रिपोर्ट पर नज़र रखती है.
    • अगर रिलीज़ में शामिल करने से जुड़ी नई समस्याएं मिलती हैं, तो पिछले चरण पर वापस जाएं और सभी समस्याओं को ठीक करने के बाद, रिलीज़ कैंडिडेट बनाएं.
    • रिलीज़ कैंडिडेट बनाने के बाद, रिलीज़ ब्रांच में नई सुविधाएं नहीं जोड़ी जा सकतीं.
  6. अगर रिलीज़ में शामिल करने से जुड़ी कोई समस्या नहीं मिलती है, तो रिलीज़ कैंडिडेट को आधिकारिक रिलीज़ के तौर पर पुश करें
    • पैच रिलीज़ के लिए, रिलीज़ कैंडिडेट के रिलीज़ होने के कम से कम दो कामकाजी दिनों बाद, रिलीज़ को पुश करें.
    • मेजर और माइनर रिलीज़ के लिए, रिलीज़ कैंडिडेट के रिलीज़ होने के दो कामकाजी दिनों बाद, रिलीज़ को पुश करें. हालांकि, रिलीज़ कैंडिडेट के रिलीज़ होने के एक हफ़्ते से पहले, रिलीज़ को पुश न करें.
    • रिलीज़ को सिर्फ़ ऐसे दिन पुश किया जाता है जिसके अगले दिन कामकाजी दिन हो.
    • रिलीज़ के बारे में, 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 के अलग-अलग वर्शन के साथ काम करने की सुविधा बनाए रखना चाहते हैं, तो कृपया नियमों के साथ काम करने की सुविधा वाला पेज देखें.