प्रकाशक खाता सेटअप
@ahmed-g-gad/apothem के लिए npmjs.com विश्वसनीय प्रकाशक और GitHub-पक्ष की रिलीज़ पूर्वापेक्षाएँ कॉन्फ़िगर करें।
यह रनबुक रिलीज़ सतह के प्रकाशक पक्ष को कॉन्फ़िगर करता है। वितरण व्यवस्था में एक
ही रजिस्ट्री है: npmjs.com पर स्कोप्ड npm पैकेज @ahmed-g-gad/apothem, जिसे
publish-npm.yml वर्कफ़्लो प्रकाशित करता है। यह वर्कफ़्लो v*.*.* टैग पुश पर
release.yml के साथ-साथ चलता है और उसकी प्रतीक्षा नहीं करता (tag इनपुट के साथ
मैन्युअल डिस्पैच फ़ॉलबैक है)। release एनवायरनमेंट अनुमोदन ही गेट है: GitHub
Release, Pages, CI, अनुरूपता और हार्नेस वर्कफ़्लो के हरे होने के बाद ऑपरेटर इसे
अनुमोदित करता है। हर अन्य आर्टिफ़ैक्ट स्वयं GitHub Release पृष्ठ पर शिप होता है और
उसे किसी बाहरी प्रकाशक खाते की आवश्यकता नहीं होती।
पहचान मानचित्र
| सतह | खाता | पैकेज पहचान |
|---|---|---|
| GitHub | ahmed-g-gad | ahmed-g-gad/apothem |
| npm (npmjs.com) | ahmed-g-gad | @ahmed-g-gad/apothem |
GitHub स्वामी को भविष्य में बदलने की अनुमति है। जहाँ कोई प्लेटफ़ॉर्म गतिशील रेज़ोल्यूशन की अनुमति देता है, वहाँ वर्कफ़्लो और इंस्टॉलर लॉजिक github.repository, github.repository_owner, या APOTHEM_GITHUB_REPO पढ़ता है। रजिस्ट्री पैकेज पहचानकर्ता स्थिर रहता है, क्योंकि उपयोगकर्ता पैकेज का नाम इंस्टॉल करते हैं, अनुरक्षक के खाते का नाम नहीं।
npm (npmjs.com)
-
ahmed-g-gadके रूप मेंhttps://www.npmjs.com/में साइन इन करें। -
खाते पर दो-कारक प्रमाणीकरण सक्षम करें।
-
स्कोप्ड पैकेज नाम की पुष्टि करें:
npm view @ahmed-g-gad/apothem name404का अर्थ है कि स्कोप्ड पैकेज अभी तक प्रकाशित नहीं हुआ है। प्रकाशन से पहले किसी भी अन्य पैकेज प्रतिक्रिया का इस रिपॉज़िटरी और खाते से मेल खाना अनिवार्य है। -
यदि UI को पहले पैकेज रिकॉर्ड की आवश्यकता हो तो npm पर पैकेज बनाएँ। नाम स्कोप्ड रखें:
@ahmed-g-gad/apothem। -
GitHub Actions से
@ahmed-g-gad/apothemके लिए Trusted Publishing कॉन्फ़िगर करें:- GitHub स्वामी:
ahmed-g-gad - रिपॉज़िटरी:
apothem - वर्कफ़्लो फ़ाइल नाम:
publish-npm.yml - एनवायरनमेंट:
release(publish-npm.ymlमें publish जॉब काenvironment:; दोनों का मेल खाना अनिवार्य है) - अनुमत क्रिया:
npm publish।
- GitHub स्वामी:
-
GitHub में सत्यापित करें कि
releaseएनवायरनमेंटahmed-g-gad/apothemपर मौजूद है और डिप्लॉयमेंट के लिए मैन्युअल अनुमोदन आवश्यक करता है। -
npm सतह को एक सार्वजनिक रजिस्ट्री पैकेज तक सीमित रखें: npmjs.com पर
@ahmed-g-gad/apothem। -
टैग पुश द्वारा शुरू किए गए
release.ymlरन काpublish GitHub Releaseजॉब अनुमोदित करें। यहreleaseएनवायरनमेंट के अनुमोदन की प्रतीक्षा करता है, और नीचे की जाँच के लिए वह रन हरा होना आवश्यक है; रिलीज़-चक्र रनबुक, §2.3, बताता है कि यह कैसे किया जाता है। फिर रिलीज़ तत्परता की पुष्टि करें:Release readiness bash scripts/release/check-release-ready.sh <release-tag>जाँच के लिए
GH_TOKENसेट होना चाहिए औरdist/release-assets/में प्रकाशितsbom.cdx.jsonमौजूद होनी चाहिए। रिलीज़-चक्र रनबुक, §2.4, टोकन स्कोप और डाउनलोड कमांड बताता है। -
टैग पुश द्वारा शुरू किए गए
Publish npm(publish-npm.yml) रन के लिएreleaseएनवायरनमेंट डिप्लॉयमेंट को अनुमोदित करें। यदि वह रन शुरू नहीं हुआ, तो GitHub Actions टैब सेtag=<release-tag>के साथ वर्कफ़्लो डिस्पैच करें। -
लाइव पैकेज सत्यापित करें:
npm verification npm view @ahmed-g-gad/apothem version npx @ahmed-g-gad/apothem@<version> --version
किसी NPM_TOKEN, उपयोगकर्ता नाम या पासवर्ड सीक्रेट की आवश्यकता नहीं है। वर्कफ़्लो
.github/workflows/publish-npm.yml के भीतर पिन किए गए Node संस्करण और npm CLI
OIDC फ़्लोर के साथ npm Trusted Publishing (OIDC) के माध्यम से प्रकाशित करता है।
यह npmjs.com के विरुद्ध npm publish --provenance --access public चलाता है, इसलिए
Sigstore प्रोवेनेंस कथन स्पष्ट रूप से निर्दिष्ट है; npm किसी सार्वजनिक GitHub
Actions वर्कफ़्लो से प्रकाशित सार्वजनिक पैकेजों के लिए डिफ़ॉल्ट रूप से भी प्रोवेनेंस
उत्सर्जित करता है। PUT के दौरान रजिस्ट्री का 404 यह दर्शाता है कि npm-पक्ष का
विश्वसनीय प्रकाशक, पैकेज स्कोप, या खाता प्राधिकरण अभी संरेखित नहीं है; वर्कफ़्लो को
फिर से आज़माने से पहले npm पैकेज सेटिंग्स ठीक करें।
एक बार कोई विश्वसनीय प्रकाशन सफल हो जाने पर, टोकन पथ को स्थायी रूप से बंद कर दें: npmjs.com पर पैकेज की Settings → Publishing access में Require two-factor authentication and disallow tokens चुनें, और रिपॉज़िटरी में बचा हुआ कोई भी npm टोकन सीक्रेट हटा दें। वर्कफ़्लो अब कोई टोकन नहीं पढ़ता।
संदर्भ: npm विश्वसनीय प्रकाशक, npm प्रोवेनेंस, और npm स्कोप।
GitHub-पक्ष की रिलीज़ पूर्वापेक्षाएँ
शेष रिलीज़ सतहें GitHub-नेटिव हैं और रिपॉज़िटरी-स्कोप्ड GITHUB_TOKEN से
प्रमाणीकृत होती हैं; इसमें कोई बाहरी खाता शामिल नहीं है।
-
GitHub Release।
.github/workflows/release.ymlसंस्करण टैग पर चलता है और उसे केवल अपनी जॉब-स्थानीयcontents: writeअनुमति की आवश्यकता होती है। टैग करने से पहले पुष्टि करें कि वर्कफ़्लो फ़ाइलmainपर मौजूद है। -
Pages कस्टम डोमेन। दस्तावेज़ साइट
publish-static-site.ymlके माध्यम से कस्टम डोमेनapothem.ahmedgad.comपर डिप्लॉय होती है। डोमेन, DNS और HTTPS प्रवर्तन Pages-सक्षमीकरण रनबुक द्वारा स्थापित किए जाते हैं; सत्यापित करें:Pages verification gh api repos/ahmed-g-gad/apothem/pages --jq '.cname, .https_enforced' curl -sSI https://apothem.ahmedgad.com/ | head -n 1 -
स्क्रिप्ट इंस्टॉलर।
install.shऔरinstall.ps1Pages साइट से परोसे जाते हैं (https://apothem.ahmedgad.com/install.shऔरhttps://apothem.ahmedgad.com/install.ps1)। वे उसी Pages डिप्लॉयमेंट द्वारा प्रकाशित होते हैं; किसी अलग खाते या टोकन की आवश्यकता नहीं होती।
सत्यापन मैट्रिक्स
सेटअप के बाद, प्रत्येक प्रकाशक सतह अपनी कैनोनिकल जाँच का उत्तर देती है:
| सतह | जाँच |
|---|---|
| npmjs.com | npm view @ahmed-g-gad/apothem version रिलीज़ किया गया संस्करण लौटाता है |
| GitHub Release | gh release view <release-tag> --json assets --jq '.assets[].name' sdist, wheel, SBOM, cosign बंडल, प्रोवेनेंस और प्लेटफ़ॉर्म आर्काइव सूचीबद्ध करता है |
| Pages | curl -sSI https://apothem.ahmedgad.com/ कस्टम डोमेन पर 200 लौटाता है |