Skip to content
Latchkey

O Que É uma Job Dependency? Ordenando Jobs em um Pipeline

Uma job dependency diz ao pipeline que um job deve concluir (geralmente com sucesso) antes que outro possa começar.

Jobs em um pipeline frequentemente executam em paralelo por padrão, mas alguns têm uma ordem: você precisa fazer o build antes de testar, e testar antes de fazer deploy. Uma job dependency expressa essa ordem. Ao declarar quais jobs dependem de quais, você transforma uma lista plana de jobs em um grafo estruturado que o pipeline pode agendar corretamente.

Como dependências ordenam o trabalho

Quando o job B depende do job A, o pipeline segura B até A terminar com sucesso. Jobs sem dependência entre si estão livres para executar ao mesmo tempo. O conjunto de dependências define toda a ordem de execução.

Dependências criam um grafo

Empilhe dependências suficientes e você obtém um grafo acíclico direcionado: nós são jobs, arestas são dependências. O pipeline executa cada job assim que todos os seus pré-requisitos estão prontos, maximizando o paralelismo seguro.

Um exemplo rápido

No GitHub Actions, needs: [build] em um job de test faz com que ele espere pelo build. Um job de deploy com needs: [test] espera pelo test. Dois jobs de test independentes sem needs entre si executam em paralelo.

Passando dados por uma dependency

  • Outputs: um job expõe valores que seus dependentes leem.
  • Artifacts: um job faz upload de arquivos que um job posterior baixa.
  • A aresta de dependência é o canal para ambos.

Dependências e velocidade

Cada dependência remove uma chance de executar em paralelo, então uma longa cadeia de dependências é um pipeline longo. Declarar apenas as dependências que você realmente precisa mantém o grafo largo e rápido.

Principais conclusões

  • Uma job dependency força um job a terminar antes de outro começar.
  • Dependências formam um grafo que define a ordem segura de execução paralela.
  • Elas também carregam dados adiante via outputs de job e artifacts.

Guias relacionados