Skip to content
Apothem
Runbooks

Configuration du compte d'éditeur

Configurez l'éditeur de confiance npmjs.com pour @ahmed-g-gad/apothem ainsi que les prérequis de publication côté GitHub.

Ce runbook configure le côté éditeur de la surface de publication. Le dispositif de distribution ne comporte qu'un seul registre : le paquet npm à portée @ahmed-g-gad/apothem sur npmjs.com, publié par le flux de travail publish-npm.yml. Le flux de travail s'exécute au push de l'étiquette v*.*.*, à côté de release.yml, et ne l'attend pas (un déclenchement manuel avec une entrée tag sert de solution de repli). L'approbation de l'environnement release est le point de contrôle : l'opérateur l'accorde une fois que les flux de travail GitHub Release, Pages, CI, de conformité et d'environnements sont au vert. Tous les autres artefacts sont distribués sur la page GitHub Release elle-même et ne nécessitent aucun compte d'éditeur externe.

Carte d'identité

SurfaceCompteIdentité du paquet
GitHubahmed-g-gadahmed-g-gad/apothem
npm (npmjs.com)ahmed-g-gad@ahmed-g-gad/apothem

Le propriétaire GitHub peut changer à l'avenir. La logique des flux de travail et de l'installateur lit github.repository, github.repository_owner ou APOTHEM_GITHUB_REPO là où une plateforme permet la résolution dynamique. L'identifiant du paquet dans le registre reste stable, car les utilisateurs installent le nom du paquet, et non le nom du compte du mainteneur.

npm (npmjs.com)

  1. Connectez-vous à https://www.npmjs.com/ en tant que ahmed-g-gad.

  2. Activez l'authentification à deux facteurs sur le compte.

  3. Confirmez le nom du paquet à portée :

    npm view @ahmed-g-gad/apothem name

    Un 404 signifie que le paquet à portée n'a pas encore été publié. Toute autre réponse de paquet doit correspondre à ce dépôt et à ce compte avant la publication.

  4. Créez le paquet sur npm si l'interface exige un premier enregistrement de paquet. Gardez le nom à portée : @ahmed-g-gad/apothem.

  5. Configurez Trusted Publishing pour @ahmed-g-gad/apothem depuis GitHub Actions :

    • Propriétaire GitHub : ahmed-g-gad
    • Dépôt : apothem
    • Nom du fichier de flux de travail : publish-npm.yml
    • Environnement : release (l'environment: du job de publication dans publish-npm.yml ; les deux doivent correspondre)
    • Action autorisée : npm publish.
  6. Dans GitHub, vérifiez que l'environnement release existe sur ahmed-g-gad/apothem et qu'il exige une approbation manuelle pour le déploiement.

  7. Limitez la surface npm à un seul paquet de registre public : @ahmed-g-gad/apothem sur npmjs.com.

  8. Approuvez le job publish GitHub Release de l'exécution release.yml que démarre le push de l'étiquette. Le job attend l'approbation de l'environnement release, et la vérification ci-dessous exige que cette exécution soit au vert ; le runbook du cycle de publication, §2.3, indique comment procéder. Confirmez ensuite l'état de préparation de la publication :

    Release readiness
    bash scripts/release/check-release-ready.sh <release-tag>

    La vérification nécessite que GH_TOKEN soit défini et que sbom.cdx.json publié se trouve dans dist/release-assets/. Le runbook du cycle de publication, §2.4, indique la portée du jeton et la commande de téléchargement.

  9. Approuvez le déploiement de l'environnement release pour l'exécution de Publish npm (publish-npm.yml) que démarre le push de l'étiquette. Si cette exécution n'a pas démarré, déclenchez le flux de travail depuis l'onglet GitHub Actions avec tag=<release-tag>.

  10. Vérifiez le paquet en ligne :

    npm verification
    npm view @ahmed-g-gad/apothem version
    npx @ahmed-g-gad/apothem@<version> --version

Aucun secret NPM_TOKEN, nom d'utilisateur ou mot de passe n'est requis. Le flux de travail publie via npm Trusted Publishing (OIDC) avec la version de Node et le plancher OIDC de la CLI npm épinglés dans .github/workflows/publish-npm.yml. Il exécute npm publish --provenance --access public sur npmjs.com, de sorte que la déclaration de provenance Sigstore est explicite ; npm émet aussi la provenance par défaut pour les paquets publics publiés depuis un flux de travail GitHub Actions public. Un 404 du registre pendant PUT signifie que l'éditeur de confiance côté npm, la portée du paquet ou l'autorisation du compte ne sont pas encore alignés ; corrigez les paramètres du paquet npm avant de relancer le flux de travail.

Dès qu'une publication de confiance a réussi, fermez définitivement la voie des jetons : dans Settings → Publishing access du paquet sur npmjs.com, sélectionnez Require two-factor authentication and disallow tokens, et supprimez tout secret de jeton npm restant dans le dépôt. Le flux de travail n'en lit plus aucun.

Références : Éditeurs de confiance npm, provenance npm et portées npm.

Prérequis de publication côté GitHub

Les surfaces de publication restantes sont natives de GitHub et s'authentifient avec le GITHUB_TOKEN à portée de dépôt ; aucun compte externe n'est impliqué.

  1. GitHub Release. .github/workflows/release.yml s'exécute sur l'étiquette de version et n'a besoin que de sa permission contents: write locale au job. Confirmez que le fichier de flux de travail est présent sur main avant d'étiqueter.

  2. Domaine personnalisé Pages. Le site de documentation se déploie via publish-static-site.yml vers le domaine personnalisé apothem.ahmedgad.com. Le domaine, le DNS et l'application de HTTPS sont établis par le runbook d'activation de Pages ; vérifiez :

    Pages verification
    gh api repos/ahmed-g-gad/apothem/pages --jq '.cname, .https_enforced'
    curl -sSI https://apothem.ahmedgad.com/ | head -n 1
  3. Installateurs de script. install.sh et install.ps1 sont servis depuis le site Pages (https://apothem.ahmedgad.com/install.sh et https://apothem.ahmedgad.com/install.ps1). Ils sont publiés par le même déploiement Pages ; aucun compte ni jeton distinct n'est requis.

Matrice de vérification

Après la configuration, chaque surface d'éditeur répond à sa vérification canonique :

SurfaceVérification
npmjs.comnpm view @ahmed-g-gad/apothem version renvoie la version publiée
GitHub Releasegh release view <release-tag> --json assets --jq '.assets[].name' liste sdist, wheel, SBOM, paquets cosign, provenance et archives de plateforme
Pagescurl -sSI https://apothem.ahmedgad.com/ renvoie 200 sur le domaine personnalisé

On this page