← Integrações GitHub
PHP
Webhook do GitHub com Laravel
Valide o corpo bruto antes de transformar o payload e envie o trabalho pesado para a fila.
Exemplo de código
Endpoint de webhook
Exemplos de código, nomes de cabeçalhos, nomes de eventos e assinaturas permanecem literais nos dois idiomas.
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
Route::post('/webhooks/github', function (Request $request) {
$body = $request->getContent();
$sent = (string) $request->header('X-Hub-Signature-256');
$expected = 'sha256='.hash_hmac('sha256', $body, config('services.github.webhook_secret'));
abort_unless(hash_equals($expected, $sent), 401);
ProcessGithubWebhook::dispatch(
$request->header('X-GitHub-Delivery'),
$request->header('X-GitHub-Event'),
json_decode($body, true, flags: JSON_THROW_ON_ERROR),
);
return response()->noContent();
});
Passos de configuração
Valide a primeira delivery
Passos de configuração 1
Crie um workspace no DevLog e copie o endpoint e o Secret.
Passos de configuração 2
Configure o mesmo Secret no GitHub e na variável segura da aplicação.
Passos de configuração 3
Envie um ping e confirme assinatura, Delivery ID e payload no inbox.