Saltar al contenido principal
A
ArceApps

GitHub Actions: El Motor de tu CI/CD

calendar_today
GitHub Actions: El Motor de tu CI/CD

🏗️ 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

  1. Workflow: El proceso automatizado completo (archivo .yml en .github/workflows).
  2. Event (on): Qué dispara el workflow (push, pull_request, schedule).
  3. Job: Un conjunto de pasos que se ejecutan en un mismo runner.
  4. Step: Una tarea individual (comando shell o acción).
  5. 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.

  1. Ve a Settings -> Secrets and variables -> Actions.
  2. Crea un secreto, ej: API_KEY.
  3. Ú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
Android 10 de diciembre de 2025

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.

Leer artículo arrow_forward
Semantic Versioning en CD/CI: La Ciencia Exacta del Despliegue Continuo
DevOps 5 de diciembre de 2025

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.

Leer artículo arrow_forward
GitHub Actions para Google Play Store: La Guía Definitiva de CD en Android
GitHub Actions 30 de octubre de 2025

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.

Leer artículo arrow_forward