Concepto clave
GitHub Actions es una plataforma de automatización que permite ejecutar flujos de trabajo (workflows) directamente en tu repositorio de GitHub. Imagina que tienes un asistente virtual que, cada vez que haces un cambio en tu código, automáticamente realiza tareas repetitivas como compilar, probar o desplegar tu aplicación. Esto elimina la necesidad de hacerlo manualmente, reduciendo errores y acelerando el desarrollo.
En el contexto de CI/CD (Integración Continua/Despliegue Continuo), GitHub Actions actúa como el motor que orquesta todo el proceso. Cuando configuras un workflow, defines qué eventos (como un push o un pull request) lo activan, y qué pasos debe ejecutar. Por ejemplo, puedes automatizar la ejecución de tests cada vez que alguien sube código, asegurando que no se introduzcan errores. Es similar a tener una cadena de montaje en una fábrica: cada etapa se ejecuta de forma automática y secuencial, optimizando el tiempo y los recursos.
Cómo funciona en la práctica
Para automatizar un script simple con GitHub Actions, sigue estos pasos:
- Crea un archivo de configuración en tu repositorio, dentro de la carpeta
.github/workflows/. Este archivo, típicamente en formato YAML, define el workflow. - Define el evento que activará el workflow, como
pusha la rama principal. - Configura un job que contenga los pasos a ejecutar. Cada paso puede ser un comando de shell o una acción predefinida.
- Ejecuta tu script dentro de uno de los pasos, usando comandos como
runpara shell scripts. - Verifica los resultados en la pestaña "Actions" de tu repositorio en GitHub, donde podrás ver el estado de la ejecución y logs detallados.
Por ejemplo, si tienes un script de Python que limpia datos, puedes configurar un workflow que lo ejecute automáticamente cada vez que actualices el código, generando un reporte o notificando si hay errores.
Codigo en accion
A continuación, un ejemplo funcional de un workflow que automatiza un script simple de Python. Este script calcula el factorial de un número y lo imprime. Primero, el script en Python:
# script_factorial.py
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
if __name__ == "__main__":
num = 5
result = factorial(num)
print(f"El factorial de {num} es {result}")Ahora, el archivo de configuración del workflow en YAML:
# .github/workflows/automate-script.yml
name: Ejecutar Script de Factorial
on:
push:
branches:
- main
jobs:
run-script:
runs-on: ubuntu-latest
steps:
- name: Checkout del código
uses: actions/checkout@v3
- name: Configurar Python
uses: actions/setup-python@v4
with:
python-version: '3.9'
- name: Ejecutar script de factorial
run: python script_factorial.pyEste workflow se activa con un push a la rama main, usa un runner de Ubuntu, y ejecuta el script de Python. Puedes copiar y pegar estos códigos en tu repositorio para probarlo.
Errores comunes
- Error en la sintaxis YAML: Olvidar la indentación correcta o usar tabs en lugar de espacios. Esto causa que el workflow falle al parsear. Solución: Usa un editor con soporte para YAML y verifica la indentación con espacios.
- Script no encontrado: Si el script no está en la ruta correcta o no se ha hecho checkout del código, el comando
runfallará. Solución: Asegúrate de incluir el pasoactions/checkout@v3y de que la ruta al script sea relativa al directorio raíz del repositorio. - Permisos insuficientes: Algunos scripts requieren permisos de ejecución. Si no se configuran, el workflow puede fallar. Solución: Agrega un paso para dar permisos, por ejemplo:
run: chmod +x script.shantes de ejecutarlo. - No verificar dependencias: Si el script depende de librerías o herramientas no instaladas en el runner, fallará. Solución: Incluye pasos para instalar dependencias, como
pip install -r requirements.txtpara Python. - Ignorar los logs de error: No revisar los logs en la pestaña "Actions" puede hacer difícil depurar problemas. Solución: Siempre revisa los logs detallados para identificar la causa raíz de los fallos.
Checklist de dominio
- Crear un archivo YAML en
.github/workflows/con la estructura básica de un workflow. - Definir un evento de activación, como
pushopull_request. - Configurar un job que use un runner adecuado, por ejemplo
ubuntu-latest. - Incluir el paso de checkout del código usando
actions/checkout@v3. - Ejecutar un script simple usando comandos
runen los pasos del workflow. - Verificar la ejecución exitosa del workflow en la pestaña "Actions" de GitHub.
- Depurar errores comunes revisando los logs y ajustando la configuración.
Automatiza un script de limpieza de datos con GitHub Actions
En este ejercicio, automatizarás un script de Python que limpia un archivo CSV, eliminando filas duplicadas y guardando el resultado. Sigue estos pasos:
- Crea un repositorio nuevo en GitHub llamado "data-cleanup-automation".
- En tu máquina local, clona el repositorio y crea un archivo
clean_data.pycon el siguiente código:import pandas as pd def clean_csv(input_file, output_file): df = pd.read_csv(input_file) df_cleaned = df.drop_duplicates() df_cleaned.to_csv(output_file, index=False) print(f"Archivo limpiado guardado como {output_file}") if __name__ == "__main__": clean_csv("data.csv", "cleaned_data.csv") - Crea un archivo
data.csvde ejemplo con algunas filas duplicadas para probar el script. - En la carpeta
.github/workflows/del repositorio, crea un archivo YAML llamadocleanup-workflow.ymlque:- Se active con un push a la rama main.
- Use un runner de Ubuntu.
- Incluya pasos para instalar Python y pandas.
- Ejecute el script
clean_data.py.
- Haz commit y push de los cambios a GitHub.
- Verifica en la pestaña "Actions" que el workflow se ejecute correctamente y genere el archivo
cleaned_data.csv.
- Asegúrate de que el archivo data.csv esté en el directorio raíz del repositorio para que el script lo encuentre.
- Usa 'pip install pandas' en un paso del workflow para instalar la dependencia necesaria.
- Si el workflow falla, revisa los logs en GitHub Actions para ver mensajes de error específicos.
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.