Files
GitHub.webhook-scripts/README.md

2.6 KiB

Github webhook scripts

These are scripts to setup the basic webhook folder structure, the clone base for one campaign and a simple crontab script to pull data from the repository

Scripts

  • base_setup.sh: setup for the folder structure, users, etc
  • new_clone.sh: Basic clone script
  • git_sync.sh: The script to run in crontab, to sync the changes
  • switch_branch.sh: Switch from one branch to the other
  • create_ssh_config.sh: setup ssh key and ssh config entry

Run commands

Settings

in config/webhook.cfg the following settings have to be entered

GIT_WEBHOOK_BASE_FOLDER="<BASE FOLDER>"
WWW_GROUP="<APACHE GROUP NAME>"
SUDO_USER="<SUDO USER NAME TO USE>"
USE_SUDO=<1: use sudo, 0: no sudo used>

The script will create the sudo user if needed automatically

base_setup.sh

as is, if the folder exists it will only copy the scripts, will not alter or change anything.

Planned to get auto fixes for wrong ACL, etc or missing config settings

SSH Key generation

A SSH Key has to be generated for each git respository that will be synced and the configuration has to be added to the ssh config file

create_ssh_config.sh [SSH Key name] [repo url full] ([jump proxy])

new_clone.sh

Create a new clone

new_clone.sh [repository] [branch] ([host]) ([remote name])

The [host] is the SSH Host name entry, this will replace any "[host]:" in the [repository]. If the [host] is not set the host set in the [repository] will be used. If nothing found the script will abort

A [branch] name must be set all the time.

An optional [remote name] can be set, if not set "origin" will be used.

git_sync.sh

Syncs changes, this is the script that should be placed into the crontab

git_sync.sh [repository] [branch] ([remote name])

The [repository] the the folder name inside the clone folder, on new clone it is output in the info line "... into (GIT REPOSITORY FOLDER)". All repository folders are in the "clone-base/" folder. The base folder is defined in the config/webhook.crf file.

A [branch] name must be set all the time.

An optional [remote name] can be set, if not set "origin" will be used.

All sync progress will be written to the log folder inside the base folder, the log file has the name of [repository]

Sample

[2025-07-04 16:06:31] [<uniq id>] [START] git merge <repository folder> <remote name>/<branch>
[2025-07-04 16:06:31] [<uniq id>] Updating <sha>..<sha>
<git inforation>
[2025-07-04 16:06:31] [<uniq id>] [END]

TODO

Future versions will hold an incoming webhook handler and a polling scripts (systemd based)