Saltar al contenido principal

🔗 Dependencias en GitHub Actions

Cuando trabajamos con múltiples jobs dentro de un workflow de GitHub Actions, es habitual que algunas tareas necesiten ejecutarse únicamente después de que otras hayan finalizado correctamente.

Para resolver este problema, GitHub Actions proporciona la propiedad needs.

🚀 El problema de la ejecución paralela

Por defecto, los jobs definidos dentro de un workflow se ejecutan en paralelo siempre que sea posible.

Por ejemplo:

  • Ejecutar los tests
  • Ejecutar el linter
  • Construir la aplicación

pueden iniciarse al mismo tiempo si no existe ninguna dependencia entre ellos.

Esto suele ser útil para reducir el tiempo total de ejecución, pero en muchos casos necesitamos imponer un orden.

🎯 La propiedad needs

La propiedad needs permite indicar que un job depende de uno o varios jobs anteriores.

frontend-build:
  needs: [frontend-lint, frontend-test]

En este caso, frontend-build no comenzará hasta que ambos jobs hayan terminado correctamente.

🏗️ Organizando el pipeline

Una estructura habitual consiste en separar el pipeline en varias fases:

🔍 Validación

frontend-lint:

Se encarga de analizar la calidad del código.

🧪 Testing

frontend-test:

Ejecuta la batería de pruebas automatizadas.

📦 Build

frontend-build:
  needs: [frontend-lint, frontend-test]

Genera el artefacto final únicamente cuando las validaciones anteriores han sido satisfactorias.

⚡ Dependencias múltiples

needs admite una lista de dependencias.

needs:
  - frontend-lint
  - frontend-test

o su versión abreviada:

needs: [frontend-lint, frontend-test]

Ambas opciones son equivalentes.

🛑 Qué ocurre cuando falla un job

Si alguno de los jobs indicados en needs falla:

  • El job dependiente no se ejecutará.
  • El workflow marcará el error correspondiente.
  • Se evita continuar con tareas que dependen de resultados incorrectos.

Por ejemplo:

  • Si falla el linter.
  • Si fallan los tests.

El proceso de build no llegará a ejecutarse.

📊 Visualización del grafo

GitHub Actions genera automáticamente un grafo de dependencias.

Esto permite visualizar:

  • Qué jobs se ejecutan en paralelo.
  • Qué jobs dependen de otros.
  • El flujo completo del pipeline.

A medida que los workflows crecen, esta visualización resulta especialmente útil para comprender la arquitectura del proceso de CI/CD.

💡 Buenas prácticas

Al trabajar con dependencias entre jobs:

  • Mantén las fases claramente separadas.
  • Ejecuta en paralelo todo lo que sea posible.
  • Utiliza needs únicamente cuando exista una dependencia real.
  • Evita cadenas excesivamente largas de dependencias.
  • Organiza el pipeline siguiendo una estructura lógica.

📌 Ideas clave de esta clase

Quédate con estos conceptos:

  • Los jobs se ejecutan en paralelo por defecto.
  • needs permite definir dependencias entre jobs.
  • Un job puede depender de uno o varios jobs.
  • Si una dependencia falla, el job dependiente no se ejecuta.
  • Las dependencias ayudan a organizar pipelines complejos.
  • GitHub Actions muestra automáticamente el grafo de ejecución.

🚀 Lo siguiente

Ahora que sabes cómo conectar jobs mediante dependencias, el siguiente paso es aprender a construir pipelines más complejos combinando ejecución paralela, dependencias y reutilización de workflows para crear procesos de CI/CD robustos y mantenibles.