fix: update all submodules recursively, but only detect Docker changes

- Use --recursive to update all submodules (including device-agent)
- Hash only server-core + dashboard-ui for rebuild detection
- device-agent and device-agent-embedded don't trigger Docker rebuild
This commit is contained in:
datadunia
2026-06-26 10:39:20 +07:00
parent 2426a7b42c
commit 4df2e0aeeb
+8 -9
View File
@@ -45,9 +45,7 @@ git pull origin main || { GIT_PULL_FAILED=true; echo "[!] Git pull for main repo
echo "[+] Syncing and updating submodules..." echo "[+] Syncing and updating submodules..."
SUBMODULE_FAILED=false SUBMODULE_FAILED=false
# Only update server-core and dashboard-ui (Docker components) git submodule update --init --recursive --remote || { SUBMODULE_FAILED=true; echo "[!] Git submodule update skipped or failed."; }
# device-agent and device-agent-embedded are built separately
git submodule update --init --recursive --remote apps/server-core apps/dashboard-ui || { SUBMODULE_FAILED=true; echo "[!] Git submodule update skipped or failed."; }
# 2b. Build VitePress docs (non-blocking) # 2b. Build VitePress docs (non-blocking)
echo "[+] Building VitePress documentation..." echo "[+] Building VitePress documentation..."
@@ -58,8 +56,9 @@ else
echo "[!] apps/docs directory not found. Skipping docs build." echo "[!] apps/docs directory not found. Skipping docs build."
fi fi
# 3. Hitung state hash (git + .env) untuk deteksi perubahan # 3. Hitung state hash (hanya server-core + dashboard-ui untuk rebuild detection)
CURRENT_HASH=$(echo "$(git rev-parse HEAD 2>/dev/null)$(git submodule status 2>/dev/null)$(sha256sum .env 2>/dev/null)" | sha256sum | cut -d" " -f1) # device-agent dan device-agent-embedded build terpisah, tidak mempengaruhi Docker build
DOCKER_HASH=$(echo "$(git rev-parse HEAD 2>/dev/null)$(git -C apps/server-core rev-parse HEAD 2>/dev/null)$(git -C apps/dashboard-ui rev-parse HEAD 2>/dev/null)$(sha256sum .env 2>/dev/null)" | sha256sum | cut -d" " -f1)
# 4. Tentukan apakah perlu rebuild # 4. Tentukan apakah perlu rebuild
NEEDS_REBUILD=false NEEDS_REBUILD=false
@@ -74,11 +73,11 @@ elif [ ! -f "$STATE_FILE" ]; then
NEEDS_REBUILD=true NEEDS_REBUILD=true
else else
PREVIOUS_HASH=$(cat "$STATE_FILE" 2>/dev/null || echo "") PREVIOUS_HASH=$(cat "$STATE_FILE" 2>/dev/null || echo "")
if [ "$CURRENT_HASH" != "$PREVIOUS_HASH" ]; then if [ "$DOCKER_HASH" != "$PREVIOUS_HASH" ]; then
echo "[+] State hash changed. Rebuilding." echo "[+] Docker components changed. Rebuilding."
NEEDS_REBUILD=true NEEDS_REBUILD=true
else else
echo "[-] No changes detected. Skipping build and restart." echo "[-] No Docker changes detected. Skipping build and restart."
fi fi
fi fi
@@ -162,7 +161,7 @@ if [ "$NEEDS_REBUILD" = true ]; then
docker image prune -f docker image prune -f
# Simpan state secara atomik (tmp + mv untuk cegah korupsi file) # Simpan state secara atomik (tmp + mv untuk cegah korupsi file)
echo "$CURRENT_HASH" > "$STATE_FILE.tmp" && mv "$STATE_FILE.tmp" "$STATE_FILE" echo "$DOCKER_HASH" > "$STATE_FILE.tmp" && mv "$STATE_FILE.tmp" "$STATE_FILE"
echo "=========================================" echo "========================================="
echo " Update & Deployment complete! " echo " Update & Deployment complete! "