Documentação

Ganchos

Automações em nível organizacional que reagem a eventos da plataforma com instruções escritas por você.

Um gancho reage a algo que acontece no Coroid. Você escolhe um evento, escreve instruções em linguagem simples e o gancho é executado quando o evento ocorre.

Encontre-os na plataforma, em Automações.

Crie um no Novo trabalho: selecione Automação e depois a opção 'Quando algo acontece'. O Novo trabalho disponibiliza os eventos GitHub e os eventos do Coroid. Veja Automações.

Eventos aos quais você pode reagir

Um gancho é acionado apenas para um evento enviado por algo. O Coroid envia a maioria dos eventos abaixo. Alguns são disparados pelos seus próprios sistemas. Qualquer outro evento é reservado: o editor não o lista e um novo gancho para ele é recusado. Se um gancho foi salvo em um evento reservado, o editor e a lista marcam-no como nunca sendo acionado; ele não é excluído.

Eventos enviados pelo Coroid

CategoriaEventos
TarefaCriado, status alterado, concluído, falhou
AgenteIniciado, concluído, erro
RepositórioCommit enviado, ramificação criada, pull request aberto, atualizado ou mesclado, issue aberta, comentário que menciona Coroid
SprintCriado, planejamento iniciado, iniciado, tarefa adicionada, tarefa removida, revisão iniciada, concluído, cancelado
PlanoFase iniciada, concluída, falhou
AgendamentoExecução iniciada, execução concluída, execução falhou
RelatórioIniciado, concluído, falhou
QualidadeVerificação iniciada, aprovada ou reprovada; resolvida automaticamente
PromoçãoSolicitado, aprovado, rejeitado
LançamentoCriado, candidato alterado, notas alteradas, notas aprovadas, escopo alterado, lista de verificação concluída, portão avaliado, portão substituído, aprovado, publicado, revertido
ImplantaçãoEm fila, em execução, bem-sucedida, falhou, cancelada, atestada manualmente, rollback atestado manualmente, verificação de integridade aprovada, verificação de integridade falhou
SincronizaçãoFonte externa atualizada
Slack e TelegramUma mensagem que corresponde ao filtro da automação

Eventos disparados pelos seus próprios sistemas

CategoriaEventos
AnáliseDependência encontrada, problema de segurança encontrado, análise concluída
Implantação externaIniciada, concluída, falhou

O Coroid não envia esses eventos. Um pipeline de CI, um scanner ou outro sistema seu dispara o gancho pelo seu ID: ele chama POST /api/v1/organizations/hooks/:id/dispatch com a chave de um conta de serviço que possui o hooks:dispatch escopo. O gancho é executado para o evento em que foi salvo. O editor lista esses eventos em "Disparados pelos seus próprios sistemas".

Eventos reservados

Estes ainda não foram enviados ou disparados, portanto o editor não os oferece:

CategoriaEventos
TarefaFase alterada
AgenteIteração, ferramenta chamada
PlanoCriado, fase concluída, revisão final iniciada, revisão final concluída, antes do pull request do plano
AgendamentoCriado, ativado, pausado
SprintPlanejamento concluído, tarefa concluída, escopo alterado
LançamentoPreparado, validado
PromoçãoAntes do pull request da promoção
QualidadeVerificação indisponível; reparo iniciado ou tentado; nova validação iniciada; consenso alcançado

Quando o trabalho começa e termina

Planos, agendamentos, relatórios, verificações de qualidade, promoções e lançamentos enviam um evento quando começam e um evento quando terminam. Um gancho pode reagir a como o trabalho terminou, e um sistema seu pode medir quanto tempo levou.

TrabalhoIniciaTermina
PlanoFase iniciada: o primeiro é enviado quando a execução do plano começaConcluído, falhou
AgendamentoExecução iniciadaExecução concluída, execução falhou
RelatórioIniciadoConcluído, falhou
Verificação de qualidadeVerificação iniciadaAprovada, reprovada, resolvida automaticamente
PromoçãoSolicitadoAprovado, rejeitado
LançamentoCriadoPublicado, revertido

Cada um desses eventos registra o horário em que ocorreu em occurredAt. Um evento que informa como o trabalho terminou também registra quando o trabalho começou em startedAt, e quanto tempo levou em durationMs. Isso startedAt é o occurredAt do evento de início, portanto os dois sempre coincidem. O tempo de trabalho em pausa conta para a duração.

Cada evento é enviado uma vez, quando a alteração é salva. Uma alteração desfeita não gera nenhum evento, e uma nova tentativa também não gera eventos duplicados. Um evento de término é enviado apenas para trabalhos que foram iniciados: uma execução de planejamento simulada não gera eventos, assim como um relatório cancelado antes de começar.

O que cada evento contém, além dos horários:

EventoEnviado quandoCampos
Fase de planejamento iniciadaA execução do plano começa (sua primeira fase) e, posteriormente, sempre que a primeira tarefa de outra fase inicia.planId, plan (id, título), phase (id, sequência, título), firstPhase, executionStartedAt
Planejamento concluído ou com falhaA execução do plano termina. Um plano que falha durante o planejamento não gera eventos.planId, plan, status, executionStartedAt
Execução de agendamento iniciadaUma execução de agendamento começa.scheduleId, runId, schedule (id, nome), run (motivo do disparo, execução pai)
Execução de agendamento concluída ou com falhaA execução termina.Os mesmos campos, status, e tasksCreated ou error
Relatório iniciadoUm relatório começa a ser gerado. Pausar e retomar mantêm o mesmo horário de início.reportId, report (id, tipo, título)
Relatório concluído ou com falhaO relatório é salvo, ou falha ou é cancelado.Os mesmos campos, e tokensUsed, costUsd e hasActionableFindings, ou error
Verificação de qualidade iniciadaUma verificação de qualidade começa.qualityRunId, check (assunto, disparador, versão da política, commit)
Verificação de qualidade aprovada ou com falhaA verificação chega à sua decisão.Os mesmos campos, decision, redoCause, failedExpectationIds
Qualidade não resolvida automaticamenteCoroid para de tentar corrigir o que a verificação encontrou.qualityRunId, workItemType, workItemId, reason
Promoção solicitadaUma promoção é criada.promotionId, laneId, promotion (título, status, ramificações, pull request)
Promoção aprovadaA promoção é mesclada: aprovada no Coroid, mesclada forçadamente, mesclada no provedor ou lançada em uma versão.Os mesmos campos, approval, approvedBy, forceReason
Promoção rejeitadaUm revisor solicita alterações.Os mesmos campos, reason, requestedBy, comment
Versão publicadaA primeira implantação em produção da versão tem sucesso.releaseId, version, commitSha
Versão revertidaUma reversão substitui a versão em um ambiente.releaseId, version, rolledBackToReleaseId

Os eventos sobre o trabalho em um projeto também contêm projectId, portanto um hook limitado a um projeto dispara apenas para esse projeto. Se um hook criou o trabalho, esses eventos contam para a profundidade da cadeia desse hook.

Disparadores e destinos

Toda automação tem uma fonte de disparo, de onde seus eventos provêm, e um destino, que decide o que acontece quando um evento é disparado. Dois dos destinos transformam um evento em trabalho.

Fonte de disparoEventos
Evento de fluxo de trabalhoEventos no Coroid, conforme na tabela acima
GitHubPull request aberta, atualizada ou mesclada; issue aberta; um comentário que menciona Coroid
SlackUma mensagem que corresponde ao filtro da automação
TelegramUma mensagem que corresponde ao filtro da automação, como uma que começa com /coroid
JiraUma nova issue
DestinoO que acontece
HookExecuta suas instruções, somente leitura, conforme descrito nesta página.
Qualificar trabalhoArquiva o evento como uma solicitação. Depois que a Qualificação for aprovada, Coroid cria o trabalho.
Coroid CheckDescontinuado. A Revisão Coroid de cada pull request é definida em Controle de Qualidade; as automações existentes foram pausadas

Os eventos GitHub precisam do App GitHub. Um comentário que menciona Coroid conta apenas quando seu autor tem acesso de gravação ao repositório. Veja GitHub.

Uma tarefa de Qualificar trabalho começa por conta própria apenas quando o autor do evento é confiável: o autor de um GitHub pull request, issue ou comentário que tenha acesso de gravação ao repositório. Autores do Slack, Telegram e Jira nunca são confiáveis, portanto suas tarefas aguardam alguém iniciá-las. Veja Quando o trabalho começa.

Novos problemas do Jira chegam ao Coroid apenas por meio do webhook do Jira. Ele aceita apenas entregas assinadas com o segredo do webhook configurado para Coroid, somente para novos problemas e apenas quando a chave do projeto do Jira corresponder a um projeto do Coroid. No coroid.ai, o webhook do Jira ainda não foi configurado, portanto o gatilho do Jira não recebe eventos; importe os problemas do Jira em vez disso. Onde o webhook está configurado, um novo problema é encaminhado às automações do gatilho do Jira, como a origem da solicitação do Jira no Controle de Qualidade, que registra problemas dos tipos e prioridades que você escolher para Qualificação. Sem automação no gatilho, um novo problema não gera nenhum registro. O trabalho a partir do Jira nunca começa sozinho. Veja Rastreadores de problemas.

Somente leitura por padrão

Os hooks analisam e relatam. Eles podem criar tarefas de acompanhamento; não modificam seu código diretamente.

Esse padrão é o que os torna seguros para adoção. Uma automação que edita código em resposta a um evento age no momento menos provável de ser supervisionada. Um hook que abre uma tarefa produz o mesmo resultado pelo caminho normal — especificação, planejamento, verificação, revisão, pull request.

  • AgendarHorário
  • Automação de eventosAlgo acontece.

Uma tarefa comum

Especificação, plano, construção, verificação, revisão. Usa um slot de agente; atribua-lhe prioridade menor.

P2P3

Um pull request

Ele não pode fazer merge nem commit na sua branch base.

Você aprova

A automação difere apenas no seu gatilho. O que ela abre é uma tarefa comum no caminho normal, portanto usa capacidade real e resulta em um pull request que você aprova.

Escrevendo boas instruções

As instruções de hook são processadas por um modelo, então parecem instruções para um colega em vez de código. O padrão de qualidade é o mesmo de uma especificação: indique o que observar, o que importa e o que fazer.

Seja específico sobre o caso de "não fazer nada". Sem isso, um hook encontrará algo para dizer toda vez que for executado, e hooks que sempre disparam são ignorados pelas pessoas.

Proteções

Existem três proteções porque a automação baseada em eventos falha de maneiras previsíveis:

Limites de taxa. Por minuto, por hora e por dia, configuráveis por hook. Um hook em um evento de alta frequência pode disparar centenas de vezes durante uma fusão movimentada.

Profundidade da cadeia. Os hooks podem disparar eventos que acionam outros hooks. Uma profundidade máxima da cadeia evita que isso se torne um loop.

Permissões de ferramenta. O que um hook pode acessar é controlado — o acesso somente de leitura, chamadas MCP e criação de tarefas são gerenciados separadamente.

Permissões

Apenas proprietários e administradores podem criar, alterar, testar ou excluir um hook; todos os membros podem ver os hooks e seu histórico de execução. Como um hook opera com alcance no nível da organização, essa assimetria é intencional.

Monitorando-os

A página de cada hook na fábrica lista suas execuções e o que fez nos últimos 30 dias: execuções, falhas e custo. Cada execução de automação também está em Configurações → Atividade, filtrada por Automação. Verifique suas execuções após habilitar um novo hook — o modo de falha não é um erro, mas sim o disparo constante sem gerar resultados úteis.

Hooks e agendamentos

MecanismoDisparado por
HookUm evento da plataforma
AgendamentoHorário

Ambos são automações, listadas juntas na fábrica. Veja Automações.