From eda14db897b3af8b05acddb2a3fae729f679e642 Mon Sep 17 00:00:00 2001 From: viewit Date: Tue, 7 Jul 2026 15:11:19 +0200 Subject: [PATCH] feat: pull image from registry instead of local build, ask stable/nightly start.sh now pulls gitea.it-drui.de/viewit/kx-bridge:latest or :nightly depending on user choice (interactive prompt or ./start.sh argument), instead of building the image locally from source. --- start.sh | 64 +++++++++++++++++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 31 deletions(-) diff --git a/start.sh b/start.sh index eb8a72b..a5b6231 100755 --- a/start.sh +++ b/start.sh @@ -1,10 +1,12 @@ #!/usr/bin/env bash -# start.sh – KX-Bridge starten (baut Docker-Image automatisch wenn nötig) +# start.sh – KX-Bridge starten (zieht das fertige Image aus der Registry) set -euo pipefail cd "$(dirname "$0")" +IMAGE_BASE="gitea.it-drui.de/viewit/kx-bridge" + # .env anlegen falls nicht vorhanden if [[ ! -f .env ]]; then if [[ -f .env.example ]]; then @@ -30,38 +32,38 @@ if ! docker info > /dev/null 2>&1; then exit 1 fi -# Prüfen ob Build nötig ist -NEEDS_BUILD=0 -if ! docker image inspect kx-bridge:latest > /dev/null 2>&1; then - echo "[start] Image nicht vorhanden – baue kx-bridge:latest ..." - NEEDS_BUILD=1 +# Release-Kanal abfragen +CHANNEL="" +if [[ "${1:-}" == "stable" || "${1:-}" == "nightly" ]]; then + CHANNEL="$1" else - # Image-Erstellungszeit in Unix-Sekunden - IMAGE_TS=$(docker inspect --format='{{.Created}}' kx-bridge:latest \ - | python3 -c "import sys,datetime; s=sys.stdin.read().strip(); \ - s=s[:26].rstrip('Z').replace('T',' '); \ - print(int(datetime.datetime.fromisoformat(s).replace(tzinfo=datetime.timezone.utc).timestamp()))" 2>/dev/null || echo 0) - - for f in Dockerfile \ - bridge/kobrax_moonraker_bridge.py \ - bridge/kobrax_client.py \ - bridge/env_loader.py \ - bridge/requirements.txt \ - bridge/anycubic_slicer.crt \ - bridge/anycubic_slicer.key; do - if [[ -f "$f" ]]; then - FILE_TS=$(python3 -c "import os; print(int(os.path.getmtime('$f')))" 2>/dev/null || echo 0) - if [[ $FILE_TS -gt $IMAGE_TS ]]; then - echo "[start] '$f' ist neuer als das Image – baue neu ..." - NEEDS_BUILD=1 - break - fi - fi - done + echo "" + echo " Welchen Release-Kanal möchtest du starten?" + echo " 1) stable (empfohlen)" + echo " 2) nightly (getestete Vorabversion)" + echo -n " Auswahl [1]: " + read -r CHOICE + case "$CHOICE" in + 2) CHANNEL="nightly" ;; + *) CHANNEL="stable" ;; + esac fi -if [[ $NEEDS_BUILD -eq 1 ]]; then - docker build -t kx-bridge:latest . +if [[ "$CHANNEL" == "nightly" ]]; then + IMAGE_TAG="nightly" +else + IMAGE_TAG="latest" +fi +IMAGE="$IMAGE_BASE:$IMAGE_TAG" + +echo "[start] Kanal: $CHANNEL → Image: $IMAGE" +echo "[start] Ziehe aktuelles Image ..." +docker pull "$IMAGE" + +# docker-compose.yml auf den gewählten Kanal umschreiben (nur die image-Zeile) +if [[ -f docker-compose.yml ]]; then + sed -i.bak -E "s#^(\s*image:\s*).*#\1$IMAGE#" docker-compose.yml + rm -f docker-compose.yml.bak fi # Container starten @@ -70,7 +72,7 @@ docker-compose down 2>/dev/null || true docker-compose up -d echo "" -echo " ✓ KX-Bridge läuft" +echo " ✓ KX-Bridge läuft ($CHANNEL)" echo " Web-UI : http://$(hostname -I | awk '{print $1}'):7125" echo " Logs : docker-compose logs -f" echo " Stop : docker-compose down"