Acerca de Registro del paquete de GitHub con GitHub Actions
GitHub Actions te ayuda a automatizar tus flujos de trabajo de desarrollo de software en el mismo lugar en el que almacenas código y colaboras con informes de problemas y solicitudes de extracción. Puedes escribir tareas individuales, llamadas acciones, y combinarlas para crear un flujo de trabajo personalizado. Con GitHub Actions puedes crear capacidades de integración continua (CI, por sus siglas en inglés) de extremo a extremo y de funcionamiento continuo (CD, por sus siglas en inglés) directamente en tu repositorio. Para obtener más información, consulta "Acerca de GitHub Actions."
Puedes ampliar las capacidades de CI y CD de tu repositorio publicando o instalando paquetes como parte de tu flujo de trabajo.
Autenticarse en los registros de paquetes en GitHub
Para autenticarte en los registros de paquetes en GitHub Enterprise Server, te recomendamos utilizar el GITHUB_TOKEN
que crea GitHub Enterprise Server automáticamente para tu repositorio cuando habilitas las GitHub Actions en vez de un token de acceso personal para autenticación. Tiene permisos de lectura y escritura para los paquetes del repositorio en donde se ejecuta el flujo de trabajo. Para las bifurcaciones, se otorga acceso de lectura al GITHUB_TOKEN
en el repositorio padre. Para obtener más información, consulta "Autenticar con el GITHUB_TOKEN".
Puedes hacer referencia al GITHUB_TOKEN
en tu archivo de flujo de trabajo mediante el contexto {{secrets.GITHUB_TOKEN}}
. Para más información, consulta "Autenticando con el GITHUB_TOKEN."
Acerca de los permisos y acceso a los paquetes para los paquetes que pertenecen a los repositorios
Nota: Los paquetes que pertenecen a repositorios incluyen RubyGems, npm, Apache Maven, NuGet, Los paquetes de Gradle y de Docker que utilizan el designador de nombre del paquete docker.pkg.github.com
.
Cuando habilitas las Acciones de GitHub, GitHub instala una App GitHub en tu repositorio. El secreto del GITHUB_TOKEN
es un token de acceso a la instalación de GitHub App. Puedes utilizar el token de acceso a la instalación para autenticarte en nombre de la GitHub App instalada en tu repositorio. Los permisos del token están limitados al repositorio que contiene tu flujo de trabajo. Para obtener más información, consulta la sección "Permisos para el GITHUB_TOKEN".
El Registro del paquete de GitHub te permite subir y extraer paquetes mediante el GITHUB_TOKEN
que está disponible para un flujo de trabajo de GitHub Actions.
Publicar un paquete mediante una acción
Puedes utilizar GitHub Actions para publicar paquetes automáticamente como parte de tu flujo de integración contínua (IC). Este acercamiento a los despliegues contínuos (DC) te permite automatizar la creación de nuevas versiones de los paquetes si el código cumple con tus estándares de calidad. Por ejemplo, podrías crear un flujo de trabajo que ejecute pruebas de IC cada vez que un desarrollador suba código a alguna rama en particular. Si estas pruyebas pasan, el flujo de trabajo puede publicar una versión nueva del paquete en el Registro del paquete de GitHub.
Los pasos de configuración varían de acuerdo con el cliente del paquete. Para obtener información general sobre como configurar un flujo de trabajo para GitHub Actions, consulta la sección "Configurar un flujo de trabajo".
El siguiente ejemplo ilustra cómo puedes utilizar las GitHub Actions para crear y probar tu app y luego crear una imagen de Docker automáticamente y publicarla en el Registro del paquete de GitHub.
Crea un archivo de flujo de trabajo nuevo en tu repositorio (tal como .github/workflows/deploy-image.yml
), y agrega el siguiente YAML:
name: Create and publish a Docker image
# This workflow uses actions that are not certified by GitHub.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# documentación.
on:
push:
branches: ['release']
jobs:
run-npm-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: npm install and build webpack
run: |
npm install
npm run build
- uses: actions/upload-artifact@v2
with:
name: webpack artifacts
path: public/
run-npm-test:
runs-on: ubuntu-latest
needs: run-npm-build
strategy:
matrix:
os: [ubuntu-latest]
node-version: [12.x, 14.x]
steps:
- uses: actions/checkout@v2
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v2
with:
node-version: ${{ matrix.node-version }}
- uses: actions/download-artifact@v2
with:
name: webpack artifacts
path: public
- name: npm install, and test
run: |
npm install
npm test
env:
CI: true
build-and-push-image:
runs-on: ubuntu-latest
needs: run-npm-test
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Log in to GitHub Docker Registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: docker.pkg.github.com
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Docker image
uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc
with:
push: true
tags: |
docker.pkg.github.com/${{ github.repository }}/octo-image:${{ github.sha }}
La configuración relevante se explica en la siguiente tabla. Para encontrar los detalles completos de cada elemento en un flujo de trabajo, consulta la sección "Sintaxis de flujo de trabajo para GitHub Actions".
|
Configura el flujo de trabajo de Crear y publicar una imagen de Docker para que se ejecute cada vez que se sube un cambio a la rama que se llama release .
|
|
Este job instala NPM y lo utiliza para crear la app. |
|
Este job utiliza npm test para probar el código. El comando needs: run-npm-build hace que este job dependa del job run-npm-build .
|
|
Este job publica el paquete. El comando needs: run-npm-test hace que este job dependa del job run-npm-test .
|
|
Crea un paso nuevo que se llame Log in to GitHub Docker Registry , el cual inicia sesión en el registro utilizando la cuenta y contraseña que publicará los paquetes. Una vez que se publica, los paquetes pertenecerán a la cuenta que se define aquí.
|
|
Crea un paso nuevo que se llama Build and push Docker image . Este paso se ejecuta como parte del job build-and-push-image .
|
|
Utiliza la acción build-push-action de Docker para crear la imagen, basándose en el Dockerfile de tu repositorio. Si la compilación es exitosa, sube la imagen al Registro del paquete de GitHub.
|
|
Envía los parámetros requeridas a la acción build-push-action . Estas se definen en líneas subsecuentes.
|
|
Sube esta imagen al registro si se compila con éxito. |
|
Etiqueta la imagen con el SHA de la confirmación que activó el flujo de trabajo. |
Este flujo de trabajo nuevo se ejecutará automáticamente cada que subas un cambio a una rama que se llame release
en el repositorio. Puedes ver el progreso en la pestaña de Acciones.
Unos minutos después de que se complete el flujo de trabajo, el paquete nuevo podrá visualizarse en tu repositorio. Para encontrar tus paquetes disponibles, consulta la sección "Visualizar los paquetes de un repositorio".
Instalar un paquete mediante una acción
Puedes instalar paquetes como parte de tu flujo de CI mediante GitHub Actions. Por ejemplo, podrías configurar un flujo de trabajo para que cada vez que un programador suba código a una solicitud de extracción, el flujo de trabajo resuelva las dependencias al descargar e instalar paquetes alojados por el Registro del paquete de GitHub. Luego, el flujo de trabajo puede ejecutar pruebas de CI que requieran las dependencias.
El instalar los paquetes que hospeda el Registro del paquete de GitHub a través de las GitHub Actions requiere una configuración mínima o autenticación adicional cuando utilizas un GITHUB_TOKEN
.
Los pasos de configuración varían de acuerdo con el cliente del paquete. Para obtener información general sobre como configurar un flujo de trabajo para GitHub Actions, consulta la sección "Configurar un flujo de trabajo".