Skip to content

Commit cad659d

Browse files
fix(ci): publica en npm mediante OIDC sin depender de NPM_TOKEN
1 parent b85e68a commit cad659d

2 files changed

Lines changed: 24 additions & 3 deletions

File tree

‎.github/workflows/nodejs.yml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ jobs:
5151
permissions:
5252
contents: write
5353
issues: write
54+
pull-requests: write
55+
id-token: write
5456

5557
steps:
5658
- uses: actions/checkout@v4
@@ -69,7 +71,6 @@ jobs:
6971
- uses: actions/setup-node@v4
7072
with:
7173
node-version: 24.22.0
72-
cache: 'npm'
7374

7475
- uses: webfactory/ssh-agent@v0.7.0
7576
with:
@@ -91,7 +92,6 @@ jobs:
9192
run: npm exec --no -- semantic-release
9293
env:
9394
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
94-
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
9595

9696
build-pages:
9797
name: Build to GitHub Pages

‎README.md‎

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ La fuente de donde se basan los componentes se encuentran en este [**Sistema de
88

99
## Scripts
1010

11-
El desarrollo y CI usan Node.js `24.22.0` y npm `11.13.0` (npm `11.5.1` o superior es requisito para Trusted Publishing de npm). Instale las dependencias bloqueadas con `npm ci`; CI no regenera el lockfile. La publicación sigue usando el `NPM_TOKEN` existente: Trusted Publishing todavía no está configurado en npm, así que el workflow de release aún no usa OIDC.
11+
El desarrollo y CI usan Node.js `24.22.0` y npm `11.13.0` (npm `11.5.1` o superior es requisito para Trusted Publishing de npm). Instale las dependencias bloqueadas con `npm ci`; CI no regenera el lockfile.
1212

1313
Los componentes están al 100% en escritas en archivos `typescript`.
1414

@@ -33,6 +33,27 @@ Levanta el entorno de `storybook`
3333

3434
Ejecuta los test con `jest`
3535

36+
## Publicación en npm con Trusted Publishing
37+
38+
El workflow de release usa semantic-release en GitHub Actions y autentica las publicaciones de npm mediante OIDC. Antes de fusionar este cambio o ejecutar una publicación, una persona administradora debe configurar en npm el paquete `@eclass/ui-kit`, en **Settings → Trusted Publisher → GitHub Actions**:
39+
40+
| Campo | Valor |
41+
| --- | --- |
42+
| Organization or user | `eclass` |
43+
| Repository | `ui-kit` |
44+
| Workflow filename | `nodejs.yml` (solo el nombre del archivo) |
45+
| Environment name | Vacío |
46+
47+
Complete la primera publicación exitosa dentro de los dos días posteriores a crear el trusted publisher; si vence, deberá eliminarlo y volver a configurarlo.
48+
49+
En **Allowed actions**, habilite la publicación directa con `npm publish`: semantic-release publica directamente y no usa `npm stage publish`. Las configuraciones nuevas permiten por defecto solo la publicación por etapas; habilite la administración de `dist-tags` únicamente si se agrega un flujo de canales que la necesite.
50+
51+
El job de release solicita OIDC con `id-token: write`; npm obtiene automáticamente credenciales de corta duración para esa ejecución. No se configura ni se usa `NPM_TOKEN` como alternativa: si el trusted publisher no está configurado o no coincide, la publicación falla. Revoque o elimine el antiguo secreto `NPM_TOKEN` solo después de confirmar una publicación exitosa con OIDC. `GITHUB_TOKEN` sigue disponible para las operaciones de GitHub de semantic-release. La configuración SSH de GitLab, usada por separado para dependencias privadas, no cambia.
52+
53+
semantic-release determina si corresponde una nueva versión según los commits; este cambio no publica automáticamente en cada commit. npm genera provenance automáticamente cuando la publicación cumple sus requisitos de elegibilidad.
54+
55+
Referencias oficiales: [Trusted Publishing de npm](https://docs.npmjs.com/trusted-publishers/) y [GitHub Actions en semantic-release](https://semantic-release.org/recipes/ci-configurations/github-actions/).
56+
3657
## Instalación
3758

3859
Se debe instalar este repositorio más unas dependencias

0 commit comments

Comments
 (0)