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 paquetes de GitHub 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
Los paquetes de GitHub le permiten publicar y consumir paquetes de forma segura, almacenar los paquetes junto con el código y compartir los paquetes de forma privada con su 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 .github/workflows directorio . Es habitual asignar un nombre a un flujo de trabajo que publique un nuevo paquete cada vez que se cree una nueva versión como release-package.yml, para facilitar que los colaboradores del proyecto comprendan su propósito sin navegar al archivo de flujo de trabajo.
El flujo de trabajo anterior realiza algunas cosas después de crear una nueva versión:
- Un trabajo denominado
buildejecutanpm ci("ci" para Integración Continua) para instalar dependencias directamente desde el archivopackage-lock.json, así como las pruebas del proyecto. - Una vez que el
buildtrabajo se realiza correctamente, el trabajo denominadopublish-gprpublica el paquete. - El flujo de trabajo publica el paquete en el
registry-url: https://npm.pkg.github.com/usando un token de acceso para la autenticación.
Uso de GitHub Container Registry para hospedar y administrar imágenes de contenedor de Docker
Los paquetes de GitHub admiten el uso de contenedores, Kubernetes y otras tecnologías nativas de la nube para administrar todo su ciclo de vida de la aplicación, incluidas las operaciones de producción, el desarrollo, la versión 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 en su organización de GitHub o cuenta de usuario personal. 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:
- Almacene imágenes de contenedor dentro de su organización y cuenta de usuario en lugar de un repositorio.
- Establezca permisos específicos para las imágenes de contenedor.
- Acceda a imágenes de contenedor públicas de forma anónima.
Después de compilar la imagen y 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 estos comandos:
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.