Skip to content
Apothem
Runbook

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

PermukaanAkunIdentitas paket
GitHubahmed-g-gadahmed-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)

  1. Masuk ke https://www.npmjs.com/ sebagai ahmed-g-gad.

  2. Aktifkan autentikasi dua faktor pada akun.

  3. Konfirmasikan nama paket bercakupan:

    npm view @ahmed-g-gad/apothem name

    404 berarti paket bercakupan belum dipublikasikan. Respons paket lain apa pun harus cocok dengan repositori dan akun ini sebelum publikasi.

  4. Buat paket di npm jika UI memerlukan catatan paket pertama. Pertahankan nama tetap bercakupan: @ahmed-g-gad/apothem.

  5. Konfigurasikan Trusted Publishing untuk @ahmed-g-gad/apothem dari GitHub Actions:

    • Pemilik GitHub: ahmed-g-gad
    • Repositori: apothem
    • Nama berkas alur kerja: publish-npm.yml
    • Environment: release (environment: dari job publikasi di publish-npm.yml; keduanya harus cocok)
    • Tindakan yang diizinkan: npm publish.
  6. Di GitHub, verifikasi bahwa environment release ada di ahmed-g-gad/apothem dan memerlukan persetujuan manual untuk deployment.

  7. Pertahankan permukaan npm sebagai satu paket registri publik: @ahmed-g-gad/apothem di npmjs.com.

  8. Setujui job publish GitHub Release dari run release.yml yang dimulai oleh push tag. Job itu menunggu persetujuan environment release, 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_TOKEN yang sudah diatur dan sbom.cdx.json yang sudah dipublikasikan di dist/release-assets/. Runbook siklus rilis, §2.4, memuat cakupan token dan perintah unduhan.

  9. Setujui deployment environment release untuk run Publish npm (publish-npm.yml) yang dimulai oleh push tag. Jika run itu tidak dimulai, dispatch alur kerja dari tab GitHub Actions dengan tag=<release-tag>.

  10. 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.

  1. GitHub Release. .github/workflows/release.yml berjalan pada tag versi dan hanya memerlukan izin contents: write lokal-job miliknya. Konfirmasikan bahwa berkas alur kerja ada di main sebelum membuat tag.

  2. Domain kustom Pages. Situs dokumentasi di-deploy melalui publish-static-site.yml ke domain kustom apothem.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
  3. Pemasang skrip. install.sh dan install.ps1 disajikan dari situs Pages (https://apothem.ahmedgad.com/install.sh dan https://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:

PermukaanPemeriksaan
npmjs.comnpm view @ahmed-g-gad/apothem version mengembalikan versi yang dirilis
GitHub Releasegh release view <release-tag> --json assets --jq '.assets[].name' mencantumkan sdist, wheel, SBOM, bundel cosign, provenance, dan arsip platform
Pagescurl -sSI https://apothem.ahmedgad.com/ mengembalikan 200 pada domain kustom

On this page