Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

TODO

  • Ensure unique repo directories

  • Pull request status update messages (through Telegram)

[unreleased]

Added

  • Native Sentry message support

  • Support for (Inoreader filter) RSS news item notification

Changed

Removed

Fixed

  • Actually use named webhaak queue for RQ worker

[0.5.4] - 2023-07-28

Fixed

  • Installation through pip/pypi failed due to incorrect script entry point

[0.5.3] - 2023-07-28

Changed

  • Pydantic settings is its own package since Pydantic 2

Fixed

  • Crash when links were available in a BitBucket push, but not html link info for the branch

  • Sentry pushes didn’t get handled correctly

[0.5.2] - 2023-06-09

Fixed

  • Minor error in new PushOver send function causing pushes not to be sent

  • Better variable names

[0.5.1] - 2023-06-06

Removed

  • Dependency on external PushOver library

[0.5.0] - 2023-06-06 (FastAPI, RQ)

Added

  • Background worker through RQ (Redis Queue) for asynchronous running of jobs

  • Status endpoint for a submitted job, which shows status of the (background) job, and process output

  • Configuration through environment variables, including sanity checks on the values (e.g., existing paths and such); if webhaak is crashing on startup, check the last line of the stacktrace as that will likely tell what’s wrong

Changed

  • API backend changed from Flask to FastAPI; big refactor

  • get_app_key endpoint is now located behind the secret key to prevent abuse

  • All configuration is done through environment variables, see Example configuration and the configuration examples

  • Various linting, CI and code quality improvements

Removed

  • settings.py file; configuration is handled through environment variables completely now; project/hook configuration is still in the yaml file

Fixed

  • A crash could occur when a branch was merged, as commits property of payload is empty (BitBucket)

  • Job results when commands were failing or when a job was still running

  • Lots of other small crashes and edge-cases

[0.4.0] - 2023-02-16

Added

  • Optional endpoint to list all projects (apps) and their triggers. Enable by setting a SECRETKEY in settings.py The endpoint is located at /admin//list and webhaak-ui is an example client.

  • Possibility to remotely use the endpoints (e.g., through jsonp)

  • Git-based version string generation, use REPOVERSION placeholder in your projects yaml

  • ReadTheDocs, including apiDoc

  • Support for Gitea and Gogs webhooks

  • Support for checking out a certain branch (use branch: <name>)

  • Notification also includes runtime of the Git update and command execution

  • Gather information about the webhook (push) event, to be used by commands, with keyword substitution

  • BitBucket support

Changed

  • Changed yaml library to strictyaml, to be safer

  • Better logging

  • Fixed ‘REPODIR’ substitution in commands

  • Fixes for wrong payload lookups on pings and some other crashes

Removed

  • pyyaml dependency

  • utilkit dependency

[0.3.0] - 2018-10-01

Added

  • Python 3 compatibility

  • Subprocess worker, making requests process the pull/clone and script execution asynchronous from the API call

  • Give more output about the checkout and pull in the response JSON

  • PushOver integration, providing feedback after the subprocess is done with updating and running its job

Changed

  • Fixes to the example

  • Better logging of the results of the jobs

  • Use subprocess.run() instead of check_output()

Removed

  • Trial with Redis

  • Trial with Quart (asyncio Flask-alike)

[0.2.0] - 2016-05-13 (Friday the 13th)

Added

  • wsgi file, for Apache mod_wsgi and supervisord and such

  • Example Apache vhost

  • Support for GitHub ping and push requests

  • Support for per-repo parent dir settings with repoparent. This means that webhaak doesn’t clone this repo into its default cache dir, but in a subdirectory of the directory configured in repoparent, so /reponame (e.g., /srv/customparent/myproject)

  • json response now includes project name

  • Logs information about GitHub hook requests

Changed

  • Better error messags in json responses

  • More info in json response about the executed command

  • If DEBUG=True, Flask’s DEBUG is enabled too

  • Correctly checkout projects, don’t only fetch the repos

  • Better repo directory generation

  • Better execution of scripts and other commands (with parameters)

[0.1.0] - 2016-05-05 (Initial release)

Added

  • Initial release

  • Flask API with appkey-secured endpoints to:

    • Git clone/fetch a repo to a certain directory

    • Run a pre-defined command

    • Return result of both the repo update and command execution as json response

  • Configuration through yaml file: actions are pre-defined

  • /getappkey helper endpoint to generate keys for usage in the yaml configuration