Simple webhook service to update and deploy sites and do other maintenance
Python
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
example_config
.gitignore
CHANGELOG.md
LICENSE
README.rst
__init__.py
requirements.in
requirements.txt
setup.py
webhaak.py
wsgi.py

README.rst

webhaak

PyPI version PyPI downloads PyPI license Code Health

webhaak is a simple webhook service to update and deploy sites and do other maintenance without having to ssh to a node.

Installation

From PyPI

Assuming you already are inside a virtualenv:

pip install webhaak

From Git

Create a new virtualenv (if you are not already in one) and install the necessary packages:

git clone https://github.com/aquatix/webhaak.git
cd webhaak
mkvirtualenv webhaak # or whatever project you are working on
pip install -r requirements.txt

Usage

Copy settings.py from example_config to the parent directory and configure to your needs. Create a yaml file with the projects to serve (see next section) and refer to this file from the settings.py.

Run webhaak as a service under nginx or apache and call the appropriate url's when wanted (e.g., on push to repository).

Url's are of the form https://hook.example.com/app/<appkey>/<triggerkey>

Example configuration

See the example hook settings for syntax of how to configure repositories, commands and directories.

Call webhaak on its endpoint /getappkey to generate a random new key for usage in the projects yaml file (so, for example https://hook.example.com/getappkey)

By default, webhaak clones projects in a directory under its REPOS_CACHE_DIR directory, but there is support for a per-repo parent dir settings with repoparent.

This means that webhaak then doesn't clone this repo into its default cache dir, but in a subdirectory of the directory configured in repoparent, so <repoparent>/reponame (e.g., /srv/customparent/myproject).

Server configuration

What's new?

See the Changelog.