Gestionar eficazmente los artefactos de GitHub Actions para implementar versiones

¿Tu equipo ha invertido mucho esfuerzo en empaquetar código manualmente? Si es así, ya es hora de que utilices GitHub Actions Artifacts, para que tu equipo pueda automatizar este procedimiento. Al mismo tiempo, reducirás la variabilidad en las versiones y ahorrarás tiempo para trabajar en otras tareas cruciales.

GitHub Actions Artifacts te permite transferir de manera efectiva datos de un trabajo activo a otro, eliminando las tareas repetitivas y que consumen mucho tiempo en la implementación. En este tutorial, aprenderás cómo usar y administrar artefactos para implementar una aplicación de React en Netlify.

¡Sigue leyendo y comienza a crear implementaciones consistentes!

Requisitos previos

Este tutorial será una demostración práctica. Si deseas seguirlo, asegúrate de tener una aplicación de React simple y un repositorio de GitHub. Este tutorial utiliza un repositorio de la Aplicación de Contador de React.

Creando un flujo de trabajo de CI/CD

Cuando un trabajo en un flujo de trabajo de GitHub Actions finaliza, también lo hacen los datos que procesan y generan. Los datos llamados artefactos se pueden conservar en la página del repositorio después de que los trabajos se hayan completado y se pueden cargar utilizando la acción upload-artifact.

Pero antes de usar los artefactos de GitHub Actions para tus versiones de implementación, primero necesitas construir un flujo de trabajo de CI/CD para tu aplicación:

1. Crea una carpeta .github en el directorio raíz de tu aplicación y crea una subcarpeta llamada workflows.

2. A continuación, crea el archivo de flujo de trabajo (un archivo .yml) en la carpeta workflows. Puedes nombrar el archivo como quieras. Pero para este tutorial, el archivo se llama ci.yml.

La estructura de recursos de tu archivo de flujo de trabajo debería verse como la siguiente.

Verifying workflow resource structure

3. Agrega el siguiente código al archivo ci.yml y guarda los cambios. El código a continuación crea un flujo de trabajo llamado CI con un trabajo de compilación para la aplicación.

name: CI

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]
# El flujo de trabajo se activará en un evento de empuje o extracción en la rama principal

jobs:
  build:
    name: Build
    runs-on: ubuntu-latest
# Sistema operativo en el que se ejecutará
    strategy:
      matrix:
        node-version: [12.x, 14.x, 16.x]
    steps:
    - uses: actions/checkout@v3
# Obtener código del repositorio
    - name: Use Node.js ${{ matrix.node-version }}
       uses: actions/setup-node@v3
       with:
           node-version: ${{ matrix.node-version }}
    - name: Install dependencies
      run: npm ci

    - name: Build app
      run: npm run build

    - name: Run tests
      run: npm run test

4. Ahora, agrega y confirma los cambios, y súbelos a tu repositorio remoto de GitHub.

Si la subida fue exitosa, verás el commit con un círculo de color ámbar, como se muestra a continuación, indicando que el flujo de trabajo se está ejecutando.

Verifying successful commit and push to the remote repository

5. Haz clic en la pestaña Actions para ver el flujo de trabajo.

Viewing the workflow

6. Haz clic en cualquier trabajo de compilación en el lado izquierdo y expande el trabajo de compilación de la aplicación. Verás los datos del trabajo de compilación (archivos estáticos) generados. Estos son los archivos que necesitas para el despliegue.

Estos archivos generados se pierden cuando se elimina el servidor que ejecuta el trabajo (o cuando el trabajo termina). Dado que necesitarás estos archivos para el despliegue, implementarás un paso para tomar estos archivos y cargarlos como un artefacto en la siguiente sección.

Viewing the builds

7. Por último, agrega el siguiente código después de ejecutar las pruebas en el bloque de pasos de tu trabajo de construcción.

El código a continuación carga un artefacto llamado “production” desde el directorio de construcción utilizando la acción “actions/upload-artifact@v3”.

Los archivos generados se pierden cuando el servidor que ejecuta el trabajo se desecha o cuando el trabajo termina. Dado que necesitarás estos archivos para implementar, el código a continuación implementa un paso para llevarlos y cargarlos como un artefacto.

# Cargar Artefacto
- name: Upload production-ready build files
  uses: actions/upload-artifact@v3
  with:
    name: production
    path: ./build

Configuración de un período de retención de artefactos personalizado

Los artefactos se almacenan durante 90 días de forma predeterminada antes de ser borrados. Pero dependiendo del tipo de repositorio, puedes cambiar este período de retención.

A continuación se muestran los valores que puedes establecer para personalizar un período de retención de artefactos:

  • Repositorio privado: cualquier valor entre 1 y 400 días.
  • Repositorio público: cualquier valor entre 1 y 90 días solamente.

Para establecer un período de retención de artefactos personalizado, actualiza tu archivo YAML de flujo de trabajo incluyendo retention-days: 2 en tu paso # Cargar Artefacto.

# Cargar Artefacto
- name: Upload production-ready build files
  uses: actions/upload-artifact@v3
  with:
    name: production
    path: ./build
    # Personalizar Período de Retención de Artefactos
		retention-days: 2

Alternativamente, configura el período de retención de artefactos de la siguiente manera a través de GitHub:

  • Navega a la pestaña Configuración en el repositorio.
  • Haz clic en Acción (panel izquierdo) para expandir el menú desplegable y selecciona General.
  • Ingresa el número de días que deseas mantener el artefacto en la sección de Retención de artefactos y registros que se muestra a continuación, y haz clic en Guardar.
click Save

Importar un proyecto desde un repositorio de Git a Netlify

El artefacto de construcción ahora se puede acceder en otro trabajo en el flujo de trabajo al ser descargado porque tienes un paso para cargar el artefacto, reduciendo el tiempo de finalización del flujo de trabajo. Agregarás una tarea de implementación a tu flujo de trabajo, y uno de los pasos en ese trabajo descarga el ítem cargado.

Pero antes de actualizar tu flujo de trabajo, configurarás Netlify para la implementación de la aplicación:

1. Abre tu navegador web favorito, accede a Netlify e inicia sesión con tu cuenta de GitHub.

2. Una vez iniciada la sesión, haz clic en Agregar nuevo sitio en la sección de Sitios, y selecciona Importar un proyecto existente para iniciar la importación de tu proyecto.

Initiating importing project to Netlify

3. Haz clic en GitHub ya que usarás el repositorio que creaste para este tutorial en GitHub. Aparecerá una ventana emergente donde autorizarás el acceso de Netlify a tu identidad de GitHub.

Choosing GitHub as the Git provider

4. Una vez autorizado, busca y selecciona el repositorio del cual deseas importar el proyecto.

Selecting the GitHub repository to import the project from

5. En la nueva página, configura los ajustes básicos de construcción para el sitio, como la rama desde la cual deseas implementar y el comando de construcción. Pero como estarás implementando utilizando acciones de GitHub, deja los campos de comando de construcción y directorio de publicación en blanco.

Haz clic en Deploy site después de configurar la configuración de construcción, y verás que el sitio se está implementando. Una vez implementado, se generará un enlace en vivo para el sitio.

Si dejaste el campo de comando de construcción en blanco, ir al enlace mostrará una página 404 ya que la aplicación no se construyó.

Configuring basic build settings for the site

6. A continuación, haz clic en Configuración del sitio para revisar la información del sitio (paso seis).

Accessing the site details

7. Por último, en la página de Detalles del sitio, toma nota del ID del sitio debajo en la sección de Información del sitio para su uso posterior.

Noting the Site ID

Creación de un token de acceso personal

Ahora que tienes tu ID de sitio, necesitas obtener un token de acceso. El token de acceso personal otorgará acceso a tu cuenta de Netlify para que las acciones de GitHub realicen la implementación en Netlify.

1. Haz clic en tu icono de perfil (arriba a la derecha) y elige Configuración de usuario para acceder a la configuración de tu perfil.

Accessing the profile settings

2. En la nueva página, haz clic en Aplicaciones (panel izquierdo) → Nuevo token de acceso (en la sección de Tokens de acceso personal) para iniciar la creación de un nuevo token de acceso.

Initiating creating a new access token

3. En la nueva página, ingresa un nombre descriptivo para el token y haz clic en Generar token.

Generating a new personal access token

4. Ahora, copia el token a un lugar seguro.

Copying the new personal access token

Seguridad del ID del sitio y del token de acceso mediante la creación de secretos

Ahora que tienes el ID del sitio y el token de acceso de Netlify, puedes agregarlos a tu repositorio para que se utilicen en el flujo de trabajo de las acciones. Pero primero, tendrás que asegurar tu ID de sitio y tu token de acceso mediante la creación de secretos.

1. Navega a tu repositorio de GitHub en tu navegador.

2. A continuación, haz clic en la pestaña Configuración → Secretos (panel izquierdo) → Acciones (debajo de Secretos) para acceder a la lista de acciones disponibles en tu repositorio.

Accessing the list of actions in the GitHub repository

3. Haz clic en el botón Nuevo secreto de repositorio en la página de secretos de Acciones para iniciar la adición de un secreto.

Initiating creating a new repository secret

4. Ahora, proporciona un Nombre descriptivo para el nuevo secreto. Pero este tutorial utiliza NETLIFY_AUTH_TOKEN como nombre de secreto.

Agrega tu token de acceso como Valor y haz clic en Agregar secreto para crear el nuevo secreto.

Adding a secret for the access token

5. Por último, repite el paso cuatro, pero esta vez, agrega un secreto para el ID de tu sitio.

Una vez agregados, verás los secretos en la sección Secretos del repositorio, como se muestra a continuación.

Verifying the newly-added secrets

Descarga e Implementación de Artefacto en Netlify

Ahora que tu sitio de Netlify y secretos están configurados, incluirás un paso en tu flujo de trabajo para implementar en Netlify usando tus secretos.

1. Actualiza tu flujo de trabajo agregando el código a continuación que contiene el trabajo de implementación.

El siguiente código contiene pasos para descargar el artefacto cargado y otro paso para implementarlo en Netlify.

Puedes encontrar el código completo del archivo ci.yml en el repositorio de GitHub de ATA.

deploy:
  name: Deploy #Nombre del trabajo
  needs: build # El trabajo de construcción debe ejecutarse correctamente para que se ejecute el trabajo de implementación
  runs-on: ubuntu-latest

  steps:
  - name: Download artifact
    uses: actions/download-artifact@v3
# Descarga los archivos cargados
    with:
      name: production
      path: ./build

  - name: Deploy to Netlify
    uses: netlify/actions/cli@master
# Paso para implementar en Netlify
    env:
      NETLIFY_AUTH_TOKEN: ${{ secrets.NETLIFY_AUTH_TOKEN }}
      NETLIFY_SITE_ID: ${{ secrets.NETLIFY_SITE_ID }}
# Secretos para autenticación
    with:
      args: deploy --dir=build --prod

2. A continuación, añade y envía los cambios al repositorio remoto.

Deberías ver el último commit que se ejecuta en la página de flujos de trabajo en el repositorio, como se muestra a continuación.

Una vez enviado, haz clic en la última ejecución para ver más detalles.

Verifying the latest commit being run

Si los trabajos se ejecutan correctamente, verás una marca de verificación verde junto a los trabajos y el artefacto de producción en la parte inferior de la página.

Verifying the jobs run successfully

3. Ahora, haz clic en el trabajo de implementación (panel izquierdo) y expande la tarea de Implementación en Netlify. Verás la salida del paso, que contiene la URL del sitio web.

Haz clic en la URL del sitio web para verificar que el sitio funcione y sea accesible.

Verifying the Website URL

La URL se abrirá automáticamente en una nueva pestaña de tu navegador web, como se muestra a continuación. Esta salida indica que tu sitio está funcionando correctamente.

Verifying the site works correctly and is accessible via a web browser

Eliminación de Artefactos No Utilizados para Ahorrar Espacio

Después de cada lanzamiento, se utiliza más espacio en disco cuando se cargan y descargan nuevos lanzamientos. ¿Cómo se ahorra espacio? Eliminar artefactos no utilizados es la solución más viable. Debes limitar la cantidad de artefactos de lanzamiento que residen en cada servidor para evitar la acumulación de miles de lanzamientos y un disco lleno.

Además de utilizar la configuración del período de retención para eliminar artefactos después de cierto tiempo, también puedes eliminar el artefacto desde la página de flujos de trabajo en GitHub:

En tu página de flujo de trabajo, haz clic en el ícono de eliminar junto al artefacto para eliminarlo.

Deleting an artifact from the workflow on GitHub

Ahora, haz clic en OK en el cuadro de diálogo (el más superior) para confirmar la eliminación del artefacto.

Confirming artifact deletion

Observa abajo que el artefacto ya no está en la página, confirmando que ha sido eliminado correctamente.

Verifying the artifact is deleted

Conclusión

Has visto cómo los artefactos simplifican el desarrollo de automatizaciones más intrincadas en las que un flujo de trabajo proporciona información a otro. En este punto, deberías tener una mejor comprensión de los artefactos de GitHub Actions y cómo pueden ser utilizados para tus lanzamientos de implementación.

Con este nuevo conocimiento, ¿por qué no aprovechar las acciones de GitHub para la automatización de flujo de trabajo de tu próximo proyecto?

Source:
https://adamtheautomator.com/github-actions-artifacts-2/