Einrichtung des Publisher-Kontos
Den vertrauenswürdigen npmjs.com-Publisher für @ahmed-g-gad/apothem und die GitHub-seitigen Release-Voraussetzungen konfigurieren.
Dieses Runbook konfiguriert die Publisher-Seite der Release-Oberfläche. Die
Distributionsgeschichte hat eine einzige Registry: das Scoped-npm-Paket
@ahmed-g-gad/apothem auf npmjs.com, veröffentlicht vom Workflow
publish-npm.yml. Der Workflow läuft beim Push eines v*.*.*-Tags neben
release.yml und wartet nicht auf ihn (ein manueller Dispatch mit einer
tag-Eingabe ist der Ausweichweg). Die Genehmigung der Umgebung release ist
das Gate: Der Operator erteilt sie, nachdem die Workflows für GitHub Release,
Pages, CI, Konformität und Harness grün sind. Jedes andere Artefakt wird auf
der GitHub-Release-Seite selbst ausgeliefert und benötigt kein externes
Publisher-Konto.
Identitätszuordnung
| Oberfläche | Konto | Paketidentität |
|---|---|---|
| GitHub | ahmed-g-gad | ahmed-g-gad/apothem |
| npm (npmjs.com) | ahmed-g-gad | @ahmed-g-gad/apothem |
Der GitHub-Eigentümer darf sich künftig ändern. Die Workflow- und Installer-Logik liest github.repository, github.repository_owner oder APOTHEM_GITHUB_REPO, wo eine Plattform dynamische Auflösung zulässt. Der Paketbezeichner in der Registry bleibt stabil, weil Benutzer den Paketnamen installieren, nicht den Kontonamen des Maintainers.
npm (npmjs.com)
-
Melden Sie sich bei
https://www.npmjs.com/alsahmed-g-gadan. -
Aktivieren Sie die Zwei-Faktor-Authentifizierung für das Konto.
-
Bestätigen Sie den Scoped-Paketnamen:
npm view @ahmed-g-gad/apothem nameEin
404bedeutet, dass das Scoped-Paket noch nicht veröffentlicht wurde. Jede andere Paketantwort muss vor der Veröffentlichung mit diesem Repository und diesem Konto übereinstimmen. -
Erstellen Sie das Paket auf npm, falls die Benutzeroberfläche einen ersten Paketeintrag verlangt. Behalten Sie den Namen mit Scope bei:
@ahmed-g-gad/apothem. -
Konfigurieren Sie Trusted Publishing für
@ahmed-g-gad/apothemaus GitHub Actions:- GitHub-Eigentümer:
ahmed-g-gad - Repository:
apothem - Workflow-Dateiname:
publish-npm.yml - Umgebung:
release(dasenvironment:des Publish-Jobs inpublish-npm.yml; beide müssen übereinstimmen) - Erlaubte Aktion:
npm publish.
- GitHub-Eigentümer:
-
Verifizieren Sie in GitHub, dass die Umgebung
releaseinahmed-g-gad/apothemexistiert und eine manuelle Genehmigung für das Deployment verlangt. -
Beschränken Sie die npm-Oberfläche auf ein öffentliches Registry-Paket:
@ahmed-g-gad/apothemauf npmjs.com. -
Genehmigen Sie den Job
publish GitHub Releaseim Lauf vonrelease.yml, den der Tag-Push startet. Der Job wartet auf die Genehmigung der Umgebungrelease, und die Prüfung unten setzt voraus, dass dieser Lauf grün ist; das Runbook zum Release-Zyklus, §2.3, zeigt, wie. Bestätigen Sie danach die Release-Bereitschaft:Release readiness bash scripts/release/check-release-ready.sh <release-tag>Die Prüfung setzt voraus, dass
GH_TOKENgesetzt ist und die veröffentlichtesbom.cdx.jsonindist/release-assets/liegt. Das Runbook zum Release-Zyklus, §2.4, nennt den Geltungsbereich des Tokens und den Download-Befehl. -
Genehmigen Sie das Deployment der Umgebung
releasefür den Lauf vonPublish npm(publish-npm.yml), den der Tag-Push startet. Falls dieser Lauf nicht gestartet wurde, lösen Sie den Workflow über den Tab GitHub Actions mittag=<release-tag>aus. -
Verifizieren Sie das Live-Paket:
npm verification npm view @ahmed-g-gad/apothem version npx @ahmed-g-gad/apothem@<version> --version
Es ist kein NPM_TOKEN-, Benutzernamen- oder Passwort-Secret erforderlich. Der
Workflow veröffentlicht über npm Trusted Publishing (OIDC), wobei die
Node-Version und der OIDC-Mindeststand der npm-CLI in
.github/workflows/publish-npm.yml gepinnt sind. Er führt
npm publish --provenance --access public gegen npmjs.com aus, sodass die
Sigstore-Provenienzaussage ausdrücklich angefordert wird; npm erzeugt außerdem
standardmäßig Provenienz für öffentliche Pakete, die aus einem öffentlichen
GitHub-Actions-Workflow veröffentlicht werden. Ein Registry-404 während PUT
bedeutet, dass der vertrauenswürdige Publisher auf npm-Seite, der Paket-Scope
oder die Kontoautorisierung noch nicht abgestimmt ist; korrigieren Sie die
npm-Paketeinstellungen, bevor Sie den Workflow erneut versuchen.
Sobald eine vertrauenswürdige Veröffentlichung gelungen ist, schließen Sie den Token-Pfad endgültig: Wählen Sie in den Settings → Publishing access des Pakets auf npmjs.com die Option Require two-factor authentication and disallow tokens, und löschen Sie jedes npm-Token-Secret, das noch im Repository liegt. Der Workflow liest keines mehr.
Referenzen: npm Trusted Publishers, npm-Provenienz und npm-Scopes.
GitHub-seitige Release-Voraussetzungen
Die übrigen Release-Oberflächen sind GitHub-nativ und authentifizieren sich mit
dem auf das Repository beschränkten GITHUB_TOKEN; es ist kein externes Konto
beteiligt.
-
GitHub Release.
.github/workflows/release.ymlläuft auf dem Versions-Tag und benötigt nur seine job-lokale Berechtigungcontents: write. Bestätigen Sie vor dem Taggen, dass die Workflow-Datei aufmainvorhanden ist. -
Benutzerdefinierte Pages-Domain. Die Dokumentationsseite wird über
publish-static-site.ymlauf die benutzerdefinierte Domainapothem.ahmedgad.combereitgestellt. Die Domain, das DNS und die HTTPS-Erzwingung werden durch das Pages-Aktivierungs-Runbook eingerichtet; verifizieren Sie:Pages verification gh api repos/ahmed-g-gad/apothem/pages --jq '.cname, .https_enforced' curl -sSI https://apothem.ahmedgad.com/ | head -n 1 -
Skript-Installer.
install.shundinstall.ps1werden von der Pages-Website ausgeliefert (https://apothem.ahmedgad.com/install.shundhttps://apothem.ahmedgad.com/install.ps1). Sie werden durch dasselbe Pages-Deployment veröffentlicht; es ist kein separates Konto und kein Token erforderlich.
Verifizierungsmatrix
Nach der Einrichtung beantwortet jede Publisher-Oberfläche ihre kanonische Prüfung:
| Oberfläche | Prüfung |
|---|---|
| npmjs.com | npm view @ahmed-g-gad/apothem version gibt die veröffentlichte Version zurück |
| GitHub Release | gh release view <release-tag> --json assets --jq '.assets[].name' listet sdist, Wheel, SBOM, cosign-Bundles, Provenienz und Plattformarchive auf |
| Pages | curl -sSI https://apothem.ahmedgad.com/ gibt 200 auf der benutzerdefinierten Domain zurück |