Webhooks-publisher is a Kubernetes deployment used to receive Github
webhooks. It changes the format and pushes it inside a Pub/Sub queue so
that they can be later processed by the mungebot.
Deploy
Deploying, updating configmap:
# Create container and push it to google-containers
make push
# Make sure you update the config version
kubectl create configmap webhook-config-v10 --from-file=config.yaml
# Edit deployment with new container name and/or config version
kubectl apply -f deployment.yaml
How to use
config.yaml
contains the configuration:
project
is the Google Cloud project-id that has the PubSub queue (see permissions below)
- Each item in
paths
is the path it listens to webhooks and maps to the Github
secret
and the PubSub topic
where it should publish
If you want to listen to a repository:
- Add the path for the new webhook:
/my-repo
- Give it the github secret you configured for that repo/webhook (https://developer.github.com/webhooks/creating/#setting-up-a-webhook)
- Create a new
topic
in project
to receive the events, and put it in the config file
- Create as many subscription for the topic as you need, and consume messages
from there (refer to Google Cloud PubSub documentation if needed)
The format of the messages pushed in the queue is simple. The signature has
already been validated so you don't need to do that again.
{
"type": "For example: `push`, as received from X-Github-Event header.",
"payload": "Complete body/event message as sent by Github. This is JSON in a string."
}
Permissions
In order to push/pull events into/from the PubSub, you need a "Service Account"
key. It needs Project Editor role.
It is set-up for the publisher as a secret key named webhooks-publisher-secret
:
kubectl create secret generic webhooks-publisher-secret --from-file=credential.json=your-service-account.json