heroagent/pkg/builders/postgresql/cmd/run.sh
2025-04-23 04:18:28 +02:00

94 lines
3.0 KiB
Bash
Executable File

#!/bin/bash
set -e
export SERVER="65.109.18.183"
LOG_FILE="postgresql_deployment_$(date +%Y%m%d_%H%M%S).log"
cd "$(dirname "$0")"
# Configure logging
log() {
local timestamp=$(date +"%Y-%m-%d %H:%M:%S")
echo "[$timestamp] $1" | tee -a "$LOG_FILE"
}
log "=== Starting PostgreSQL Builder Deployment ==="
log "Log file: $LOG_FILE"
# Check if SERVER environment variable is set
if [ -z "$SERVER" ]; then
log "Error: SERVER environment variable is not set."
log "Please set it to the IPv4 or IPv6 address of the target server."
log "Example: export SERVER=192.168.1.100"
exit 1
fi
# Validate if SERVER is a valid IP address (IPv4 or IPv6)
if ! [[ "$SERVER" =~ ^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$ ]] && \
! [[ "$SERVER" =~ ^[0-9a-fA-F:]+$ ]]; then
log "Error: SERVER must be a valid IPv4 or IPv6 address."
exit 1
fi
log "Using server: $SERVER"
# Build the PostgreSQL builder binary
log "Building PostgreSQL builder binary..."
./build.sh | tee -a "$LOG_FILE"
# Check if binary exists
if [ ! -f "build/postgresql_builder" ]; then
log "Error: PostgreSQL builder binary not found after build."
exit 1
fi
log "Binary size:"
ls -lh build/ | tee -a "$LOG_FILE"
# Create deployment directory on server
log "Creating deployment directory on server..."
ssh "root@$SERVER" "mkdir -p ~/postgresql_builder" 2>&1 | tee -a "$LOG_FILE"
# Transfer the binary to the server
log "Transferring PostgreSQL builder binary to server..."
rsync -avz --progress build/postgresql_builder "root@$SERVER:~/postgresql_builder/" 2>&1 | tee -a "$LOG_FILE"
# Run the PostgreSQL builder on the server
log "Running PostgreSQL builder on server..."
ssh -t "root@$SERVER" "cd ~/postgresql_builder && ./postgresql_builder" 2>&1 | tee -a "$LOG_FILE"
BUILD_EXIT_CODE=${PIPESTATUS[0]}
# If there was an error, make it very clear
if [ $BUILD_EXIT_CODE -ne 0 ]; then
log "⚠️ PostgreSQL builder failed with exit code: $BUILD_EXIT_CODE"
fi
# Check for errors in exit code
if [ $BUILD_EXIT_CODE -eq 0 ]; then
log "✅ SUCCESS: PostgreSQL builder completed successfully!"
log "----------------------------------------------------------------"
# Note: Verification is now handled by the builder itself
# Check for build logs or error messages
log "Checking for build logs on server..."
BUILD_LOGS=$(ssh "root@$SERVER" "cd ~/postgresql_builder && ls -la *.log 2>/dev/null || echo 'No log files found'" 2>&1)
log "Build log files:"
echo "$BUILD_LOGS" | tee -a "$LOG_FILE"
log "----------------------------------------------------------------"
log "🎉 PostgreSQL Builder deployment COMPLETED"
log "================================================================"
else
log "❌ ERROR: PostgreSQL builder failed to run properly on the server."
# Get more detailed error information
# log "Checking for error logs on server..."
# ssh "root@$SERVER" "cd ~/postgresql_builder && ls -la" 2>&1 | tee -a "$LOG_FILE"
exit 1
fi
log "=== Deployment Completed ==="