GitHub Actions - Automatización de Procesos
Tags: ci, continuousdeployment, githubactions, github
Published: 2024-02-13 17:00:00

*Un introducción a la automatización de procesos utilizando [GitHub Actions](https://github.com/features/actions)*

[*Artículo en inglés*](https://dev.to/hozlucas28/github-actions-process-automation-cnf)

![Logotipo oficial de GitHub Actions compuesto por cinco círculos conectados.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g83ujy7mpju22h39moay.png)

> Logotipo de [GitHub Actions](https://github.com/features/actions)

## Introducción

En el mundo del desarrollo de software, la automatización se ha convertido en un elemento crucial para la eficiencia y la calidad del código. [GitHub Actions](https://github.com/features/actions) surgió con el objetivo de suplir dicha tarea.

En este artículo, exploraremos cómo las [GitHub Actions](https://github.com/features/actions) crean los flujos de trabajo necesarios para cumplir con la difícil tarea de automatizar procesos.

## Lista de contenidos

- ¿Qué son las GitHub Actions?
- ¿Qué es un Flujo de Trabajo?
- Creando tu primer Flujo de Trabajo
- Personalización y configuración avanzada
- Integración con plataformas externas
- Beneficios y casos de uso
- Conclusiones
- Recursos relacionados

### ¿Qué son las GitHub Actions?

[GitHub Actions](https://github.com/features/actions) es un conjunto de herramientas, denominadas como “Acciones”, integradas en [GitHub](https://github.com/). Estas acciones permiten la automatización de procesos comunes, como la ejecución de pruebas, la compilación de código y el despliegue de aplicaciones desde [GitHub](https://github.com/). Convirtiendo a las [GitHub Actions](https://github.com/features/actions) en un servicio fundamental para agilizar y mejorar la calidad del software.

### ¿Qué es un Flujo de Trabajo?

Un flujo de trabajo en [GitHub Actions](https://github.com/features/actions) es una serie de trabajos automatizados que se ejecutan en respuesta a eventos específicos del repositorio asociado. Estos eventos pueden ser acciones como confirmaciones de código ([Commits](https://docs.github.com/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits)), la apertura de solicitudes de extracción ([Pull Requests](https://docs.github.com/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)) o incluso la publicación de nuevas versiones ([Releases](https://docs.github.com/repositories/releasing-projects-on-github/about-releases)). Los flujos de trabajo permiten organizar y coordinar las acciones de las [GitHub Actions](https://github.com/features/actions) involucradas para lograr el objetivo deseado.

### Creando tu primer Flujo de Trabajo

La creación de un flujo de trabajo en [GitHub Actions](https://github.com/features/actions) no demanda amplios conocimientos. Puedes iniciar con un flujo de trabajo que realice los tests cada vez que se envié una confirmación de código ([Commits](https://docs.github.com/pull-requests/committing-changes-to-your-project/creating-and-editing-commits/about-commits)) a la rama ([Branch](https://docs.github.com/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-branches)) principal del repositorio. Creando un archivo llamado `.github/workflows/build-and-test.yml` y definiendo sus propiedades.

> Un archivo con extensión `.yml` ([YAML](https://yaml.org/)), creado dentro del directorio `.github/workflows`, define un flujo de trabajo de las [GitHub Actions](https://github.com/features/actions). En el mismo se establecen las acciones a ejecutar, los eventos disparadores y el cómo interactuará con el repositorio

```yaml
name: Build and Test

on:
  push:
    branches:
      - main

jobs:
  build:
    runs-on: ubuntu-latest

    steps:
    - name: Checkout repository
      uses: actions/checkout@v4

    - name: Set up NodeJS
      uses: actions/setup-node@v4
      with:
        node-version: '20'

    - name: Install dependencies
      run: npm ci

    - name: Run tests
      run: npm run test
```

> Ejemplo del archivo `.github/workflows/build-and-test.yml`

### Personalización y configuración avanzada

[GitHub Actions](https://github.com/features/actions) permite una personalización avanzada de los flujos de trabajo. Puedes definir matrices para ejecutar acciones en diferentes [entornos](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment), configurar [variables de entorno](https://docs.github.com/actions/learn-github-actions/variables), y utilizar [acciones de la comunidad](https://github.com/marketplace?type=actions) para integrar herramientas específicas. Esto brinda un control granular sobre cómo se ejecutan las acciones y se adaptan a las necesidades específicas del proyecto.

### Integración con plataformas externas

Una de las características destacadas de [GitHub Actions](https://github.com/features/actions) es su capacidad para integrarse con otras plataformas y servicios. Puedes utilizar acciones predefinidas para desplegar en servicios en la nube, como: [AWS](https://aws.amazon.com/), [Azure](https://azure.microsoft.com/) o [Google Cloud](https://cloud.google.com/). Además, la [API de GitHub Actions](https://docs.github.com/rest/actions?apiVersion=2022-11-28) permite la integración con herramientas propias y servicios personalizados.

### Beneficios y casos de uso

La automatización con [GitHub Actions](https://github.com/features/actions) aporta numerosos beneficios al desarrollo de software. Acelera la entrega continua ([CD](https://es.wikipedia.org/wiki/Entrega_continua)), mejora la calidad del código al ejecutar pruebas automáticamente, y facilita la implementación en diversos entornos. Casos de uso comunes incluyen la construcción y despliegue de aplicaciones web, la ejecución de pruebas de integración y la notificación de cambios en servicios externos.

Un ejemplo práctico seria la comprobación de solicitudes de extracción ([Pull Requests](https://docs.github.com/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)) a través de un flujo de trabajo activado en cada solicitud de extracción ([Pull Request](https://docs.github.com/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests)).

![Ejecución de un flujo de trabajo de una GitHub Action, comprobando una solicitud de incorporación (Pull Request). Se pueden observar cuatro trabajos exitosos: comprobar título, obtener archivos confirmados, comprobar archivos confirmados, y finalmente, comprobar archivo confirmado.](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/h3uqzjq6kc05ojha1juq.png)

> Ejemplo de un flujo de trabajo que comprueba una solicitud de extracción ([Pull Request](https://docs.github.com/pull-requests/collaborating-with-pull-requests/proposing-changes-to-your-work-with-pull-requests/about-pull-requests))

## Conclusiones

[GitHub Actions](https://github.com/features/actions) ha demostrado ser una herramienta valiosa para la automatización en el desarrollo de software. Desde simplificar tareas rutinarias hasta facilitar flujos de trabajo complejos, [GitHub Actions](https://github.com/features/actions) mejora la eficiencia y la calidad en proyectos de todos los tamaños. Integrar esta herramienta puede marcar la diferencia en la velocidad y confiabilidad de tus entregas de software.

## Recursos relacionados

- [Curso gratuito de GitHub y Microsoft para aprender GitHub Actions](https://learn.microsoft.com/collections/n5p4a5z7keznp5)
- [Documentación oficial de GitHub Actions](https://docs.github.com/actions)
- [Guías oficiales de GitHub Actions](https://docs.github.com/actions/guides)
- [Página oficial de GitHub Actions](https://github.com/features/actions)