a simple github post-receive hook


This is a very simple, easy to use evented web hook API for GitHub or GitLab. A command-line executable is also available.

npm install githubhook
var githubhook = require('githubhook');
var github = githubhook({/* options */});
github.on('*', function (eventreporefdata) {
github.on('event', function (reporefdata) {
github.on('event:reponame', function (refdata) {
github.on('event:reponame:ref', function (data) {
github.on('reponame', function (eventrefdata) {
github.on('reponame:ref', function (eventdata) {
// GitLab system hooks 
github.on('*', function (eventtypedata) {
github.on('type', function (eventdata) {
// if you'd like to programmatically stop listening 
// github.stop(); 

Where 'event' is the event name to listen to (sent by GitHub or Gitlab, typically 'push' or 'system'), 'reponame' is the name of your repo (this one is node-github-hook), 'ref' is the git reference (such as ref/heads/master), and 'type' is the type of system hook.

Configure a WebHook URL to whereever the server is listening, with a path of /github/callback and you're done!

Available options are:

  • host: the host to listen on, defaults to ''
  • port: the port to listen on, defaults to 3420
  • path: the path for the GitHub callback, defaults to '/github/callback'
  • secret: if specified, you must use the same secret in your webhook configuration in GitHub. if a secret is specified, but one is not configured in GitHub, the hook will fail. if a secret is not specified, but one is configured in GitHub, the signature will not be validated and will be assumed to be correct. consider yourself warned.
  • logger: an optional instance of a logger that supports the "log" and "error" methods and one parameter for data (like console), default is console.

You can use the command-line client to execute a shell script when a particular event occurs.

Install it globally:

$ npm install -g githubhook

Then you can run githubhook:

$ githubhook --help
  githubhook [--host=HOST] [--port=PORT] [--callback=URL_PATH] [--secret=SECRET] [--verbose] <trigger> <script>
  --host=HOST             Address to listen on
  --port=PORT             Port to listen on
  --callback=URL_PATH     The callback URL path
  --secret=SECRET         The secret you use the in the GitHub webhook config
  --verbose               Log to console
  --version               Output the version number
  -h, --help              Output usage information

Default values for options are same as for the API (see above).

Example usage:

$ githubhook push:node-github-hook ./