Serverless Github webhook listener
This service will listen to github webhooks fired by a given repository.
Use Cases
- Custom github notifications
- Automatically tagging github issues
- Pinging slack on new Pull requests
- Welcoming new stargazers
- etc.
How it works
┌───────────────┐ ┌───────────┐│ │ │ ││ Github repo │ │ Github ││ activity │────Trigger───▶│ Webhook ││ │ │ │└───────────────┘ └───────────┘ │ ┌────POST────────┘ │ ┌──────────▼─────────┐ │ ┌────────────────┐ │ │ │ API Gateway │ │ │ │ Endpoint │ │ │ └────────────────┘ │ └─────────┬──────────┘ │ │ ┌──────────▼──────────┐ │ ┌────────────────┐ │ │ │ │ │ │ │ Lambda │ │ │ │ Function │ │ │ │ │ │ │ └────────────────┘ │ └─────────────────────┘ │ │ ▼ ┌────────────────────┐ │ │ │ Do stuff │ │ │ └────────────────────┘
Setup
- Set your webhook secret token in
serverless.yml
by replacingREPLACE-WITH-YOUR-SECRET-HERE
in the environment variablesGITHUB_WEBHOOK_SECRET
.
provider: name: aws runtime: nodejs12.x environment: GITHUB_WEBHOOK_SECRET: REPLACE-WITH-YOUR-SECRET-HERE
- Deploy the service
serverless deploy
After the deploy has finished you should see something like:
Service Informationservice: github-webhook-listenerstage: devregion: us-east-1api keys: Noneendpoints: POST - https://abcdefg.execute-api.us-east-1.amazonaws.com/dev/webhookfunctions: github-webhook-.....github-webhook-listener-dev-githubWebhookListener
- Configure your webhook in your github repository settings. Setting up a Webhook
(1.) Plugin your API POST endpoint. (https://abcdefg.execute-api.us-east-1.amazonaws.com/dev/webhook
in this example). Run sls info
to grab your endpoint if you don't have it handy.
(2.) Plugin your secret from GITHUB_WEBHOOK_SECRET
environment variable
(3.) Choose the types of events you want the github webhook to fire on
- Manually trigger/test the webhook from settings or do something in your github repo to trigger a webhook.
You can tail the logs of the lambda function with the below command to see it running.
serverless logs -f githubWebhookListener -t
You should see the event from github in the lambda functions logs.
- Use your imagination and do whatever you want with your new github webhook listener! 🎉
Let us know if you come up with a cool use case for this service =)