GitHub Actions: El Motor de tu CI/CD
Índice de contenidos
🏗️ Anatomía de un Workflow
GitHub Actions permite automatizar cualquier cosa basada en eventos de tu repositorio. Entender sus componentes básicos es crucial para construir pipelines robustos.
Componentes Clave
- Workflow: El proceso automatizado completo (archivo
.ymlen.github/workflows). - Event (on): Qué dispara el workflow (
push,pull_request,schedule). - Job: Un conjunto de pasos que se ejecutan en un mismo runner.
- Step: Una tarea individual (comando shell o acción).
- Runner: La máquina virtual (Ubuntu, Windows, macOS) donde corre el job.
🛠️ Tu Primer Workflow de Android
Vamos a crear un workflow básico que compile la app y corra los tests unitarios cada vez que alguien hace push.
name: Android CI
on:
push:
branches: [ "main" ]
pull_request:
branches: [ "main" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
# 1. Checkout del código
- uses: actions/checkout@v4
# 2. Configurar Java 17
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: gradle
# 3. Dar permisos al wrapper
- name: Grant execute permission for gradlew
run: chmod +x gradlew
# 4. Correr Tests Unitarios
- name: Run Unit Tests
run: ./gradlew testDebugUnitTest
# 5. Compilar APK (opcional para verificar build)
- name: Build APK
run: ./gradlew assembleDebug
🚀 Optimizaciones de Rendimiento (Caching)
El tiempo es dinero (literalmente en GitHub Actions). La optimización más importante es el caching de dependencias.
Gradle descarga cientos de megas en dependencias. No quieres hacer esto en cada ejecución.
La acción actions/setup-java ya tiene soporte nativo para cache de Gradle:
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: 'gradle' # ¡Esta línea es mágica!
Esto cachea automáticamente ~/.gradle/caches y ~/.gradle/wrapper.
🛡️ Gestión de Secretos
Nunca hardcodees tokens o contraseñas en tu YAML. Usa GitHub Secrets.
- Ve a
Settings -> Secrets and variables -> Actions. - Crea un secreto, ej:
API_KEY. - Úsalo en tu workflow:
- name: Build with Secrets
run: ./gradlew assembleRelease
env:
API_KEY: ${{ secrets.API_KEY }}
🧩 Reutilización de Workflows (Composite Actions)
Si tienes lógica repetida (ej. setup de entorno) en varios workflows, crea una Composite Action.
Archivo: .github/actions/setup-android/action.yml
name: 'Setup Android Environment'
description: 'Sets up Java and Gradle cache'
runs:
using: "composite"
steps:
- uses: actions/setup-java@v4
with:
java-version: '17'
distribution: 'temurin'
cache: 'gradle'
Uso en tu workflow principal:
steps:
- uses: actions/checkout@v4
- uses: ./.github/actions/setup-android # Reutilización limpia
- run: ./gradlew test
📊 Matriz de Pruebas
¿Quieres probar tu librería en diferentes versiones de Java o Android? Usa una matriz.
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
api-level: [29, 31, 33]
target: [default, google_apis]
steps:
- name: Run InstrumentedTests
uses: reactivecircus/android-emulator-runner@v2
with:
api-level: ${{ matrix.api-level }}
target: ${{ matrix.target }}
script: ./gradlew connectedCheck
🎯 Conclusión
GitHub Actions es la columna vertebral del DevOps moderno. No es solo para correr tests; puedes usarlo para:
- Etiquetar PRs automáticamente.
- Generar release notes.
- Desplegar a Play Store.
- Notificar a Slack.
Empieza pequeño (Build & Test) y evoluciona tu pipeline a medida que tu proyecto crezca.
Artículos relacionados
Automatización de Versionado con GitHub Actions: La Revolución del Desarrollador Android
Descubre cómo automatizar completamente el versionado de tu app Android con GitHub Actions: desde commits hasta Google Play Store, sin intervención manual.
Semantic Versioning en CD/CI: La Ciencia Exacta del Despliegue Continuo
Domina el versionado semántico en pipelines de CI/CD. Aprende a calcular versiones automáticamente y garantizar la trazabilidad total en tus despliegues Android.
GitHub Actions para Google Play Store: La Guía Definitiva de CD en Android
Aprende a configurar un pipeline de Continuous Deployment robusto que compile, firme y publique tu App Android automáticamente en Google Play Store.