Configuración de la cuenta de publicador
Configura el publicador de confianza de npmjs.com para @ahmed-g-gad/apothem y los requisitos previos de lanzamiento del lado de GitHub.
Este runbook configura el lado del publicador de la superficie de lanzamiento.
El esquema de distribución tiene un único registro: el paquete npm con alcance
@ahmed-g-gad/apothem en npmjs.com, publicado por el flujo de trabajo
publish-npm.yml. El flujo de trabajo se ejecuta con el push de la etiqueta
v*.*.* junto a release.yml y no espera a que este termine (un despacho
manual con una entrada tag es la alternativa de respaldo). La aprobación del
entorno release es la puerta: el operador la aprueba después de que los flujos
de trabajo de GitHub Release, Pages, CI, conformidad y entornos estén en verde.
Todos los demás artefactos se distribuyen en la propia página del GitHub Release
y no necesitan ninguna cuenta de publicador externa.
Mapa de identidades
| Superficie | Cuenta | Identidad del paquete |
|---|---|---|
| GitHub | ahmed-g-gad | ahmed-g-gad/apothem |
| npm (npmjs.com) | ahmed-g-gad | @ahmed-g-gad/apothem |
Se admite que el propietario de GitHub cambie en el futuro. La lógica de los flujos de trabajo y del instalador lee github.repository, github.repository_owner o APOTHEM_GITHUB_REPO donde una plataforma permite la resolución dinámica. El identificador del paquete en el registro permanece estable porque los usuarios instalan el nombre del paquete, no el nombre de la cuenta del mantenedor.
npm (npmjs.com)
-
Inicia sesión en
https://www.npmjs.com/comoahmed-g-gad. -
Habilita la autenticación de dos factores en la cuenta.
-
Confirma el nombre del paquete con alcance:
npm view @ahmed-g-gad/apothem nameUn
404significa que el paquete con alcance todavía no se ha publicado. Cualquier otra respuesta de paquete debe coincidir con este repositorio y esta cuenta antes de publicar. -
Crea el paquete en npm si la interfaz requiere un primer registro del paquete. Mantén el nombre con alcance:
@ahmed-g-gad/apothem. -
Configura Trusted Publishing para
@ahmed-g-gad/apothemdesde GitHub Actions:- Propietario de GitHub:
ahmed-g-gad - Repositorio:
apothem - Nombre de archivo del flujo de trabajo:
publish-npm.yml - Entorno:
release(elenvironment:del trabajo de publicación enpublish-npm.yml; ambos deben coincidir) - Acción permitida:
npm publish.
- Propietario de GitHub:
-
En GitHub, verifica que el entorno
releaseexiste enahmed-g-gad/apothemy que requiere aprobación manual para el despliegue. -
Limita la superficie de npm a un único paquete de registro público:
@ahmed-g-gad/apothemen npmjs.com. -
Aprueba el trabajo
publish GitHub Releasede la ejecución derelease.ymlque inicia el push de la etiqueta. El trabajo espera la aprobación del entornorelease, y la comprobación siguiente necesita que esa ejecución esté en verde; el runbook del ciclo de lanzamiento, §2.3, indica cómo. Después, confirma que el lanzamiento está listo:Release readiness bash scripts/release/check-release-ready.sh <release-tag>La comprobación necesita que
GH_TOKENesté definido y que elsbom.cdx.jsonpublicado esté endist/release-assets/. El runbook del ciclo de lanzamiento, §2.4, indica el alcance del token y el comando de descarga. -
Aprueba el despliegue del entorno
releasepara la ejecución dePublish npm(publish-npm.yml) que inicia el push de la etiqueta. Si esa ejecución no se inició, despacha el flujo de trabajo desde la pestaña GitHub Actions contag=<release-tag>. -
Verifica el paquete publicado:
npm verification npm view @ahmed-g-gad/apothem version npx @ahmed-g-gad/apothem@<version> --version
No se requiere ningún secreto NPM_TOKEN, de nombre de usuario ni de
contraseña. El flujo de trabajo publica mediante npm Trusted Publishing (OIDC),
con la versión de Node y la versión mínima de la CLI de npm para OIDC fijadas
dentro de .github/workflows/publish-npm.yml. Ejecuta
npm publish --provenance --access public contra npmjs.com, de modo que la
declaración de procedencia de Sigstore es explícita; npm también emite la
procedencia de forma predeterminada para los paquetes públicos publicados desde
un flujo de trabajo público de GitHub Actions. Un 404 del registro durante
PUT significa que el publicador de confianza del lado de npm, el alcance del
paquete o la autorización de la cuenta todavía no están alineados; corrige la
configuración del paquete en npm antes de reintentar el flujo de trabajo.
Una vez que una publicación de confianza haya tenido éxito, cierra definitivamente la vía de los tokens: en Settings → Publishing access del paquete en npmjs.com, selecciona Require two-factor authentication and disallow tokens y elimina cualquier secreto de token de npm que quede en el repositorio. El flujo de trabajo ya no lee ninguno.
Referencias: Publicadores de confianza de npm, procedencia de npm y alcances de npm.
Requisitos previos de lanzamiento del lado de GitHub
Las superficies de lanzamiento restantes son nativas de GitHub y se autentican
con el GITHUB_TOKEN con alcance de repositorio; no interviene ninguna cuenta
externa.
-
GitHub Release.
.github/workflows/release.ymlse ejecuta con la etiqueta de versión y solo necesita su permisocontents: write, local del trabajo. Confirma que el archivo del flujo de trabajo está presente enmainantes de etiquetar. -
Dominio personalizado de Pages. El sitio de documentación se despliega mediante
publish-static-site.ymlen el dominio personalizadoapothem.ahmedgad.com. El dominio, el DNS y la aplicación obligatoria de HTTPS los establece el runbook de habilitación de Pages; verifica:Pages verification gh api repos/ahmed-g-gad/apothem/pages --jq '.cname, .https_enforced' curl -sSI https://apothem.ahmedgad.com/ | head -n 1 -
Instaladores de script.
install.sheinstall.ps1se sirven desde el sitio de Pages (https://apothem.ahmedgad.com/install.shyhttps://apothem.ahmedgad.com/install.ps1). Se publican con el mismo despliegue de Pages; no se requiere ninguna cuenta ni token aparte.
Matriz de verificación
Después de la configuración, cada superficie de publicador responde a su comprobación canónica:
| Superficie | Comprobación |
|---|---|
| npmjs.com | npm view @ahmed-g-gad/apothem version devuelve la versión lanzada |
| GitHub Release | gh release view <release-tag> --json assets --jq '.assets[].name' lista el sdist, el wheel, el SBOM, los bundles de cosign, la procedencia y los archivos comprimidos por plataforma |
| Pages | curl -sSI https://apothem.ahmedgad.com/ devuelve 200 en el dominio personalizado |