Saltar al contenido
Guía9 min

needs e if en GitHub Actions: deploy no corre si test falló

jobs.<id>.needs ordena jobs. if: success() es el default; if: always() corre aunque el previo falle (logs). Un agente que pone deploy sin needs o con always() en prod publica basura. Distinct de matrix. Docs GitHub workflow syntax needs + if.

Por · Reportar un error

Continúa con un curso práctico

Jobs en paralelo no esperan. needs: [lint, test] hace que deploy arranque después y, por default, solo si lint y test pasaron (success()).

if: always() en deploy es el bug clásico: el agent “quiere el artifact aunque falle” y publica a prod. always() es para upload de logs.

No es strategy.matrix (expande celdas). El curso instalar un agente no cubre needs. gh pr no ordena jobs.

Receta

test:
  runs-on: ubuntu-latest
  steps:
    - run: pnpm test

deploy:
  needs: test
  if: success()
  runs-on: ubuntu-latest
  steps:
    - run: echo deploy

logs:
  needs: test
  if: always()
  runs-on: ubuntu-latest
  steps:
    - uses: actions/upload-artifact@v4
      with:
        name: logs
        path: logs/

if: cancelled() y failure() existen. No inventes if: failed.

needs: test antes de deploy

Qué no hacer

  • Tres jobs sin needs y un “espero que GitHub los serialice”.
  • needs circular. YAML inválido.
  • if: always() + Environment production.

needs de una matrix espera todas las celdas.

Receta AGENTS.md

Deploy jobs: needs: test and if: success() (or omit if — default).
if: always() only for logs/artifacts, never production deploy.
Do not skip needs to "save minutes".

always() solo en job de logs

FAQ

¿outputs? needs.test.outputs.foo solo si el job test definió outputs.

¿skipped? Un job skipped no es success. Encadena con cuidado (!cancelled()).

¿dos needs? Lista: needs: [a, b]. Ambos deben pasar.

Verificado 2026-09-03 contra GitHub workflow syntax jobs.<job_id>.needs y status check functions (success, always, failure).

De la guía a la práctica

Ruta Pi.dev: instala tu agente de coding

Lleva tus convenciones de trabajo a Pi.dev: instalación, instrucciones, sesiones y operación segura.

Ver el curso gratis

Contenido gratis, sin registro. Los servicios externos pueden tener costos.

Avisos cuando actualicemos cursos y guías

Recibe actualizaciones por correo. Es opcional: puedes seguir leyendo y abrir cualquier curso sin suscribirte.

Al suscribirte, solicitas avisos editoriales. Consulta la política de privacidad. Puedes pedir la baja en contacto.