auto-commit-service/scripts/cli/upgrade

71 lines
1.8 KiB
Text
Raw Normal View History

#!/usr/bin/env bash
#
# Upgrade auto-commit-service
#
# Gracefully stops the running service and restarts with latest code.
#
# Usage:
# ./scripts/cli/upgrade
#
set -euo pipefail
SERVICE_URL="${AUTO_COMMIT_URL:-http://localhost:8200}"
SERVICE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m'
log_info() { echo -e "${GREEN}[INFO]${NC} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${NC} $1"; }
log_error() { echo -e "${RED}[ERROR]${NC} $1"; }
# Step 1: Disable daemon (graceful stop)
log_info "Disabling daemon..."
if curl -s -X POST "${SERVICE_URL}/disable" > /dev/null 2>&1; then
log_info "Daemon disabled, waiting for current cycle to complete..."
sleep 2
else
log_warn "Service not responding (may not be running)"
fi
# Step 2: Kill existing process
log_info "Stopping existing process..."
pkill -f "auto_commit_service" 2>/dev/null || true
sleep 2
# Step 3: Verify stopped
if curl -s "${SERVICE_URL}/health" > /dev/null 2>&1; then
log_error "Service still running, force killing..."
pkill -9 -f "auto_commit_service" 2>/dev/null || true
sleep 2
fi
# Step 4: Start new process
log_info "Starting service from ${SERVICE_DIR}..."
cd "${SERVICE_DIR}"
nohup python -m auto_commit_service > /tmp/auto-commit.log 2>&1 &
# Step 5: Wait for startup
log_info "Waiting for service to start..."
for i in {1..10}; do
sleep 1
if curl -s "${SERVICE_URL}/health" > /dev/null 2>&1; then
break
fi
echo -n "."
done
echo ""
# Step 6: Verify health
if curl -s "${SERVICE_URL}/health" | grep -q '"status":"ok"'; then
log_info "Service upgraded successfully"
curl -s "${SERVICE_URL}/health" | python3 -m json.tool 2>/dev/null || cat
else
log_error "Service failed to start"
log_error "Check logs: tail -f /tmp/auto-commit.log"
exit 1
fi