パブリッシャーアカウントのセットアップ
@ahmed-g-gad/apothem 向けの npmjs.com 信頼済みパブリッシャーと、GitHub 側のリリース前提条件を構成します。
この Runbook は、リリース面のパブリッシャー側を構成します。配布のかたちはレジストリ
が 1 つだけです。npmjs.com 上のスコープ付き npm パッケージ
@ahmed-g-gad/apothem で、GitHub Release、Pages、CI、conformity、および harness
の各ワークフローがグリーンになった後に、手動でディスパッチされる publish-npm.yml
ワークフローによって公開されます。その他のすべての成果物は 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_REPOSITORY を読み取ります。
ユーザーはメンテナーのアカウント名ではなくパッケージ名をインストールするため、
レジストリのパッケージ識別子は安定したままになります。
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 - 環境:
npmjs - 許可されるアクション:
npm publish。
- GitHub オーナー:
-
GitHub で、
npmjs環境がahmed-g-gad/apothemに存在し、デプロイに手動承認を 必要とすることを確認します。 -
npm の面を 1 つの公開レジストリパッケージに保ちます: npmjs.com 上の
@ahmed-g-gad/apothem。 -
リリース準備状態を確認します。
Release readiness bash scripts/release/check-release-ready.sh <release-tag> -
GitHub Actions タブから
Publish — npm(publish-npm.yml)をtag=<release-tag>で実行し、npmjs環境のデプロイを承認します。 -
ライブパッケージを検証します。
npm verification npm view @ahmed-g-gad/apothem version npx @ahmed-g-gad/apothem@<version> --version
NPM_TOKEN、ユーザー名、パスワードのシークレットは必要ありません。ワークフローは、
Node のバージョンと npm CLI の OIDC 下限を .github/workflows/publish-npm.yml
内にピン留めした状態で、npm Trusted Publishing(OIDC)を通じて公開します。npmjs.com
に対して npm publish --access public を実行します。npm は、公開された GitHub
Actions ワークフローから公開された公開パッケージに対して、来歴(provenance)を自動的
に発行します。PUT 中のレジストリ 404 は、npm 側の信頼済みパブリッシャー、パッケージ
スコープ、またはアカウント認可がまだ整合していないことを意味します。ワークフローを
再試行する前に 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 有効化 Runbook によって確立されます。検証します。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.ps1は Pages サイトから 提供されます(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 を返す |