Skip to content
Latchkey

O Que É um Webhook no CI?

Um webhook é uma requisição HTTP que um sistema envia quando um evento acontece - como um push - para que outro sistema possa reagir imediatamente, como iniciar um pipeline de CI.

Fazer polling em busca de alterações é ineficiente e lento. Os webhooks invertem isso: em vez de o CI perguntar "tem algo novo?", o sistema de origem envia um evento no momento em que ele ocorre. Esse modelo orientado a eventos é como um git push aciona instantaneamente um build.

Como um webhook funciona

Você registra uma URL no sistema de origem. Quando o evento escolhido dispara, o sistema envia um HTTP POST para essa URL com um payload descrevendo o que aconteceu. O receptor faz o parsing e age - por exemplo, enfileirando uma execução de pipeline.

Usos comuns no CI

  • Acionar um build ou deploy em push, pull request ou tag.
  • Notificar o chat ou uma ferramenta de incidentes quando uma execução falha.
  • Acordar uma plataforma de runner gerenciado para provisionar um runner sob demanda.

Um pequeno exemplo

Um evento de push faz POST de um payload JSON (repo, branch, commit) para o seu endpoint. O handler o valida e então enfileira um pipeline para aquele commit - transformando um git push em um build em execução em segundos, sem polling envolvido.

Protegendo webhooks

Um endpoint de webhook é publicamente acessível, então verifique cada requisição: cheque uma assinatura computada com um segredo compartilhado e ignore payloads que não coincidam. Sem verificação, qualquer um poderia forjar eventos.

Lide com as realidades da entrega

Os webhooks podem chegar fora de ordem, ser entregues mais de uma vez ou ser reenviados após um timeout. Torne os handlers idempotentes e responda rapidamente (faça o trabalho pesado de forma assíncrona) para que um handler lento não cause entregas duplicadas.

Principais conclusões

  • Um webhook é um callback HTTP orientado a eventos, não um poll.
  • No CI, ele aciona builds, envia notificações e provisiona runners.
  • Verifique assinaturas e torne os handlers idempotentes contra retries.

Guias relacionados