django-github-hook icon indicating copy to clipboard operation
django-github-hook copied to clipboard

Configurable post-receive webhook handler, implemented as a Django app

github_hook

Simple continuous integration for Django developers, taking the form of a Django app for managing GitHub (or BitBucket) post receive hooks.

.. image:: https://img.shields.io/travis/sheppard/django-github-hook.svg :target: https://travis-ci.org/sheppard/django-github-hook .. image:: https://img.shields.io/pypi/v/django-github-hook.svg :target: https://pypi.python.org/pypi/django-github-hook

Tested on Python 2.7, 3.4 and 3.5, with Django 1.8 and 1.9.

Usage

  • pip install django-github-hook

  • Add github_hook to INSTALLED_APPS in your settings.py

  • ./manage.py migrate (or ./manage.py syncdb)

  • Add e.g. url(r'^hook/', include('github_hook.urls')) to your urls.py urlpatterns

  • Log into the Django admin console

  • Configure your hook with the folowing fields:

    • Name: Hook identifier
    • User: Repo username
    • Repo: Repo name
    • Path: Absolute path to script to execute
  • Go to your repo's "Service Hooks" settings on GitHub (or BitBucket) and add a WebHook/POST URL:

    • http[s]://[yourwebsite]/hook
    • The repo information will be read from the JSON payload
  • Alternatively, you can specify a specific hook by name:

    • http[s]://[yourwebsite]/hook/name

Examples

The following snippet show how to connect the webhook to a method using django's signal mechanism. Note that path must be set to "send-signal" in the hook object instead of an absolute path to a script.

.. code-block:: python

from github_hook.models import hook_signal

def processWebhook(sender, **kwargs):
	for key, value in kwargs.iteritems():
		print key, value

hook_signal.connect(processWebhook)