रिलीज़-इंजीनियरिंग नीति
वर्ज़निंग, रिलीज़ टैगिंग, डेप्रिकेशन चक्र, ब्रेकिंग बदलाव और रोलबैक प्रक्रियाओं के लिए पाँच कैनोनिकल नीतियाँ।
पाँच नीतियाँ नियंत्रित करती हैं कि apothem कैसे रिलीज़ होता है।
1. सिमेंटिक वर्ज़निंग
यह परियोजना सिमेंटिक वर्ज़निंग 2.0 के अंतर्गत वितरित होती है।
संस्करण संख्याएँ MAJOR.MINOR.PATCH[-PRERELEASE][+BUILD] का रूप लेती हैं।
| वृद्धि | ट्रिगर |
|---|---|
| MAJOR | आर्टिफ़ैक्ट स्कीमा, मैनडेट पहचानकर्ता (CM-N / TM-N / CP-N), या हुक अनुबंधों में ब्रेकिंग बदलाव |
| MINOR | नए नियम, प्रत्यायोजित कार्यकर्ता, कमांड, कौशल, हुक इवेंट, या गैर-ब्रेकिंग स्कीमा विस्तार |
| PATCH | स्पष्टीकरण, एंटी-पैटर्न जोड़, दस्तावेज़ सुधार, और ऐसे संपादन जो व्यवहार नहीं बदलते |
उम्मीदवार टैग vX.Y.Z-rc.N (रिलीज़ कैंडिडेट)
या vX.Y.Z-alpha.N / vX.Y.Z-beta.N (अर्ली-एक्सेस) प्रारूप का उपयोग करते हैं।
2. रिलीज़ टैग
प्रत्येक रिलीज़ main पर vMAJOR.MINOR.PATCH रूप का एक हस्ताक्षरित git टैग
रखता है। यह टैग .github/workflows/release.yml को ट्रिगर करता है, जो
बिल्ड करता है, हस्ताक्षर करता है, SBOM और SLSA-3 उद्गम उत्पन्न करता है, और
GitHub Release पृष्ठ प्रकाशित करता है।
टैग परंपराएँ:
- प्रारूप — ठीक
vMAJOR.MINOR.PATCH। कोईrelease-उपसर्ग नहीं, कोई-finalप्रत्यय नहीं। - एनोटेशन — प्रत्येक टैग एक एनोटेटेड टैग (
git tag -a -s) होता है, जो टैग संदेश में रिलीज़-नोट्स सारांश रखता है। - हस्ताक्षर — प्रत्येक टैग GPG-हस्ताक्षरित होता है। रिलीज़ वर्कफ़्लो अतिरिक्त रूप से प्रत्येक आर्टिफ़ैक्ट पर एक Sigstore कीलेस cosign हस्ताक्षर और एक SLSA-3 उद्गम रिलीज़ प्रमाण उत्पन्न करता है, दोनों GitHub Release पृष्ठ से संलग्न होते हैं।
3. डेप्रिकेशन नीति
वर्तमान सार्वजनिक समर्थन रेखा नवीनतम रिलीज़ किया गया माइनर है। जब परियोजना के कई सार्वजनिक माइनर होते हैं, तब SECURITY.md समर्थित-संस्करण मैट्रिक्स किसी भी अतिरिक्त केवल-गंभीर-सुधार समर्थन विंडो के लिए सत्य का स्रोत है।
डेप्रिकेशन ताल:
- घोषणा — एक डेप्रिकेटेड प्रतीक या व्यवहार उस रिलीज़ के
CHANGELOG.mdके### Deprecatedखंड में घोषित किया जाता है जिसमें डेप्रिकेशन उतरता है। रिलीज़ नोट्स डेप्रिकेशन घोषणा को प्रतिबिंबित करते हैं। - छूट विंडो — डेप्रिकेटेड प्रतीक हटाने से पहले कम से कम एक पूर्ण माइनर चक्र तक उपलब्ध रहते हैं।
- हटाना — हटाना एक
MAJORवृद्धि में उतरता है। प्रत्येक हटाया गया प्रतीकCHANGELOG.mdकी एक### Removedपंक्ति और कैसे-करें गाइड के अंतर्गत एक माइग्रेशन गाइड प्रविष्टि रखता है।
4. ब्रेकिंग-बदलाव नीति
ब्रेकिंग बदलावों के लिए आवश्यक है:
- एक RFC इश्यू —
rfcsइश्यू लेबल के विरुद्ध खोला गया, जो ब्रेकिंग बदलाव, माइग्रेशन पथ और रोलबैक रणनीति का वर्णन करता है। - एक 30-दिवसीय टिप्पणी विंडो — RFC मर्ज से पहले कम से कम 30 दिनों तक खुला रहता है। मेंटेनर इस विंडो को बढ़ा सकते हैं जब प्रतिक्रिया इसकी माँग करे।
- एक MAJOR वृद्धि — जो रिलीज़ ब्रेकिंग बदलाव उतारती है वह MAJOR घटक को बढ़ाती है।
- एक माइग्रेशन गाइड — बदलाव एक कैसे-करें गाइड प्रविष्टि के साथ शिप होता है जो ऑपरेटर को माइग्रेशन के माध्यम से मार्गदर्शन देती है।
5. रोलबैक नीति
यदि कोई रिलीज़ ऐसा रिग्रेशन दिखाती है जो अपनाने को अवरुद्ध करता है:
- रिवर्ट — आपत्तिजनक कमिट
mainपर रिवर्ट कर दिए जाते हैं। - रिलीज़-प्लस-वन री-टैग — एक अनुवर्ती रिलीज़
vMAJOR.MINOR.PATCH+1के रूप में उतरती है, जो रिवर्ट और किसी भी क्रमिक सुधार को रखती है। पिछली खराब रिलीज़ GitHub Releases से हटाई नहीं जाती —CHANGELOG.mdमें एक### Yankedएनोटेशन स्थिति का दस्तावेज़ीकरण करता है ताकि पुनरुत्पादनीय बिल्ड लंगर बने रहें। - संचार — एक security-advisories सूचना (जब सुरक्षा-प्रासंगिक हो) या एक Discussions पोस्ट (जब विश्वसनीयता-प्रासंगिक हो) रोलबैक के साथ आती है।
यह भी देखें
- CHANGELOG.md — कैनोनिकल रिलीज़ बही-खाता।
- SECURITY.md — समर्थित-संस्करण मैट्रिक्स और रिपोर्टिंग चैनल।
- cicd-pipeline.md — CI जाँच श्रेणियाँ जो प्रत्येक रिलीज़ को गेट करती हैं।
- deployment-checklist.md — प्रति-रिलीज़ उत्पादन-तैयारी स्वीप।
बाह्य मैंडेट रजिस्ट्री — होस्ट प्रोजेक्ट पर संचालन के समय
पंद्रह-मैंडेट रजिस्ट्री (M1–M15) जो होस्ट प्रोजेक्ट में उत्पन्न सभी आर्टिफ़ैक्ट के लिए मैंडेट आवश्यकताएँ निर्दिष्ट करती है, इकोसिस्टम-आंतरिक मैंडेट के साथ क्रॉस-मैप की गई।
बैज नीति
README के लिए गतिशील और स्थिर बैज स्रोतों को निर्दिष्ट करें, जिसमें GitHub-नेटिव वर्कफ़्लो स्थिति, shields.io एंडपॉइंट JSON, और स्थिर बैज रूप शामिल हैं।