Chuck's Academy

Git y Github

Integración continua con GitHub Actions

En este módulo, exploraremos cómo configurar e implementar integración continua (CI) utilizando GitHub Actions. GitHub Actions es un servicio de CI/CD integrado en GitHub que permite automatizar flujos de trabajo, como pruebas, construcción y despliegue de aplicaciones.

¿Qué es Integración Continua (CI)?

La Integración Continua (CI) es una práctica de desarrollo de software en la que los desarrolladores integran regularmente su código en un repositorio compartido, seguido de la ejecución automática de pruebas y compilaciones. Esto ayuda a identificar problemas de forma temprana y mejorar la calidad del software.

Configuración de GitHub Actions

Crear un archivo de workflow

Los workflows de GitHub Actions se definen en archivos YAML ubicados en el directorio .github/workflows de tu repositorio. Cada archivo define un conjunto de acciones que se ejecutan en respuesta a eventos específicos.

Ejemplo básico de workflow

Vamos a crear un ejemplo simple que ejecute pruebas automatizadas cada vez que se haga push al repositorio.

  1. Crea el directorio .github/workflows si aún no existe:

    bash
  2. Crea un archivo YAML llamado ci.yml dentro del directorio .github/workflows y añade lo siguiente:

    yaml

Componentes de un Workflow

name

Define el nombre del workflow. En este ejemplo, el workflow se llama "CI".

on

Especifica los eventos que activan el workflow. Aquí se ejecuta en cada push y pull_request a la rama main.

jobs

Es una colección de trabajos que se ejecutarán en este workflow. Cada trabajo incluye pasos que definen las tareas específicas:

  • runs-on: El ambiente donde se ejecutará el trabajo (ej. ubuntu-latest).
  • steps: Las acciones a ejecutar.

Reutilización de acciones

Usar acciones de la comunidad

GitHub Actions tiene un amplio marketplace con acciones que puedes reutilizar. Por ejemplo, para ejecutar linters, compilaciones e incluso despliegues.

Ejemplo de uso de una acción de linting:

yaml

Variables y secretos

Uso de secretos

Puedes almacenar información sensible (como tokens de API) en los secretos de GitHub y acceder a ellos en tus workflows.

  1. Navega a tu repositorio en GitHub.
  2. Ve a "Settings" -> "Secrets".
  3. Añade un nuevo secreto y asígnale un nombre (por ejemplo, API_TOKEN).

Luego, usa el secreto en tu archivo YAML:

yaml

Ejemplo práctico de un Workflow Completo

Configurar un pipeline de CI para una aplicación Node.js

Supongamos que tenemos una aplicación Node.js y queremos configurar un pipeline de CI que:

  1. Instale las dependencias.

  2. Ejecute pruebas.

  3. Haga linting al código.

  4. Compile la aplicación.

  5. Crea el archivo YAML en .github/workflows/ci.yml:

    yaml

Deploy continuo

Desplegar a Heroku

Supongamos que deseas desplegar tu aplicación automáticamente a Heroku cada vez que haya un cambio en main.

  1. Añade el secreto HEROKU_API_KEY en la configuración de secretos de GitHub.
  2. Configura el workflow para incluir el paso de despliegue:
    yaml

Buenas prácticas

  • Mantén tus workflows simples y específicos: Un archivo YAML por cada conjunto de tareas relacionadas.
  • Utiliza secrets para información sensible.
  • Aprovecha las acciones de la comunidad: Reduce la redundancia utilizando acciones preexistentes en el marketplace.
  • Divide y vencerás: Divide tareas complejas en pasos más manejables y comprensibles.

Con estas técnicas, puedes configurar una pipeline de CI/CD robusta usando GitHub Actions para mejorar la calidad y la eficiencia de tu desarrollo de software. En el próximo módulo, aprenderemos sobre la gestión de versiones y el lanzamiento de releases.


Pregúntame lo que sea