#!/bin/sh # Simple webhook to build and deploy latest blog version. # The webhook allows to pass an optional ref as url path. # # Examples: # curl ; Will deploy main ref # curl /blub ; Will deploy blub ref while true; do echo "Wait for webhook trigger ..." # Wait until webhook is triggered and parse out optional branch info. # The branch info can be passed via the url path, an example is: # GET /blub HTTP/1.1 REF=$(echo -e "HTTP/1.0 204 No Content\r\nConnection: close\r\n\r" | nc -l -p 80 | awk '/GET/ { print $2; }' | tr -d '/') # If we got a ref use it else default to main. REF=${REF:-main} if [ ! -d blog ]; then # Use non-redirected port as redirection is handled via PREROUTING # iptables rules and if this hook runs on the same machine the request # packages will not go through the routing chain. git clone https://git.memzero.de:8443/blog fi git -C blog submodule init git -C blog submodule update git -C blog fetch --prune echo "Checking out ref: $REF" git -C blog checkout $REF || continue zola --root blog build || continue # webroot must be mounted at /www. rm -rf /www/blog mv blog/public /www/blog echo "SUCCESS: Updated /www/blog" done