इस पेज पर, पुराने वर्शन के साथ काम करने की सुविधा को मैनेज करने के तरीके के बारे में जानकारी दी गई है. इसमें एक रिलीज़ से दूसरी रिलीज़ पर माइग्रेट करने और पुराने वर्शन के साथ काम न करने वाले बदलावों के बारे में बताने का तरीका शामिल है.
Bazel में लगातार बदलाव हो रहे हैं. एलटीएस के मुख्य वर्शन के तहत रिलीज़ किए गए माइनर वर्शन, पुराने वर्शन के साथ पूरी तरह काम करते हैं. एलटीएस की नई मुख्य रिलीज़ में, पुराने वर्शन के साथ काम न करने वाले बदलाव हो सकते हैं. इसके लिए, माइग्रेशन से जुड़ी कुछ कोशिशें करनी पड़ सकती हैं. Bazel के रिलीज़ मॉडल के बारे में ज़्यादा जानने के लिए, कृपया रिलीज़ मॉडल वाला पेज देखें.
खास जानकारी
- हमारा सुझाव है कि बड़े बदलावों के लिए,
--incompatible_*फ़्लैग का इस्तेमाल किया जाए. - हर
--incompatible_*फ़्लैग के लिए, GitHub की समस्या में, व्यवहार में हुए बदलाव के बारे में बताया जाता है. साथ ही, माइग्रेशन के लिए निर्देश दिए जाते हैं. - हमारा सुझाव है कि पुराने वर्शन के साथ काम न करने वाले फ़्लैग को, एलटीएस की सबसे नई रिलीज़ में वापस पोर्ट किया जाए. हालांकि, डिफ़ॉल्ट रूप से फ़्लैग चालू नहीं किया जाना चाहिए.
--experimental_*फ़्लैग से सुरक्षित किए गए एपीआई और व्यवहार में कभी भी बदलाव किया जा सकता है.- कभी भी
--experimental_*या--incompatible_*फ़्लैग के साथ, प्रोडक्शन बिल्ड न चलाएं.
इस नीति का पालन करने का तरीका
- Bazel का इस्तेमाल करने वाले लोगों के लिए - Bazel को अपडेट करने का तरीका
- योगदान देने वाले लोगों के लिए - पुराने वर्शन के साथ काम न करने वाले बदलावों के लिए सबसे सही तरीके
- रिलीज़ मैनेजर के लिए - समस्या के लेबल और रिलीज़ को अपडेट करने का तरीका
स्थिर फ़ंक्शनैलिटी क्या है?
आम तौर पर, --experimental_... फ़्लैग के बिना एपीआई या व्यवहार को Bazel में स्थिर और काम करने वाली सुविधाएं माना जाता है.
इसमें इस तरह का कॉन्टेंट शामिल है:
- Starlark भाषा और एपीआई
- Bazel के साथ बंडल किए गए नियम
- Bazel के एपीआई, जैसे कि रिमोट एक्ज़ीक्यूशन एपीआई या बिल्ड इवेंट प्रोटोकॉल
- फ़्लैग और उनके सिमैंटिक्स
पुराने वर्शन के साथ काम न करने वाले बदलाव और माइग्रेशन के लिए निर्देश
नई रिलीज़ में, पुराने वर्शन के साथ काम न करने वाले हर बदलाव के लिए, Bazel की टीम माइग्रेशन के लिए निर्देश देने की कोशिश करती है. इससे आपको अपना कोड अपडेट करने में मदद मिलती है. इसमें BUILD और .bzl फ़ाइलें, स्क्रिप्ट में Bazel का इस्तेमाल, Bazel API का इस्तेमाल वगैरह शामिल हैं.
पुराने वर्शन के साथ काम न करने वाले बदलावों के लिए, --incompatible_* फ़्लैग और GitHub की समस्या होनी चाहिए.
हमारा सुझाव है कि पुराने वर्शन के साथ काम न करने वाले फ़्लैग और उससे जुड़े बदलावों को, एलटीएस की सबसे नई रिलीज़ में वापस पोर्ट किया जाए. हालांकि, डिफ़ॉल्ट रूप से फ़्लैग चालू नहीं किया जाना चाहिए. इससे उपयोगकर्ताओं को एलटीएस की अगली रिलीज़ उपलब्ध होने से पहले, पुराने वर्शन के साथ काम न करने वाले बदलावों के लिए माइग्रेट करने की अनुमति मिलती है.
पुराने वर्शन के साथ काम न करने वाले बदलावों की जानकारी देना
पुराने वर्शन के साथ काम न करने वाले हर बदलाव के लिए, समस्या में यह जानकारी दी जाती है:
- पुराने वर्शन के साथ काम न करने वाले बदलाव को कंट्रोल करने वाले फ़्लैग का नाम
- बदली गई फ़ंक्शनैलिटी का ब्यौरा
- माइग्रेशन के लिए निर्देश
जब पुराने वर्शन के साथ काम न करने वाला कोई बदलाव, Bazel के HEAD के साथ माइग्रेट करने के लिए तैयार हो जाता है, तो उसे migration-ready लेबल से मार्क किया जाना चाहिए. इसलिए, Bazel की अगली रोलिंग रिलीज़ के साथ भी ऐसा किया जाना चाहिए. जब पुराने वर्शन के साथ काम न करने वाले फ़्लैग को HEAD पर फ़्लिप किया जाता है, तो पुराने वर्शन के साथ काम न करने वाले बदलाव की समस्या बंद हो जाती है.