Bind GitHub WebHooks to actions
Python
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
examples
hookit
.gitignore
LICENSE.md
README.md
setup.py

README.md

Bind GitHub WebHooks to actions

Usage:
  hookit [--scripts=<dir>] [--listen=<address>] [--port=<port>]

Options:
  -v --version        Show version
  --scripts=<dir>     Where to look for hook scripts [default: .]
  --listen=<address>  Server address to listen on [default: 0.0.0.0]
  --port=<port>       Server port to listen on [default: 8000]

Execute scripts in any language

On recieving a webhook the server will try to execute a script located at .../<owner>/<repository>/<branch>, hookit will pass some arguments with useful data. An example script may look like:

#!/usr/bin/env python

import argparse
from subprocess import call

parser = argparse.ArgumentParser(description='Hook some hooks.')
parser.add_argument('--repository')
parser.add_argument('--branch')
args = parser.parse_args()

message = 'You have changes in the %s branch of %s' % (args.branch, args.repository)
call(['/usr/bin/say', message])

Catch all events

It's also possible to listen for all push events in an organisation or repository. Just place your hook script at the level you are interested of (eg. .../<owner>/<repository> or .../<owner>).

Script arguments

Here is a complete list of all arguments passed to scripts:

.../tiwilliam/hookit
    --owner=tiwilliam
    --branch=master
    --repository=hookit
    --commit=a3a707700d845919178c72cd266ffc28d882c380

Installation

This package is availiable on Python Package Index

pip install hookit

Security

The server will only accept requests from GitHub's trusted servers and run scripts from an jailed directory.

GitHub's trusted servers will be updated on start using their meta endpoint.