Tiago Garcia
3234dc6e39
Signed-off-by: Tiago Garcia <tiago.rgarcia@ua.pt> |
||
---|---|---|
build | ||
include | ||
installer | ||
src | ||
.gitignore | ||
CMakeLists.txt | ||
LICENSE | ||
README.md |
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
Use installation script (recommended)
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:
- Clone the repository:
git clone https://github.com/TiagoRG/gh-wh-handler.git
- Move to the build directory:
cd gh-wh-handler/build
- Run CMake:
cmake ..
- 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.