Delete Package Versions
GitHub Action que borra versiones de un paquete en GitHub Packages
— npm, container, maven, nuget, rubygems. Hasta 100 versiones por corrida.
Fork mantenido de actions/delete-package-versions
(upstream dejó de aceptar contribuciones). Contrato de la action sin cambios — drop-in replacement.
Capacidades
- Retención: mantener las N versiones más recientes, borrar el resto
- Borrar las N versiones más viejas
- Mantener sólo N pre-releases (política de pre-release)
- Ignorar versiones por regex
- Borrar sólo versiones untagged (container)
- Borrar por id específico, o de un paquete en otro repo (con PAT)
Uso
- uses: andresmontoyat/delete-package-versions@v1 with: package-name: 'mi-servicio' package-type: 'container' min-versions-to-keep: 10 # conserva las 10 más recientes delete-only-untagged-versions: trueInputs
| Input | Requerido | Default | Descripción |
|---|---|---|---|
package-name | sí | — | Nombre del paquete |
package-type | sí | — | container · maven · npm · nuget · rubygems |
owner | no | repo owner | Dueño del repo del paquete |
package-version-ids | no | — | Lista de ids de versión (coma-separada) |
num-old-versions-to-delete | no | 1 | Cantidad de versiones más viejas a borrar |
min-versions-to-keep | no | -1 | Versiones recientes a conservar (0 = borrar todas; tiene precedencia sobre num-old-versions-to-delete) |
ignore-versions | no | ^$ | Regex de versiones a excluir |
delete-only-pre-release-versions | no | false | Sólo pre-releases (excluye num-old-* e ignore-versions) |
delete-only-untagged-versions | no | false | Sólo untagged, container (excluye num-old-*) |
token | no | github.token | Token con scope para borrar; PAT si el paquete está fuera del repo |
Scopes del token: con package-version-ids → delete:packages; sin él → delete:packages + read:packages.
Qué modernizamos (fork)
| Área | Upstream | Este fork |
|---|---|---|
| Modelo async | RxJS 7 Observables | async/await nativo + Promise.allSettled |
| Estado global | Contador mutable a nivel módulo | Eliminado — DeleteSummary por llamada |
Input | Cargaba numDeleted runtime | Input puro, sin estado runtime |
| ESLint | 8.x legacy | 9.x flat config |
| TypeScript | Sin pin | ^5.6 strict mode completo |
| MSW (tests) | 1.x | 2.x (http / HttpResponse) |
| Errores | Casts sueltos | extractApiError() tipado |
| CI | Workflow único, checkout@v2 | Matrix node 20/22 + check-dist modernizado |
| Runtime | — | Node 20, GHES-compatible |