Visão geral
Uma execução de fluxo de trabalho é composta por um ou mais jobs
, que são executados em paralelo por padrão. Para executar trabalhos sequencialmente, você pode definir dependências em outros trabalhos usando a palavra-chave jobs.<job_id>.needs
.
Cada trabalho é executado em um ambiente do executor especificado por runs-on
.
Você pode executar quantos trabalhos desejar, desde que esteja dentro dos limites de uso do fluxo de trabalho. Para saber mais, confira "Limites de uso, cobrança e administração" para executores hospedados no GitHub e "Sobre executores auto-hospedados" para limites de uso do executor auto-hospedado.
Se precisar encontrar o identificador exclusivo de uma tarefa em execução em um fluxo de trabalho, você poderá usar a API de GitHub. Para obter mais informações, confira "Pontos de extremidade da API REST do GitHub Actions".
Configurando um ID para um trabalho
Use jobs.<job_id>
para fornecer ao seu trabalho um identificador exclusivo. A chave job_id
é uma cadeia de caracteres, e o valor dela é um mapa dos dados de configuração do trabalho. Você precisa substituir <job_id>
por uma cadeia de caracteres exclusiva para o objeto jobs
. A <job_id>
precisa começar com uma letra ou _
e conter apenas caracteres alfanuméricos, -
ou _
.
Exemplo: Criando trabalhos
Neste exemplo, dois trabalhos foram criados, e os valores de job_id
são my_first_job
e my_second_job
.
jobs:
my_first_job:
name: My first job
my_second_job:
name: My second job
Definir um nome para um trabalho
Use jobs.<job_id>.name
para definir um nome para o trabalho, que é exibido na interface do usuário do GitHub.
Definindo trabalhos dos pré-requisitos
Use jobs.<job_id>.needs
para identificar todos os trabalhos que precisam ser concluídos com êxito antes que este trabalho seja executado. Esse código pode ser uma string ou array de strings. Se houver falha em um trabalho ou ele for ignorado, todos os trabalhos que dependem dele serão ignorados, a menos que os trabalhos usem uma expressão condicional que faça o trabalho continuar. Se uma execução contiver uma série de trabalhos que precisem uns dos outros, uma falha ou omissão se aplicará a todos os trabalhos na cadeia de dependência do ponto de falha ou omissão em diante. Se quiser que um trabalho seja executado mesmo que um trabalho do qual ele dependa não seja bem-sucedido, use a expressão condicional always()
em jobs.<job_id>.if
.
Exemplo: Exigindo trabalhos dependentes com sucesso
jobs:
job1:
job2:
needs: job1
job3:
needs: [job1, job2]
Neste exemplo, job1
precisa ser concluído com êxito antes que job2
seja iniciado, e job3
aguarda a conclusão de job1
e de job2
.
Os trabalhos neste exemplo são executados sequencialmente:
job1
job2
job3
Exemplo: Não exigindo trabalhos dependentes com sucesso
jobs:
job1:
job2:
needs: job1
job3:
if: ${{ always() }}
needs: [job1, job2]
Neste exemplo, job3
usa a expressão condicional always()
para que ela sempre seja executada após a conclusão de job1
e de job2
, independentemente de elas terem sido bem-sucedidas. Para obter mais informações, confira "Avaliar expressões em fluxos de trabalho e ações".