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 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>
86 lines
No EOL
1.9 KiB
Bash
Executable file
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" |