O Que É um Concurrency Group no GitHub Actions?
Um concurrency group garante que apenas uma execução por chave esteja ativa por vez, cancelando ou enfileirando as demais.
Pushes rápidos ou deploys repetidos podem empilhar execuções sobrepostas. A chave concurrency agrupa execuções sob um nome compartilhado para que o GitHub mantenha apenas uma em andamento, prevenindo corridas e minutos desperdiçados.
O que é
Um grupo lógico identificado por uma expressão concurrency.group. O GitHub permite apenas uma execução em andamento ou pendente por grupo por vez.
concurrency:
group: deploy-${{ github.ref }}
cancel-in-progress: trueComo funciona
Quando uma nova execução entra em um grupo que já tem uma em andamento, o GitHub enfileira a nova execução ou, se cancel-in-progress: true, cancela a execução mais antiga e inicia a mais nova.
Padrões comuns
- Cancelar builds de PR obsoletos quando novos commits chegam.
- Serializar deploys por environment ou branch.
- Impedir que dois releases entrem em corrida na mesma ref.
Por que importa
O controle de concorrência previne deploys conflitantes e economiza minutos de runner ao cancelar execuções de CI desatualizadas. É um bloco pequeno com benefícios desproporcionais de confiabilidade e custo.
Conceitos relacionados
Concurrency groups usam expressões e contextos para construir sua chave e complementam deployments e environments.
Principais conclusões
- Um concurrency group mantém uma execução ativa por chave.
cancel-in-progress: trueencerra a execução mais antiga.- Ele previne corridas de deploy e economiza minutos.