From 4709bb022e65c364baa0dae963dcfa82e2214195 Mon Sep 17 00:00:00 2001 From: red person Date: Tue, 2 Jun 2026 14:45:32 +0300 Subject: [PATCH] Windows: add Docker update script --- tests/test_windows_update_script.py | 18 +++++++++ update_windows.bat | 59 +++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 tests/test_windows_update_script.py create mode 100644 update_windows.bat diff --git a/tests/test_windows_update_script.py b/tests/test_windows_update_script.py new file mode 100644 index 0000000..23275cf --- /dev/null +++ b/tests/test_windows_update_script.py @@ -0,0 +1,18 @@ +from pathlib import Path + + +ROOT = Path(__file__).resolve().parents[1] + + +def test_windows_update_script_uses_safe_docker_update_flow(): + script = (ROOT / "update_windows.bat").read_text(encoding="utf-8") + lowered = script.lower() + + assert 'pushd "%~dp0"' in lowered + assert "where git" in lowered + assert "where docker" in lowered + assert "docker compose version" in lowered + assert "git pull --ff-only" in lowered + assert "docker compose up -d --build" in lowered + assert "docker image prune -f" in lowered + assert "pause" in lowered diff --git a/update_windows.bat b/update_windows.bat new file mode 100644 index 0000000..7fcf1ad --- /dev/null +++ b/update_windows.bat @@ -0,0 +1,59 @@ +@echo off +setlocal +title Update Odysseus Docker Deployment + +pushd "%~dp0" >nul + +echo ========================================= +echo Updating Odysseus Docker deployment +echo ========================================= +echo. + +where git >nul 2>nul +if errorlevel 1 ( + echo [!] Git was not found on PATH. + echo Install Git for Windows, then run this script again. + goto :fail +) + +where docker >nul 2>nul +if errorlevel 1 ( + echo [!] Docker was not found on PATH. + echo Start Docker Desktop, then run this script again. + goto :fail +) + +docker compose version >nul 2>nul +if errorlevel 1 ( + echo [!] Docker Compose is not available. + echo Update Docker Desktop, then run this script again. + goto :fail +) + +echo [+] Pulling latest code... +git pull --ff-only +if errorlevel 1 goto :fail + +echo. +echo [+] Rebuilding and restarting containers... +docker compose up -d --build +if errorlevel 1 goto :fail + +echo. +echo [+] Removing dangling Docker images... +docker image prune -f +if errorlevel 1 goto :fail + +echo. +echo ========================================= +echo Update completed successfully. +echo ========================================= +goto :done + +:fail +echo. +echo Update failed. Check the message above and try again. + +:done +popd >nul +pause