Welcome to the events-backend-module-github
backend module!
This package is a module for the events-backend
backend plugin
and extends the event system with an GithubEventRouter
.
The event router will subscribe to the topic github
and route the events to more concrete topics based on the value
of the provided x-github-event
metadata field.
Examples:
x-github-event |
topic |
---|---|
pull_request |
github.pull_request |
push |
github.push |
repository |
github.repository |
Please find all possible webhook event types at the official documentation.
# From your Backstage root directory
yarn --cwd packages/backend add @backstage/plugin-events-backend-module-github
// packages/backend/src/index.ts
import { eventsModuleGithubEventRouter } from '@backstage/plugin-events-backend-module-github/alpha';
// ...
backend.add(eventsModuleGithubEventRouter);
// packages/backend/src/plugins/events.ts
const eventRouter = new GithubEventRouter({ events: env.events });
await eventRouter.subscribe();
// packages/backend/src/index.ts
import { eventsModuleGithubWebhook } from '@backstage/plugin-events-backend-module-github/alpha';
// ...
backend.add(eventsModuleGithubWebhook);
Add the signature validator for the topic github
:
// packages/backend/src/plugins/events.ts
+ import { createGithubSignatureValidator } from '@backstage/plugin-events-backend-module-github';
// [...]
const http = HttpPostIngressEventPublisher.fromConfig({
config: env.config,
events: env.events,
ingresses: {
+ github: {
+ validator: createGithubSignatureValidator(env.config),
+ },
},
logger: env.logger,
});
events:
modules:
github:
webhookSecret: your-secret-token
Configuration at GitHub: https://docs.github.com/en/developers/webhooks-and-events/webhooks/securing-your-webhooks