#!/bin/bash # AutoDeployer self-update sidecar # Watches for a trigger file and rebuilds the autodeployer container. PROJECT_DIR="/project" TRIGGER_FILE="/trigger/update-trigger" LOG_FILE="/trigger/update.log" log() { echo "[$(date -Iseconds)] $1" | tee -a "$LOG_FILE" } do_update() { log "=== Self-update triggered ===" cd "$PROJECT_DIR" || { log "ERROR: project dir not found"; return 1; } log "Pulling latest changes..." if ! git pull --ff-only 2>&1 | tee -a "$LOG_FILE"; then log "ERROR: git pull failed" echo "failed" > /trigger/update-status return 1 fi log "Rebuilding autodeployer..." if ! docker compose up -d --build --no-deps autodeployer 2>&1 | tee -a "$LOG_FILE"; then log "ERROR: docker compose up failed" echo "failed" > /trigger/update-status return 1 fi log "=== Self-update completed ===" echo "success" > /trigger/update-status return 0 } log "Updater sidecar started, watching $TRIGGER_FILE" while true; do if [ -f "$TRIGGER_FILE" ]; then rm -f "$TRIGGER_FILE" echo "updating" > /trigger/update-status do_update fi sleep 2 done