Handler for GitHub Webhooks
Go to file
Tiago Garcia 3234dc6e39
Add installer
Signed-off-by: Tiago Garcia <tiago.rgarcia@ua.pt>
2024-07-19 15:29:19 +01:00
build Fix logging 2024-07-19 12:52:41 +01:00
include Fix logging 2024-07-19 12:52:41 +01:00
installer Add installer 2024-07-19 15:29:19 +01:00
src Fix logging 2024-07-19 12:52:41 +01:00
.gitignore Add installer 2024-07-19 15:29:19 +01:00
CMakeLists.txt Add installer 2024-07-19 15:29:19 +01:00
LICENSE Create LICENSE 2024-07-18 01:38:29 +01:00
README.md Add installer 2024-07-19 15:29:19 +01:00

README.md

GitHub Webhook Handler

Simple C++ WebAPI to work with GitHub Webhooks

Currently creating a local copy of remote files on every push

Usage

Run the installation script to install the application:

curl -fsSL https://cdn.tiagorg.pt/gh-wh-handler/install.sh | sudo sh

Run prebuilt binary

Head over to the Releases Page and download the desired binary.

Run the application using your configuration file:

/path/to/gh-wh-handler.<arch> /path/to/config.json

You can see the config file format below.

Install from source

Install the dependencies:

Build the application:

  1. Clone the repository:
git clone https://github.com/TiagoRG/gh-wh-handler.git
  1. Move to the build directory:
cd gh-wh-handler/build
  1. Run CMake:
cmake ..
  1. Build and install the application:
sudo make install

Run the application:

The application is running on a systemd service, which is both enabled and started after installation.

You can start, stop, restart, and check the status of the service using the following commands:

sudo systemctl start gh-wh-handler      # Start the service
sudo systemctl stop gh-wh-handler       # Stop the service
sudo systemctl restart gh-wh-handler    # Restart the service
sudo systemctl status gh-wh-handler     # Check the status of the service

You can also check the logs of the service using the following command:

journalctl -u gh-wh-handler

Configuration

As of now, the configuration menu is not yet implemented so you have to create the configuration file manually.

Config File

The configuration file can be found in /services/gh-wh-handler/config.json and has the following format:

{
  "port": 65001,
  "update-files": {
    "owner/repo-name": {
      "branch": "main",
      "files": {
        "path/to/remote/file": "/path/to/local/file",
        "...": "..."
      },
      "post-update": [
        "post-update-command",
        "post-update-script",
        "..."
      ]
    }
  },
  "run-scripts": {
    "owner/repo-name": {
      "branch": "main",
      "actions": [
        "command",
        "script",
      ]
    }
  },
  "tokens": {
    "owner/repo-name": "token"
  }
}

Endpoints

Currently, the only endpoint for the application is /update-files, which is used to update the local files on every push as well as run post-update scripts.

Since only the /update-files endpoint is implemented, the configuration file may not contain the run-scripts field.

License

This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.