रिलीज़ मॉडल

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

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

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

एलटीएस रिलीज़ सहायता का चरण सबसे नया वर्शन काम करने की सुविधा बंद होने की तारीख
बेज़ेल 8 लगातार रोलिंग रिलीज़ पेज देखना लागू नहीं
बेज़ल 7 चालू है 7.1.1 दिसंबर 2026
बैजल 6 रखरखाव 6.5.0 दिसंबर 2025
बैजल 5 रखरखाव 5.4.1 जनवरी 2025
बैजल 4 बहिष्कृत 4.2.4 जनवरी 2024

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

रिलीज़ का वर्शन

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 LTS के नए वर्शन पर माइग्रेट करना होगा.

रिलीज़ के बीच का समय

Bazel नियमित तौर पर दो रिलीज़ ट्रैक के लिए, रिलीज़ पब्लिश करता है.

रोलिंग रिलीज़

  • रोलिंग रिलीज़, Google Blaze रिलीज़ के साथ कोऑर्डिनेट की जाती हैं और हर दो हफ़्ते में करीब Head से रिलीज़ की जाती हैं. यह Bazel LTS की अगली रिलीज़ की झलक है.
  • रोलिंग रिलीज़ के साथ काम न करने वाले बदलाव शिप किए जा सकते हैं. बड़े बदलावों के लिए, काम न करने वाले फ़्लैग इस्तेमाल करने का सुझाव दिया जाता है. काम न करने वाले बदलावों को रोल आउट करने का सुझाव पुराने सिस्टम के साथ काम करने की नीति के मुताबिक होना चाहिए.

एलटीएस रिलीज़

  • बड़ी रिलीज़: उम्मीद है कि करीब हर 12 महीने में, एलटीएस रिलीज़ किए गए नए एलटीएस रिलीज़ को head से हटा दिया जाएगा. एलटीएस रिलीज़ होने के बाद, नई एलटीएस रिलीज़ तुरंत चालू हो जाती है. इसके बाद, पिछली एलटीएस रिलीज़ में बदलाव शुरू कर दिया जाता है.
  • माइनर रिलीज़: ऐक्टिव एलटीएस ट्रैक पर नए माइनर वर्शन, हर दो महीने में एक बार रिलीज़ होने की उम्मीद है.
  • पैच रिलीज़: ऐक्टिव और रखरखाव के स्टेज में एलटीएस रिलीज़ के लिए नए पैच वर्शन, ज़रूरी गड़बड़ियां ठीक करने के लिए मांग पर रिलीज़ किए जा सकते हैं.
  • दो साल तक रखरखाव स्टेज में रहने के बाद, Bazel LTS की रिलीज़, अब सेवा में नहीं है.

पहले से तय की गई रिलीज़ के लिए, कृपया GitHub पर हमारी रिलीज़ से जुड़ी समस्याएं देखें.

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

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

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

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

    • Bazel के रखरखाव करने वाले, किसी रिलीज़ ब्रांच के लिए कोई खास प्रतिबद्धता चुनने का अनुरोध कर सकते हैं. यह प्रोसेस GitHub पर चेरी-पिक अनुरोध बनाकर शुरू की गई है. आइए जानते हैं कि इसे कैसे किया जाए.

      1. चेरी-पिक अनुरोध खोलें
      2. अनुरोध की जानकारी भरें
        • टाइटल: अनुरोध के लिए कम शब्दों और ज़्यादा जानकारी वाला टाइटल दें.
        • कमिट आईडी: उन कमिटमेंट के आईडी डालें जिन्हें आपको चेरी-पिक करना है. अगर कई कमिटमेंट हैं, तो उन्हें कॉमा से अलग करें.
        • कैटगरी: अनुरोध की कैटगरी बताएं.
        • समीक्षक: कई समीक्षकों के लिए, उनके GitHub आईडी को कॉमा से अलग करें.
      3. माइलस्टोन सेट करें
        • "माइलस्टोन" सेक्शन पर जाएं और सेटिंग पर क्लिक करें.
        • X.Y.Z के सही रिलीज़ ब्लॉकर चुनें. इस कार्रवाई से "रिलीज़-X.Y.Z" शाखा के लिए आपके अनुरोध को प्रोसेस करने के लिए चेरी-पिक बॉट ट्रिगर होगा.
      4. समस्या सबमिट करें
        • सारी जानकारी डालने और माइलस्टोन सेट हो जाने के बाद, समस्या सबमिट करें.
    • चेरी-पिक बॉट आपके अनुरोध को प्रोसेस करेगा और सूचना देगा कि चेरी-पिकिंग की ज़रूरी शर्तें पूरी की गई हैं या नहीं. अगर सेट किए गए काम, अपनी पसंद के मुताबिक किए जा सकते हैं, तो बॉट एक नया पुल अनुरोध बनाएगा. जब बैजल टीम के किसी सदस्य से पुल के अनुरोध को मंज़ूरी मिल जाती है, तब कमिट को चुनिंदा तरीकों से चुनकर रिलीज़ ब्रांच में मर्ज कर दिया जाता है. चेरी चुनने के पूरे अनुरोध के विज़ुअल उदाहरण के लिए, यह उदाहरण देखें.

  5. रिलीज़ ब्लॉकर की पहचान करना और रिलीज़ ब्रांच में मिली समस्याएं ठीक करना.

    • Bazel CI पर, रिलीज़ ब्रांच की जांच एक ही टेस्ट सुइट के साथ की जाती है. यह टेस्ट, postsubmit और डाउनस्ट्रीम टेस्ट पाइपलाइन में एक ही होते हैं. Bazel की टीम, रिलीज़ ब्रांच के जांच के नतीजों पर नज़र रखती है और किसी भी रिग्रेशन को ठीक करती है.
  6. सभी पहले से मालूम रिलीज़ ब्लॉकर ठीक हो जाने के बाद, रिलीज़ ब्रांच से एक नया रिलीज़ कैंडिडेट बनाएं.

    • रिलीज़ कैंडिडेट का एलान bazel-discuss पर किया जाता है. Bazel टीम, उम्मीदवार की कम्यूनिटी की गड़बड़ी की रिपोर्ट पर नज़र रखती है.
    • अगर रिलीज़ ब्लॉकर का पता चलता है, तो आखिरी चरण पर वापस जाएं और सभी समस्याओं को ठीक करने के बाद, रिलीज़ के लिए नया कैंडिडेट बनाएं.
    • पहली रिलीज़ कैंडिडेट बनने के बाद, रिलीज़ ब्रांच में नई सुविधाएं जोड़ने की अनुमति नहीं होती.
  7. अगर रिलीज़ ब्लॉकर कोई और नहीं मिलता है, तो रिलीज़ कैंडिडेट को आधिकारिक रिलीज़ के तौर पर पुश करें

    • पैच रिलीज़ के लिए, पिछली रिलीज़ कैंडिडेट के रिलीज़ होने के कम से कम दो कामकाजी दिन बाद रिलीज़ को पुश करें.
    • बड़ी और छोटी रिलीज़ के लिए, पिछली रिलीज़ कैंडिडेट के रिलीज़ होने के दो कामकाजी दिन के बाद रिलीज़ को पुश करें. हालांकि, पहली रिलीज़ कैंडिडेट के रिलीज़ होने के एक हफ़्ते से पहले रिलीज़ न करें.
    • रिलीज़ को सिर्फ़ उस दिन के लिए पुश किया जाता है जब अगला दिन कामकाजी दिन हो.
    • रिलीज़ की सूचना bazel-discuss को दी गई है. Bazel टीम नई रिलीज़ के लिए सामुदायिक गड़बड़ी की रिपोर्ट पर नज़र रखती है और उन पर कार्रवाई करती है.

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

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

उदाहरण के लिए, अगर आपका बिल्ड, Bazel 6.1.0 के साथ काम करता है, लेकिन 6.2.0 के दूसरे रिलीज़ कैंडिडेट के साथ काम नहीं करता है, तो आप इसके ज़रिए bisect कर सकते हैं

bazelisk --bisect=6.1.0..release-6.2.0rc2 build //foo:bar

अगर समस्या को दोबारा जनरेट करने की ज़रूरत हो, तो बिल्ड स्टेटस को रीसेट करने के लिए, BAZELISK_SHUTDOWN या BAZELISK_CLEAN एनवायरमेंट वैरिएबल को इससे जुड़े बैजल निर्देशों को चलाने के लिए सेट किया जा सकता है. ज़्यादा जानकारी के लिए, Bazelisk में बिसेक्ट की सुविधा के बारे में दस्तावेज़ देखें.

bisect सुविधा का इस्तेमाल करने के लिए, Bazelisk को नए वर्शन पर अपग्रेड करना न भूलें.

नियम का काम करना

अगर आप नियम बनाने वाले व्यक्ति हैं और आपको Bazel के अलग-अलग वर्शन के साथ काम करना है, तो कृपया नियम के साथ काम करने वाला पेज देखें.