GitHub Actions: Automatización de CI/CD Integrada¶
¿Qué es GitHub Actions?¶
GitHub Actions es una plataforma nativa de CI/CD integrada directamente en GitHub que permite automatizar flujos de trabajo de desarrollo de software.
Capacidades Principales:¶
- 🤖 Automatizar pruebas de software de forma continua
- ⚡ Ejecutar tareas en respuesta a eventos (push, pull request, issues)
- 📅 Programar tareas periódicas (cron jobs)
- 🏗️ Crear pipelines complejos con múltiples etapas y dependencias
Entornos Disponibles:¶
Proporciona runners preconfigurados con Linux, Windows y macOS para ejecutar tus workflows.
Estructura de Workflows¶
📁 Organización de Archivos¶
Los workflows se definen en archivos YAML dentro de la carpeta:
.github/workflows/
🎯 Ejemplo Básico de Workflow¶
name: Pipeline
on: [push, pull_request]
branches: [main, master, pepito, "*"]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Run tests
run: npm test
🔧 Actions Reutilizables¶
La plataforma permite usar actions preconstruidas del marketplace:
- uses: actions/checkout@v5
- uses: actions/setup-java@v4
Repositorio oficial de actions: https://github.com/actions/
Ejemplo Práctico: Pipeline para Proyecto C++ con Gradle¶
🚀 Configuración Inicial del Proyecto¶
# Inicializar proyecto Gradle para C++
gradle init
# Configurar repositorio Git
git init
git remote set-url <url>
git add . && git commit -m "mensaje" && git push origin master
📋 Workflow Completo: Build y Test¶
name: Build and test
on: [push, pull_request]
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: 17
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v5
- name: Build with Gradle
run: ./gradlew build -x test
test:
runs-on: ubuntu-latest
needs: build # ⚡ Dependencia: solo ejecuta si build es exitoso
steps:
- name: Checkout
uses: actions/checkout@v5
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: "temurin"
java-version: 17
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Test with Gradle
run: ./gradlew test
🔒 Protección de Ramas con Rulesets¶
Configuración Recomendada para la Rama Principal:¶
- ✅ Requerir pull request antes del merge
- 🚫 Bloquear force push
- ✅ Activar las reglas de protección
Flujo de Trabajo Protegido:¶
graph LR
A[Rama de Desarrollo] --> B[Pull Request]
B --> C[Revisión de Código]
C --> D[Ejecución de CI/CD]
D --> E[Merge a Main]
Proceso seguro: Para realizar cambios en la rama principal, es necesario: 1. Crear una nueva rama desde main 2. Desarrollar y probar los cambios 3. Crear un pull request que activará automáticamente el pipeline CI/CD 4. Después de aprobación y pruebas exitosas, mergear a main
Ventajas de GitHub Actions¶
🎯 Integración Nativa¶
- Totalmente integrado con el ecosistema GitHub
- Sin configuración adicional de servidores
🔄 Flexibilidad¶
- Soporta múltiples lenguajes y frameworks
- Amplia biblioteca de actions preconstruidas
📊 Visibilidad Completa¶
- Logs detallados de cada ejecución
- Estado de pipelines visible en pull requests
💰 Costo-Efectivo¶
- Minutos gratuitos para repositorios públicos
- Precios competitivos para repositorios privados
GitHub Actions representa la evolución moderna de CI/CD, combinando la potencia de pipelines automatizados con la simplicidad de una plataforma integrada que sigue las mejores prácticas de desarrollo seguro y colaborativo.