0Pricing
CI/CD with GitHub Actions & DevOps Pipelines · Lección

Ejecución condicional y dependencias entre jobs

Controle cuándo se ejecutan los pasos y jobs mediante condiciones if, la palabra clave needs, expresiones y funciones de comprobación de estado en los workflows de GitHub Actions.

Ejecución condicional y dependencias entre jobs es una lección gratuita de CI/CD with GitHub Actions & DevOps Pipelines en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CI/CD with GitHub Actions & DevOps Pipelines, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CI/CD with GitHub Actions & DevOps Pipelines incluye 4 lecciones en total.

Por qué son importantes las condiciones

No todos los pasos deben ejecutarse siempre. Puede que quiera que un paso de despliegue se ejecute solo en la rama main o que un paso de notificación se ejecute solo cuando algo falle.

GitHub Actions permite asociar una condición if a cualquier paso o trabajo para controlar si se ejecuta.

La clave if

Añada una clave if: a un paso. El paso solo se ejecuta cuando la expresión se evalúa como true.

Las expresiones dentro de if no necesitan el envoltorio ${{ }}, aunque se permite usarlo.

steps:
  - name: Deploy
    if: github.ref == 'refs/heads/main'
    run: ./deploy.sh

Objetos de contexto

Las condiciones se leen de los objetos de contexto que describen la ejecución:

  • github — event, ref, actor, sha
  • env — variables de entorno
  • job y steps — estado del trabajo anterior
  • runner — sistema operativo y arquitectura

Por ejemplo, github.event_name le indica si un push o un pull_request desencadenó la ejecución.

Funciones de comprobación del estado

De forma predeterminada, un paso se omite si un paso anterior falla. Para anular este comportamiento, utilice las funciones de estado:

  • success() — verdadero si ningún paso anterior falló (opción predeterminada)
  • failure() — verdadero si algún paso anterior falló
  • always() — se ejecuta pase lo que pase
  • cancelled() — verdadero si se canceló la ejecución
  - name: Notify on failure
    if: failure()
    run: echo 'Build failed, sending alert'

Ejecutar siempre la limpieza

Un patrón habitual es un paso de limpieza que debe ejecutarse aunque fallen pasos anteriores. Utilice if: always().

Esto garantiza que los recursos temporales, los contenedores o los informes de pruebas se gestionen independientemente del resultado.

  - name: Upload logs
    if: always()
    uses: actions/upload-artifact@v4
    with:
      name: logs
      path: ./logs

Dependencias de trabajos con needs

La palabra clave needs hace que un trabajo espere a otros. Sin ella, los trabajos se ejecutan en paralelo.

Un trabajo incluido en needs debe finalizar correctamente antes de que se inicie el trabajo dependiente.

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - run: npm test
  deploy:
    needs: test
    runs-on: ubuntu-latest
    steps:
      - run: ./deploy.sh

Varias dependencias

Un trabajo puede depender de varios trabajos pasando una lista a needs. Espera a que todos terminen.

Así se crean patrones de convergencia, en los que un trabajo final se ejecuta solo después de que todos los trabajos paralelos hayan finalizado correctamente.

  release:
    needs: [lint, test, build]
    runs-on: ubuntu-latest
    steps:
      - run: echo 'all checks passed'

Trabajos condicionales

La clave if también funciona en los trabajos, no solo en los pasos. Una condición a nivel de trabajo decide si se ejecuta el trabajo completo.

Aquí, el trabajo de despliegue se ejecuta únicamente para los push a main, aunque sigue dependiendo de las pruebas.

  deploy:
    needs: test
    if: github.ref == 'refs/heads/main'
    runs-on: ubuntu-latest
    steps:
      - run: ./deploy.sh

Usar las salidas de los trabajos

Los trabajos pueden pasar datos a trabajos posteriores mediante outputs. Un trabajo dependiente los lee a través del contexto needs.

Esto permite que una condición dependa de un valor calculado anteriormente, como si ha cambiado una versión.

  check:
    runs-on: ubuntu-latest
    outputs:
      changed: ${{ steps.diff.outputs.changed }}
    steps:
      - id: diff
        run: echo 'changed=true' >> $GITHUB_OUTPUT

Combinar condiciones

Puede combinar expresiones con && (y), || (o) y ! (no).

Este ejemplo se ejecuta únicamente para un push correcto a main que no procede de un fork.

    if: success() && github.ref == 'refs/heads/main' && github.event_name == 'push'

if always con needs

Atención: un trabajo con needs se omite si falla una dependencia. Para ejecutar un trabajo final de generación de informes independientemente del resultado, combine needs con if: always().

Dentro puede inspeccionar needs.<job>.result para decidir qué informar.

  report:
    needs: [test, build]
    if: always()
    runs-on: ubuntu-latest
    steps:
      - run: echo ${{ needs.test.result }}

Comprobación rápida

Compruebe su comprensión de la ejecución condicional.

Resumen

Ha aprendido a controlar el flujo de trabajo con condiciones y dependencias.

  • if controla los pasos y trabajos mediante expresiones
  • Las funciones de estado, como failure() y always(), anulan la omisión tras un fallo
  • needs crea patrones de ordenación y convergencia
  • Los outputs de los trabajos proporcionan valores para condiciones posteriores

Estas primitivas le permiten crear canalizaciones precisas y eficientes.

Preguntas frecuentes

¿La lección «Ejecución condicional y dependencias entre jobs» es gratis?

Sí — el texto completo de «Ejecución condicional y dependencias entre jobs» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CI/CD with GitHub Actions & DevOps Pipelines, actualiza a CoddyKit PRO. El curso de CI/CD with GitHub Actions & DevOps Pipelines incluye 4 lecciones en total.

¿Qué aprenderé en «Ejecución condicional y dependencias entre jobs»?

Controle cuándo se ejecutan los pasos y jobs mediante condiciones if, la palabra clave needs, expresiones y funciones de comprobación de estado en los workflows de GitHub Actions. Practicas CI/CD with GitHub Actions & DevOps Pipelines con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar CI/CD with GitHub Actions & DevOps Pipelines?

No se requiere experiencia previa. CI/CD with GitHub Actions & DevOps Pipelines en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.

¿Cuánto tiempo toma la lección «Ejecución condicional y dependencias entre jobs»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de CI/CD with GitHub Actions & DevOps Pipelines?

Sí. Cada lección de CI/CD with GitHub Actions & DevOps Pipelines incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Compilaciones matriciales para varios entornos
  2. Almacenamiento en caché de dependencias para acelerar la ejecución
  3. Workflows y Actions reutilizables
  4. Ejecución condicional y dependencias entre jobs
← Volver a CI/CD with GitHub Actions & DevOps Pipelines