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