- sync.py: vergelijkt SRU catalogus met lokale staat, verwerkt delta's - daily-sync.sh: wrapper script voor cron (lock, clone, pull, sync, push) - Cron job: dagelijks om 03:00 op dt-prod-01 - Forgejo API token in group_vars voor git push authenticatie Refs #9
53 lines
1.5 KiB
Django/Jinja
53 lines
1.5 KiB
Django/Jinja
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# WetGIT dagelijkse sync — managed by Ansible
|
|
# Haalt delta-updates op via SRU en commit naar wetgit/rijk.
|
|
|
|
LOG_PREFIX="[$(date '+%Y-%m-%d %H:%M:%S')]"
|
|
SYNC_DIR="{{ app_dir }}/sync"
|
|
RIJK_REPO="$SYNC_DIR/rijk"
|
|
XML_CACHE="{{ data_dir }}/xml-cache"
|
|
META_REPO="$SYNC_DIR/meta"
|
|
LOCK_FILE="$SYNC_DIR/.sync.lock"
|
|
|
|
# Voorkom parallelle runs
|
|
if [ -f "$LOCK_FILE" ]; then
|
|
pid=$(cat "$LOCK_FILE")
|
|
if kill -0 "$pid" 2>/dev/null; then
|
|
echo "$LOG_PREFIX Sync al actief (PID $pid), overslaan."
|
|
exit 0
|
|
fi
|
|
fi
|
|
echo $$ > "$LOCK_FILE"
|
|
trap "rm -f $LOCK_FILE" EXIT
|
|
|
|
# Zorg dat de repos gecloned zijn
|
|
mkdir -p "$SYNC_DIR" "$XML_CACHE"
|
|
|
|
if [ ! -d "$RIJK_REPO/.git" ]; then
|
|
echo "$LOG_PREFIX Eerste run — clone wetgit/rijk..."
|
|
git clone https://{{ forgejo_admin_user }}:{{ forgejo_api_token }}@{{ forgejo_domain }}/wetgit/rijk.git "$RIJK_REPO"
|
|
cd "$RIJK_REPO"
|
|
git config user.name "Coornhert"
|
|
git config user.email "coornhert@wetgit.nl"
|
|
else
|
|
cd "$RIJK_REPO"
|
|
git pull --ff-only origin main 2>/dev/null || true
|
|
fi
|
|
|
|
if [ ! -d "$META_REPO/.git" ]; then
|
|
echo "$LOG_PREFIX Eerste run — clone wetgit/meta..."
|
|
git clone https://{{ forgejo_admin_user }}:{{ forgejo_api_token }}@{{ forgejo_domain }}/wetgit/meta.git "$META_REPO"
|
|
fi
|
|
|
|
cd "$META_REPO"
|
|
git pull --ff-only origin main 2>/dev/null || true
|
|
|
|
echo "$LOG_PREFIX Start sync..."
|
|
PYTHONPATH="$META_REPO/src" python3 -m wetgit.pipeline.sync \
|
|
--rijk-repo "$RIJK_REPO" \
|
|
--xml-cache "$XML_CACHE" \
|
|
--delay 0.15
|
|
|
|
echo "$LOG_PREFIX Sync voltooid."
|