Lección 4 de 19 · Lectura y práctica
Quiz: Fundamentos de GitHub Actions
Tipo de lección: QuizConcepto claveGitHub Actions es una plataforma de integración continua y despliegue continuo (CI/CD) que permite automatizar flujos de trabajo directamente en tu repositorio de GitHub. Imagina que tienes un.
Del concepto a la práctica
Taller de esta lección
Este repaso debe comprobar relaciones, no definiciones aisladas. Si un evento inicia el workflow, cada job se ejecuta en un runner y cada job contiene steps, entonces un fallo puede localizarse observando cuál de esas capas no produjo el resultado esperado.
Ejemplo resuelto
Caso: un workflow se inicia con push, pero el log muestra que el comando falló. La respuesta correcta es que el evento sí funcionó; la investigación debe continuar en el step y en su código de salida. No corresponde cambiar el disparador.
Pruébalo
Lee una ejecución correcta y anota evento, job, runner y step.
Lee una ejecución fallida y señala la primera línea con error.
Clasifica cada elemento como workflow, job, step o action.
Explica qué cambio mínimo corregiría el fallo observado.
Comprueba tu resultado
Error frecuente: llamar “job” a cada comando individual. Corrección: identifica el bloque que agrupa comandos y separa sus steps.
Ejercicio: responde qué ocurre si el primer step devuelve código uno. Resultado esperado: el job queda fallido y los steps posteriores normales se omiten por la condición de éxito implícita; un step con if: always() puede ejecutar limpieza o guardar diagnóstico, pero no vuelve válida la ejecución; la explicación menciona el código de salida.

Mapa de prácticaEl código se empaqueta en una imagen y se prueba antes de publicarlo. Esa misma imagen se guarda en un registro y se usa en el despliegue. Comprobar la salud de las instancias permite detectar un fallo sin reconstruir el artefacto.
Ver la infografía en tamaño completo ↗Tipo de lección: Quiz
Concepto clave
GitHub Actions es una plataforma de integración continua y despliegue continuo (CI/CD) que permite automatizar flujos de trabajo directamente en tu repositorio de GitHub. Imagina que tienes un equipo de asistentes virtuales que revisan cada cambio en tu código, ejecutan pruebas, construyen tu aplicación y la despliegan automáticamente cuando todo está correcto. Esto elimina tareas manuales repetitivas y reduce errores humanos.
La analogía del mundo real sería una fábrica automatizada: cuando llega nueva materia prima (código nuevo), una línea de ensamblaje (workflow) se activa automáticamente para probar, empaquetar y enviar el producto terminado. Los componentes principales son workflows (flujos de trabajo definidos en archivos YAML), jobs (tareas dentro del workflow que se ejecutan en runners), y actions (componentes reutilizables que realizan operaciones específicas).
Cómo funciona en la práctica
Cuando configuras GitHub Actions, creas un archivo YAML en la carpeta .github/workflows de tu repositorio. Este archivo define qué debe ocurrir cuando se disparan ciertos eventos, como un push a la rama main o la creación de un pull request. El proceso paso a paso es:
- Un evento (como un push) activa el workflow
- GitHub busca runners disponibles (máquinas virtuales o self-hosted)
- Se ejecutan los jobs en paralelo o secuencialmente según la configuración
- Cada job ejecuta steps que pueden usar actions predefinidas o comandos personalizados
- Los resultados se muestran en la pestaña Actions de tu repositorio
Código en acción
Este es un ejemplo básico de workflow que se ejecuta en cada push a main:
name: CI Pipeline
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout código
uses: actions/checkout@v3
- name: Configurar Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Instalar dependencias
run: npm ci
- name: Ejecutar tests
run: npm testAhora, mejorémoslo agregando cache para acelerar builds:
name: CI Pipeline Optimizado
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
jobs:
build-and-test:
runs-on: ubuntu-latest
steps:
- name: Checkout código
uses: actions/checkout@v3
- name: Configurar Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Cache node_modules
uses: actions/cache@v3
with:
path: ~/.npm
key: npm-${{ hashFiles('package-lock.json') }}
restore-keys: |
npm-
- name: Instalar dependencias
run: npm ci
- name: Ejecutar tests
run: npm test
- name: Build de producción
run: npm run buildErrores comunes
- No usar cache para dependencias: Cada ejecución descarga todas las dependencias desde cero, aumentando tiempo y costos. Solución: implementar actions/cache como en el ejemplo anterior.
- Secretos en el código: Incluir contraseñas o tokens directamente en el YAML. Solución: usar GitHub Secrets y referenciarlos con
${{ secrets.NOMBRE_SECRET }}. - Jobs sin dependencias definidas: Ejecutar jobs en paralelo cuando necesitan resultados de otros. Solución: usar
needspara definir dependencias entre jobs. - No limpiar recursos: Dejar contenedores o archivos temporales después de la ejecución. Solución: agregar steps de cleanup o usar actions como
actions/upload-artifactyactions/download-artifactcorrectamente. - Ignorar el matrix strategy: No probar en múltiples versiones de runtime o sistemas operativos. Solución: usar
strategy.matrixpara ejecutar tests en diferentes entornos.
Checklist de dominio
- Puedo crear un workflow básico que se ejecute en push y pull requests
- Sé configurar diferentes runners (ubuntu-latest, windows-latest, self-hosted)
- Entiendo cómo usar actions del marketplace y crear mis propias actions
- Puedo manejar secretos de forma segura usando GitHub Secrets
- Sé implementar cache para optimizar tiempos de ejecución
- Puedo definir dependencias entre jobs usando
needs - Entiendo cómo usar artifacts para pasar datos entre jobs
Configura un pipeline CI básico para una aplicación Node.js
En este ejercicio práctico, configurarás un pipeline de integración continua para una aplicación Node.js existente. Sigue estos pasos:
- Crea un nuevo repositorio en GitHub o usa uno existente con una aplicación Node.js simple
- En la raíz del repositorio, crea la carpeta
.github/workflows - Dentro de esta carpeta, crea un archivo llamado
ci.yml - Configura el workflow para que se active en push a la rama main y en pull requests
- Define un job llamado
testque useubuntu-latestcomo runner - Agrega steps para: checkout del código, setup de Node.js versión 18, instalación de dependencias con
npm ci, y ejecución de tests connpm test - Commit y push los cambios a tu repositorio
- Verifica en la pestaña Actions de GitHub que el workflow se ejecute correctamente
- Opcional: Agrega un step adicional para construir la aplicación con
npm run build
Pistas
- Recuerda que la estructura YAML es sensible a indentación
- Puedes encontrar actions populares en el GitHub Marketplace
- Usa
actions/checkout@v3para obtener el código del repositorio
Evalua tu comprension
Completa el quiz interactivo de arriba para ganar XP.
Sigue con GitHub Actions para CI/CD: Automatización de Builds, Tests y Deploys
Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.
Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.