needs: 가 그리는 DAG
각 job 은 needs: 로 0 개 이상의 upstream job 선언. GitHub 가 이걸로 DAG 만들고 위상 순서로 job 실행. 사이 경로 없는 job 들은 병렬.
흔한 모양:
- 선형 — A → B → C. 각각 이전 거 대기.
- Fan-out, fan-in — A → [B, C, D] → E. B/C/D 가 A 다음 병렬, 그 다음 E 가 셋 다 대기.
- 다이아몬드 — A → [B, C] → D. build-then-(test, lint)-then-deploy 에 흔함.
- 분리된 체인 — 같은 workflow 에 사는 독립 pipeline.
실패 전파
기본적으로 needs: 중 하나가 실패하거나 취소되면 그 job 은 skip. 정리 / 알림 job 이 어쨌든 돌아야 하면 if: always() 나 if: failure() 로 override.