ice/scripts/server-update.sh
Claude Code a8f2078e5b
All checks were successful
CI / Lint Code (push) Successful in 1m39s
CI / Security Checks (push) Successful in 1m30s
CI / Validate i18n Files (push) Successful in 9s
CI / TypeScript Type Check (push) Successful in 1m49s
CI / Build Project (push) Successful in 1m59s
CI / Run Tests (Node 18) (push) Successful in 2m8s
Auto Tag Release / Create Auto Tag (push) Successful in 2m22s
CI / Run Tests (Node 20) (push) Successful in 2m18s
CI / Test Coverage (push) Successful in 3m13s
Deploy Scripts to S3 / deploy-scripts (push) Successful in 34s
Add server update scripts and fix repository URLs
- Add scripts/server-update.sh for production deployments
- Add scripts/dev-update.sh for development updates
- Update repository URLs to signal-works/icewatch
- Document update scripts in CLAUDE.md

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-08 21:27:11 -04:00

86 lines
No EOL
1.9 KiB
Bash
Executable file

#!/bin/bash
# Server Update Script for Ice Watch Application
# This script handles updating the production server with proper user permissions
set -e
# Configuration
APP_DIR="/opt/icewatch"
APP_USER="icewatch"
SERVICE_NAME="icewatch"
# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# Functions
log() {
echo -e "${GREEN}[$(date +'%Y-%m-%d %H:%M:%S')] $1${NC}"
}
warn() {
echo -e "${YELLOW}[$(date +'%Y-%m-%d %H:%M:%S')] WARNING: $1${NC}"
}
error() {
echo -e "${RED}[$(date +'%Y-%m-%d %H:%M:%S')] ERROR: $1${NC}"
exit 1
}
# Check if running as root
if [[ $EUID -ne 0 ]]; then
error "This script must be run as root (use sudo)"
fi
# Check if app directory exists
if [[ ! -d "$APP_DIR" ]]; then
error "Application directory $APP_DIR does not exist"
fi
# Check if service exists
if ! systemctl list-unit-files | grep -q "$SERVICE_NAME.service"; then
error "Service $SERVICE_NAME does not exist"
fi
log "Starting server update process..."
# Stop the service
log "Stopping $SERVICE_NAME service..."
systemctl stop "$SERVICE_NAME"
# Navigate to app directory as app user and update
log "Updating application code..."
sudo -u "$APP_USER" bash -c "
cd '$APP_DIR' && \
git fetch origin && \
git reset --hard origin/main && \
npm install --production && \
npm run build
"
# Check if build was successful
if [[ $? -ne 0 ]]; then
error "Build failed! Check the logs above."
fi
# Start the service
log "Starting $SERVICE_NAME service..."
systemctl start "$SERVICE_NAME"
# Check service status
sleep 2
if systemctl is-active --quiet "$SERVICE_NAME"; then
log "✅ Service $SERVICE_NAME is running successfully"
else
error "❌ Service $SERVICE_NAME failed to start"
fi
# Show recent logs
log "Recent service logs:"
journalctl -u "$SERVICE_NAME" -n 10 --no-pager
log "🎉 Server update completed successfully!"
log "Application is now running the latest version from main branch"