Penyiapan Akun Penerbit
Konfigurasikan penerbit tepercaya npmjs.com untuk @ahmed-g-gad/apothem dan prasyarat rilis di sisi GitHub.
Runbook ini mengonfigurasi sisi penerbit dari permukaan rilis. Alur distribusi
memiliki satu registri: paket npm bercakupan @ahmed-g-gad/apothem di
npmjs.com, yang dipublikasikan oleh alur kerja publish-npm.yml. Alur kerja
ini berjalan saat tag v*.*.* di-push, di samping release.yml, dan tidak
menunggunya (dispatch manual dengan input tag adalah jalur cadangannya).
Persetujuan environment release adalah gerbangnya: operator menyetujuinya
setelah alur kerja GitHub Release, Pages, CI, konformitas, dan harness
berstatus hijau. Setiap artefak lainnya dirilis di halaman GitHub Release itu
sendiri dan tidak memerlukan akun penerbit eksternal.
Peta Identitas
| Permukaan | Akun | Identitas paket |
|---|---|---|
| GitHub | ahmed-g-gad | ahmed-g-gad/apothem |
| npm (npmjs.com) | ahmed-g-gad | @ahmed-g-gad/apothem |
Pemilik GitHub diizinkan berubah di masa mendatang. Logika alur kerja dan pemasang membaca github.repository, github.repository_owner, atau APOTHEM_GITHUB_REPO di tempat platform mengizinkan resolusi dinamis. Pengidentifikasi paket registri tetap stabil karena pengguna memasang nama paket, bukan nama akun pemelihara.
npm (npmjs.com)
-
Masuk ke
https://www.npmjs.com/sebagaiahmed-g-gad. -
Aktifkan autentikasi dua faktor pada akun.
-
Konfirmasikan nama paket bercakupan:
npm view @ahmed-g-gad/apothem name404berarti paket bercakupan belum dipublikasikan. Respons paket lain apa pun harus cocok dengan repositori dan akun ini sebelum publikasi. -
Buat paket di npm jika UI memerlukan catatan paket pertama. Pertahankan nama tetap bercakupan:
@ahmed-g-gad/apothem. -
Konfigurasikan Trusted Publishing untuk
@ahmed-g-gad/apothemdari GitHub Actions:- Pemilik GitHub:
ahmed-g-gad - Repositori:
apothem - Nama berkas alur kerja:
publish-npm.yml - Environment:
release(environment:dari job publikasi dipublish-npm.yml; keduanya harus cocok) - Tindakan yang diizinkan:
npm publish.
- Pemilik GitHub:
-
Di GitHub, verifikasi bahwa environment
releaseada diahmed-g-gad/apothemdan memerlukan persetujuan manual untuk deployment. -
Pertahankan permukaan npm sebagai satu paket registri publik:
@ahmed-g-gad/apothemdi npmjs.com. -
Setujui job
publish GitHub Releasedari runrelease.ymlyang dimulai oleh push tag. Job itu menunggu persetujuan environmentrelease, dan pemeriksaan di bawah memerlukan run itu berstatus hijau; runbook siklus rilis, §2.3, menunjukkan caranya. Lalu konfirmasikan kesiapan rilis:Release readiness bash scripts/release/check-release-ready.sh <release-tag>Pemeriksaan memerlukan
GH_TOKENyang sudah diatur dansbom.cdx.jsonyang sudah dipublikasikan didist/release-assets/. Runbook siklus rilis, §2.4, memuat cakupan token dan perintah unduhan. -
Setujui deployment environment
releaseuntuk runPublish npm(publish-npm.yml) yang dimulai oleh push tag. Jika run itu tidak dimulai, dispatch alur kerja dari tab GitHub Actions dengantag=<release-tag>. -
Verifikasi paket yang sudah aktif:
npm verification npm view @ahmed-g-gad/apothem version npx @ahmed-g-gad/apothem@<version> --version
Tidak diperlukan rahasia NPM_TOKEN, nama pengguna, atau kata sandi. Alur
kerja memublikasikan melalui npm Trusted Publishing (OIDC) dengan versi Node
dan batas bawah OIDC npm CLI yang dipatok di dalam
.github/workflows/publish-npm.yml. Alur kerja menjalankan
npm publish --provenance --access public terhadap npmjs.com, sehingga
pernyataan provenance Sigstore bersifat eksplisit; npm juga memancarkan
provenance secara default untuk paket publik yang dipublikasikan dari alur
kerja GitHub Actions publik. 404 registri selama PUT berarti penerbit
tepercaya di sisi npm, cakupan paket, atau otorisasi akun belum selaras;
perbaiki pengaturan paket npm sebelum mencoba alur kerja lagi.
Setelah sebuah publikasi tepercaya berhasil, tutup jalur token untuk selamanya: di Settings → Publishing access milik paket di npmjs.com, pilih Require two-factor authentication and disallow tokens, dan hapus rahasia token npm apa pun yang tersisa di repositori. Alur kerja tidak lagi membacanya.
Referensi: npm Trusted Publishers, provenance npm, dan cakupan npm.
Prasyarat rilis di sisi GitHub
Permukaan rilis selebihnya bersifat native GitHub dan diautentikasi dengan
GITHUB_TOKEN bercakupan repositori; tidak ada akun eksternal yang terlibat.
-
GitHub Release.
.github/workflows/release.ymlberjalan pada tag versi dan hanya memerlukan izincontents: writelokal-job miliknya. Konfirmasikan bahwa berkas alur kerja ada dimainsebelum membuat tag. -
Domain kustom Pages. Situs dokumentasi di-deploy melalui
publish-static-site.ymlke domain kustomapothem.ahmedgad.com. Domain, DNS, dan penegakan HTTPS ditetapkan oleh runbook pengaktifan Pages; verifikasi:Pages verification gh api repos/ahmed-g-gad/apothem/pages --jq '.cname, .https_enforced' curl -sSI https://apothem.ahmedgad.com/ | head -n 1 -
Pemasang skrip.
install.shdaninstall.ps1disajikan dari situs Pages (https://apothem.ahmedgad.com/install.shdanhttps://apothem.ahmedgad.com/install.ps1). Keduanya dipublikasikan oleh deployment Pages yang sama; tidak diperlukan akun atau token terpisah.
Matriks verifikasi
Setelah penyiapan, setiap permukaan penerbit menjawab pemeriksaan kanoniknya:
| Permukaan | Pemeriksaan |
|---|---|
| npmjs.com | npm view @ahmed-g-gad/apothem version mengembalikan versi yang dirilis |
| GitHub Release | gh release view <release-tag> --json assets --jq '.assets[].name' mencantumkan sdist, wheel, SBOM, bundel cosign, provenance, dan arsip platform |
| Pages | curl -sSI https://apothem.ahmedgad.com/ mengembalikan 200 pada domain kustom |