Publicación en Paquetes de GitHub y GitHub Container Registry
Aquí, aprenderá los conceptos básicos del uso de un flujo de trabajo para publicar en GitHub Packages y los pasos necesarios para compilar, autenticar, etiquetar e insertar una imagen de Docker en GitHub Container Registry.
Uso de un flujo de trabajo para publicar en Paquetes de GitHub
GitHub Package permiten publicar y consumir paquetes de forma segura, almacenarlos junto con el código y compartirlos de forma privada con el equipo o públicamente con la comunidad de código abierto. También puede usar Acciones de GitHub para automatizar los paquetes.
A continuación se muestra un ejemplo de un flujo de trabajo básico que se ejecuta cada vez que se crea una nueva versión en un repositorio. Si se superan las pruebas, el paquete se publica en Paquetes de GitHub.
name: Node.js Package
on:
release:
types: [created]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 12
- run: npm ci
- run: npm test
publish-gpr:
needs: build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 12
registry-url: https://npm.pkg.github.com/
- run: npm ci
- run: npm publish
env:
NODE_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}
En primer lugar, el archivo de flujo de trabajo debe existir en el directorio .github/workflows
. Es habitual asignar un nombre similar a release-package.yml
a un flujo de trabajo que publica un paquete nuevo cada vez que se crea una versión para que a los colaboradores del proyecto les sea más fácil entender su propósito sin tener que ir al archivo de flujo de trabajo.
El flujo de trabajo anterior hace algunas cosas después de que se cree una versión:
- Un trabajo denominado
build
ejecutanpm ci
("ci" por "integración continua" en inglés) para instalar dependencias directamente desde el archivopackage-lock.json
, así como las pruebas del proyecto. - Una vez que el trabajo
build
se realiza correctamente, el trabajopublish-gpr
publica el paquete. - El flujo de trabajo publica el paquete en
registry-url: https://npm.pkg.github.com/
mediante un token de acceso para la autenticación.
Uso de GitHub Container Registry para hospedar y administrar imágenes de contenedor de Docker
GitHub Packages admite el uso de contenedores, Kubernetes y otras tecnologías nativas de la nube para administrar todo el ciclo de vida de la aplicación, incluidas las operaciones de producción, además del desarrollo, el lanzamiento y la implementación. En Paquetes de GitHub también se ofrece un registro de contenedor diseñado para admitir las necesidades únicas de las imágenes de contenedor. Puede usar GitHub Container Registry para hospedar y administrar sin problemas imágenes de contenedor de Docker de la organización o la cuenta de usuario personal de GitHub. GitHub Container Registry permite configurar quién puede administrar y acceder a los paquetes mediante permisos específicos.
Con el registro de contenedor puede hacer lo siguiente:
- Almacenar imágenes de contenedor dentro de la organización y la cuenta de usuario, en lugar de un repositorio.
- Establecer permisos específicos para las imágenes de contenedor.
- Acceder a imágenes de contenedor públicas de forma anónima.
Después de crear la imagen, autenticarse e iniciar sesión en el servicio GitHub Container Registry en ghcr.io
, puede etiquetar e insertar la versión más reciente de la imagen en el registro de contenedor mediante los comandos siguientes:
echo $GITHUB_TOKEN | docker login ghcr.io -u USERNAME --password-stdin
docker tag IMAGE_ID ghcr.io/OWNER/IMAGE_NAME:latest
docker push ghcr.io/OWNER/IMAGE_NAME:latest
Nota:
Para autenticarse mediante un flujo de trabajo de Acciones de GitHub, puede usar un GITHUB_TOKEN:
- Para los registros de paquetes en
PACKAGE-REGISTRY.pkg.github.com
. - Para el registro de contenedor en
ghcr.io/OWNER/IMAGE-NAME
.