Package Exports
- hubot-github-webhook-listener
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (hubot-github-webhook-listener) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
hubot-github-webhook-listener
A Hubot script to that makes it easy to consume Github Webhooks.
Installation
From your hubot folder:
npm install --save hub-github-webhook-listener
Then, in your external-scripts.json
file, add: "hubot-github-webhook-listener"
to the list.
Create a new webhook for your myuser/myrepo
repository at:
https://github.com/myuser/myrepo/settings/hooks/new
Set the webhook url to: <HUBOT_URL>:<PORT>/hubot/github-repo-listener
For example, if your hubot lives at myhubot.herokuapp.com, then you will set the webhook URL to: http://myhubot.herokuapp.com/hubot/github-repo-listener
Usage
On every incoming webhook message, a hubot event is emitted as follows
eventBody =
eventType : req.headers["x-github-event"]
signature : req.headers["X-Hub-Signature"]
deliveryId : req.headers["X-Github-Delivery"]
payload : req.body
query : querystring.parse(url.parse(req.url).query)
robot.emit "github-repo-event", eventBody
For details on these fields, see the Github Webhook documentation.
You can consume it like so from one of your scripts:
@robot.on "github-repo-event", (repo_event) =>
githubPayload = repo_event.payload
switch(repo_event.eventType)
when "issue_comment"
...
NOTE: This script does not emit anything in chat. It is just a background task that makes consuming Github webhooks easier for other scripts.
For another example, see our Hubot-Github adapter that gives you a hubot in your Github issue comments.
Motivation
I was using hubot-github-repo-event-notifier, but I needed something more generic to power our hubot-github adapter. So, I gutted it, and this script was born.
Local Testing
For easy local testing, I highly recommend ngrok: https://ngrok.com/
- Install ngrok
- run ngrok:
ngrok 8080
. It will show you a public URL like:Forwarding https://7a008da9.ngrok.com -> 127.0.0.1:8080
- Put that URL in as your Github webhook:
https://7a008da9.ngrok.com/hubot/github-repo-listener
- Run hubot locally:
HUBOT_GITHUB_TOKEN=some_log_guid bin/hubot -a github --name Hubot
- Fire off a github event by interacting with your repo. Comment on an issue or a PR for example.
- Navigate to
http://127.0.0.1:4040/
There you can see all webhooks posted to your local machine, and can replay them as many times as you wish.
Copyright
Copyright © YouNeedABudget.com, LLC. (Github: YNAB)
Author
Taylor Brown, aka Taytay
License
MIT License; see LICENSE for further details.