AWS | Github Webhook Listener

This service will listen to github webhooks fired by a given repository.

user  

Adam Bergman

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

  1. Set your webhook secret token in serverless.yml by replacing REPLACE-WITH-YOUR-SECRET-HERE in the environment variables GITHUB_WEBHOOK_SECRET.

    provider:
      name: aws
      runtime: nodejs4.3
      environment:
        GITHUB_WEBHOOK_SECRET: REPLACE-WITH-YOUR-SECRET-HERE
  2. Deploy the service

    serverless deploy

    After the deploy has finished you should see something like:

    Service Information
    service: github-webhook-listener
    stage: dev
    region: us-east-1
    api keys:
      None
    endpoints:
      POST - https://abcdefg.execute-api.us-east-1.amazonaws.com/dev/webhook
    functions:
      github-webhook-.....github-webhook-listener-dev-githubWebhookListener
  3. 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

    webhook-steps

  1. 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.

  2. 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 =)

Latest commit b2f54ec on Sep 24, 2017

New to serverless?

To get started, pop open your terminal & run:

npm install serverless -g

Made with love in San Francisco + Atlanta, Austria, Germany, Pakistan, Poland, Nebraska & Thailand

Serverless, Inc. © 2018

Join our monthly newsletter to get the latest Serverless news, updates and happenings.