Blame Raw
permissionBRICK · c3aec169 · · 35 lines (1.6 KB)
1 contributor
1#!/bin/sh
2# Instant auto-update: poll the registry and redeploy a container as soon as
3# its published image differs from what is running. Cron runs this every 2 min
4# (/boot/config/plugins/dynamix/registry-autoupdate.cron).
5# Skips entirely while a CI job container is active: recreating gitgudlab would
6# kill the registry mid-push, and the runner must not recreate itself mid-job
7# (redeploy-gitgudlab-runner.sh also guards this itself).
8
9LOCK=/var/run/registry-autoupdate.lock
10mkdir "$LOCK" 2>/dev/null || exit 0
11trap 'rmdir "$LOCK"' EXIT
12
13if docker ps --format '{{.Names}}' | grep -q '^gitgud-job-'; then
14 exit 0
15fi
16
17check() {
18 name=$1; ref=$2; script=$3
19 docker pull -q "$ref" >/dev/null 2>&1 || return 0
20 latest=$(docker image inspect --format '{{.Id}}' "$ref" 2>/dev/null) || return 0
21 running=$(docker inspect --format '{{.Image}}' "$name" 2>/dev/null)
22 if [ "$latest" != "$running" ]; then
23 logger -t registry-autoupdate "updating $name ($running -> $latest)"
24 if sh "$script" >/dev/null 2>&1; then
25 logger -t registry-autoupdate "$name updated"
26 else
27 logger -t registry-autoupdate "$name redeploy failed or refused, will retry"
28 fi
29 fi
30}
31
32check gitgudlab git.nas.home.htl-sky.net/permissionbrick/gitgudlab:latest /boot/config/redeploy-gitgudlab.sh
33check gitgudlab-runner git.nas.home.htl-sky.net/permissionbrick/gitgudlab:runner-latest /boot/config/redeploy-gitgudlab-runner.sh
34check sillytavern ghcr.io/sillytavern/sillytavern:latest /boot/config/redeploy-sillytavern.sh
35check runpod-lazy ghcr.io/permissionbrick/st-runpod-proxy:latest /boot/config/redeploy-runpod-lazy.sh