composer require kurozumi/github-webhook-bundle
The configuration:
# .env
WEBHOOK_GITHUB_SECRET=1z9Y48dbgqxZi...
Create a route:
framework:
webhook:
routing:
github:
service: webhook.request_parser.github
secret: '%env(WEBHOOK_GITHUB_SECRET)%'
And a consume:
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\RemoteEvent\Attribute\AsRemoteEventConsumer;
use Symfony\Component\RemoteEvent\Consumer\ConsumerInterface;
use Symfony\Component\RemoteEvent\RemoteEvent;
#[AsRemoteEventConsumer(name: 'github')]
final class GithubConsumer implements ConsumerInterface
{
public function __construct(
private EventDispatcherInterface $eventDispatcher,
) {
}
public function consume(RemoteEvent $event): void
{
$this->eventDispatcher->dispatch($event, $event->getName());
}
}
use Symfony\Component\EventDispatcher\EventSubscriberInterface
use Symfony\Component\RemoteEvent\RemoteEvent;
class GithubWebhookListener implements EventSubscriberInterface
{
public static function getSubscribedEvents(): array
{
return [
'pull_request' => 'onPullRequest',
]
}
public function onPullRequest(RemoteEvent $event): void
{
$payload = $event->getPayload();
// do something
}
}
https://docs.github.com/en/webhooks/webhook-events-and-payloads