Deployment via Git-Hook
Diese Seite hier wird mittels mdBook gepflegt, und liegt in einem (bare) Git-Repository (auf dem selben Server).
Da Mensch faul ist, will man nicht immer die Doku per Hand bauen, und dann manuell hochladen.
Mittels post-receive
Git-Hook
kann man den Webserver dazu veranlassen dies nach jedem Push
automatisch zu tun.
#!/bin/sh
# repository location
HOOK_DIR="$(cd "$(dirname "$0")" && pwd || exit 2)"
REPO_DIR="$(realpath "$HOOK_DIR")"
# public target folder
OUTDIR="/webserver/pfad/zur/doku"
# path to the cargo binaries
CARGO="$HOME/.cargo/bin"
# create temporary directories
BUILDDIR=$(mktemp -d -t wissen_build.XXXXX)
CLONEDIR=$(mktemp -d -t wissen_clone.XXXXX)
# clone the bare repository
if ! (
mkdir -p "$OUTDIR" &&
git clone "$REPO_DIR" "$CLONEDIR"
); then
echo "clone failed"
exit 3
fi
# build the documentation
if ! (
cd "$CLONEDIR" &&
PATH="$CARGO:$PATH" mdbook build --dest-dir "$BUILDDIR" "$CLONEDIR"
); then
echo "build failed"
exit 2
fi
# move the files around and clean up
if ! (
rm -rf "$OUTDIR" &&
cp -a "$BUILDDIR/html" "$OUTDIR" &&
chmod -v 755 "$OUTDIR" &&
rm -rf "$BUILDDIR" "$CLONEDIR"
); then
echo "file handling failed"
exit 1
fi
echo "deployment successful"
exit 0
Zugegeben - das Script ist sehr schlicht, funktioniert jedoch recht zuverlässig. Die einfachsten Lösungen sind doch immernoch die besten :)
last update: 2024-01-28 17:43:10 +0100