रिलीज़ मॉडल

समस्या की शिकायत करें सोर्स देखें

जैसा कि मूल ब्लॉग पोस्ट में बताया गया है, Bazel 4.0 और उसके बाद के वर्शन में, दो रिलीज़ ट्रैक इस्तेमाल किए जा सकते हैं: रोलिंग रिलीज़ और लंबे समय तक चलने वाले सपोर्ट (एलटीएस) रिलीज़. इस पेज पर, Bazel के रिलीज़ मॉडल के बारे में ताज़ा जानकारी मिलेगी.

रिलीज़ वर्शन

Bazel, major.minor.patch Semantic वर्शन स्कीम का इस्तेमाल करता है.

  • मुख्य रिलीज़ में ऐसी सुविधाएं होती हैं जो पिछली रिलीज़ के साथ काम नहीं करती. 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 पर हमारी रिलीज़ से जुड़ी समस्याओं को देखें.

सपोर्ट मैट्रिक्स

एलटीएस रिलीज़ सहायता का स्तर सबसे नया वर्शन इस सुविधा को बंद किया जा सकता है
बेज़ेल 7 लगातार GitHub का रिलीज़ पेज देखें लागू नहीं
बैजल 6 चालू है 6.4.0 दिसंबर 2025
बैजल 5 रखरखाव 5.4.1 जनवरी 2025
बैजल 4 रखरखाव 4.2.4 जनवरी 2024

Bazel की सभी रिलीज़, GitHub पर रिलीज़ पेज पर मिल सकती हैं.

रिलीज़ की प्रक्रिया और नीतियां

रोलिंग रिलीज़ के लिए, प्रोसेस आसान है: करीब हर दो हफ़्ते में, एक नई रिलीज़ बनाई जाती है और उसे उसी बेसलाइन के साथ अलाइन किया जाता है जो Google की इंटरनल ब्लेज़ रिलीज़ के साथ होती है. तेज़ी से रिलीज़ करने के शेड्यूल की वजह से, हम रोलिंग रिलीज़ में किसी भी बदलाव का बैकपोर्ट नहीं करते हैं.

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

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

रिग्रेशन की रिपोर्ट करना

अगर किसी उपयोगकर्ता को नए Bazel रिलीज़, रिलीज़ कैंडिडेट या यहां तक कि HEAD पर Bazel के लिए रिग्रेशन मिलता है, तो कृपया GitHub पर गड़बड़ी की शिकायत करें. बेज़ेलिस का इस्तेमाल करके, अपराधी को दो अलग-अलग मैसेज दिए जा सकते हैं और इस जानकारी को गड़बड़ी की रिपोर्ट में शामिल किया जा सकता है.

उदाहरण के लिए, अगर आपका बिल्ड 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 के अलग-अलग वर्शन के साथ काम करना है, तो कृपया नियम के साथ काम करने की सुविधा वाला पेज देखें.