Nota: GitHub Packages se encuentra actualmente en fase beta para GitHub AE.
Acerca de GitHub Packages 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 más información, consulta "Más información sobre las Acciones de GitHub".
Puedes ampliar las capacidades de CI y CD de tu repositorio publicando o instalando paquetes como parte de tu flujo de trabajo.
Para autenticarte en registros de paquetes en GitHub AE, recomendamos el uso del GITHUB_TOKEN
que GitHub AE crea automáticamente para el repositorio al habilitar GitHub Actions. Debes establecer los permisos para este token de acceso en el archivo del flujo de trabajo a fin de conceder acceso de lectura al ámbito contents
y acceso de escritura al ámbito packages
. En el caso de las bifurcaciones, a GITHUB_TOKEN
se le concede acceso de lectura para el repositorio primario. Para obtener más información, vea «Autenticación automática de tokens».
Puede hacer referencia al elemento GITHUB_TOKEN
en el archivo de flujo de trabajo mediante el contexto {{secrets.GITHUB_TOKEN}}
. Para obtener más información, vea «Autenticación automática de tokens».
Acerca de los permisos y el acceso a los paquetes
Cuando habilitas las Acciones de GitHub, GitHub instala una App GitHub en tu repositorio. El secreto GITHUB_TOKEN
es un token de acceso de instalación de aplicación de GitHub. 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, vea «Autenticación automática de tokens».
GitHub Packages permite insertar y extraer paquetes mediante el GITHUB_TOKEN
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 GitHub Packages.
Los pasos de configuración varían de acuerdo con el cliente del paquete. Para información general sobre cómo configurar un flujo de trabajo para GitHub Actions, consulta "Uso de flujos 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 GitHub Packages.
Cree un archivo de flujo de trabajo en el repositorio (por ejemplo, .github/workflows/deploy-image.yml
) y agregue el código YAML siguiente:
# Este flujo de trabajo usa acciones que no GitHub no certifica.
# Estas las proporcionan entidades terceras y las gobiernan
# condiciones de servicio, políticas de privacidad y documentación de soporte
# en línea.
# GitHub recomienda anclar acciones a un SHA de confirmación.
# Para obtener una versión más reciente, debes actualizar el SHA.
# También puedes hacer referencia a una etiqueta o rama, pero la acción puede cambiar sin ninguna advertencia.
name: Create and publish a Docker image
on:
push:
branches: ['release']
jobs:
run-npm-build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: npm install and build webpack
run: |
npm install
npm run build
- uses: actions/upload-artifact@v3
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@v3
- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}
- uses: actions/download-artifact@v3
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
permissions:
contents: read
packages: write
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Log in to GitHub Docker Registry
uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9
with:
registry: docker.YOUR-HOSTNAME.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.YOUR-HOSTNAME.com/${{ github.repository }}/octo-image:${{ github.sha }}
La configuración relevante se explica en la siguiente tabla. Para obtener detalles completos sobre cada elemento de un flujo de trabajo, consulta "Sintaxis del flujo de trabajo para Acciones de GitHub".
```yaml on: push: branches: ['release'] ``` |
Configura el flujo de trabajo Create and publish a Docker image para que se ejecute cada vez que se inserta un cambio en la rama denominada release .
|
|
Este job instala NPM y lo utiliza para crear la app. |
|
Este trabajo usa npm test para probar el código. El comando needs: run-npm-build hace que este trabajo dependa del trabajo run-npm-build .
|
```yaml build-and-push-image: runs-on: ubuntu-latest needs: run-npm-test ``` |
Este job publica el paquete. El comando needs: run-npm-test hace que este trabajo dependa del trabajo run-npm-test .
|
```yaml permissions: contents: read packages: write ``` |
Establece los permisos concedidos a GITHUB_TOKEN para las acciones de este trabajo.
|
```yaml - name: Log in to GitHub Docker Registry uses: docker/login-action@f054a8b539a109f9f41c372932f1ae047eff08c9 with: registry: docker.YOUR-HOSTNAME.com username: ${{ github.actor }} password: ${{ secrets.GITHUB_TOKEN }} ``` |
Crea un paso denominado Log in to GitHub Docker Registry , que inicia sesión en el registro mediante la cuenta y la contraseña que publicarán los paquetes. Una vez que se publica, los paquetes se limitarán a la cuenta que se define aquí.
|
```yaml - name: Build and push Docker image ``` |
Crea un paso denominado Build and push Docker image . Este paso se ejecuta como parte del trabajo build-and-push-image .
|
```yaml uses: docker/build-push-action@ad44023a93711e3deb337508980b4b5e9bcdc5dc ``` |
Usa la acción build-push-action de Docker para compilar la imagen, en función de la propiedad Dockerfile del repositorio. Si la compilación es exitosa, sube la imagen al GitHub Packages.
|
```yaml with: ``` |
Envía los parámetros necesarios a la acción build-push-action . Estas se definen en líneas subsecuentes.
|
```yaml push: true ``` | Sube esta imagen al registro si se compila con éxito. |
```yaml tags: | docker.YOUR-HOSTNAME.com/${{ github.repository }}/octo-image:${{ github.sha }} ``` | 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 vez que inserte un cambio en una rama denominada release
en el repositorio. Puede ver el progreso en la pestaña Acciones.
Unos minutos después de que se complete el flujo de trabajo, el paquete nuevo podrá visualizarse en tu repositorio. Para buscar los paquetes disponibles, consulta "Visualizar paquetes".
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 GitHub Packages. Luego, el flujo de trabajo puede ejecutar pruebas de CI que requieran las dependencias.
Para instalar paquetes hospedados por GitHub Packages mediante GitHub Actions se necesita una configuración mínima o autenticación adicional cuando se usa un GITHUB_TOKEN
.
Los pasos de configuración varían de acuerdo con el cliente del paquete. Para información general sobre cómo configurar un flujo de trabajo para GitHub Actions, consulta "Uso de flujos de trabajo".