Observação: no momento, não há suporte para os executores hospedados no GitHub no GitHub Enterprise Server. Você pode ver mais informações sobre o suporte futuro planejado no GitHub public roadmap.
Visão geral
Observação: quando a simultaneidade é especificada no nível do trabalho, a ordem não é garantida para execuções ou trabalhos que são colocados na fila em intervalos de cinco minutos com relação um ao outro.
Você pode usar jobs.<job_id>.concurrency
para garantir que apenas um trabalho ou fluxo de trabalho que usa o mesmo grupo de simultaneidade seja executado por vez. Um grupo de concorrência pode ser qualquer string ou expressão. A expressão pode usar qualquer contexto, exceto o contexto secrets
. Para obter mais informações sobre expressões, confira "Expressões".
Especifique também concurrency
no nível do fluxo de trabalho. Para obter mais informações, confira concurrency
.
Quando um trabalho ou um fluxo de trabalho simultâneo é colocado na fila, se outro trabalho ou fluxo de trabalho que usa o mesmo grupo de simultaneidade no repositório estiver em andamento, o trabalho ou o fluxo de trabalho na fila ficará pending
. Qualquer trabalho ou fluxo de trabalho anterior pendente no grupo de concorrência será cancelado. Para também cancelar qualquer trabalho ou fluxo de trabalho em execução no mesmo grupo de simultaneidade, especifique cancel-in-progress: true
.
Exemplos: Como usar a concorrência e o comportamento padrão
concurrency: staging_environment
concurrency: ci-${{ github.ref }}
Exemplo: Usar a concorrência para cancelar qualquer trabalho em andamento ou em execução
concurrency:
group: ${{ github.ref }}
cancel-in-progress: true
Exemplo: Usando um valor para segunda opção
Se você construir o nome do grupo com uma propriedade que só é definida para eventos específicos, você pode usar um valor de segunda opção. Por exemplo, github.head_ref
só é definido em eventos pull_request
. Se o fluxo de trabalho responder a outros eventos além de eventos pull_request
, você precisará fornecer um fallback para evitar um erro de sintaxe. O grupo de simultaneidade a seguir cancela os trabalhos em andamento ou é executado somente em eventos pull_request
. Se github.head_ref
for indefinido, o grupo de simultaneidade fará fallback para a ID de execução, que tem a garantia de ser exclusiva e definida para a execução.
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
Exemplo: Cancele somente trabalhos em andamento ou execuções no fluxo de trabalho atual
Se você tiver vários fluxos de trabalho no mesmo repositório, os nomes dos grupos de concorrência devem ser únicos em todos os fluxos de trabalho para evitar o cancelamento de trabalhos em andamento ou de executores a partir de outros fluxos de trabalho. Caso contrário, qualquer trabalho em andamento ou pendente será cancelado, independentemente do fluxo de trabalho.
Para cancelar apenas as execuções em andamento do mesmo fluxo de trabalho, use a propriedade github.workflow
para criar o grupo de simultaneidade:
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true