47 lines
1.5 KiB
Bash
Executable File
47 lines
1.5 KiB
Bash
Executable File
#!/bin/bash
|
|
# A universal deployment script that can be run from a local machine or directly on the server.
|
|
#
|
|
# - When run locally, it will SSH to the server and execute the deployment.
|
|
# - When run on the server, it will execute the deployment directly.
|
|
|
|
set -e
|
|
|
|
# --- Configuration ---
|
|
REMOTE_USER="jimmyg"
|
|
REMOTE_HOST="server1"
|
|
REMOTE_DIR="/home/jimmyg/mold_cost_online_tool"
|
|
SERVER_HOSTNAME="server1" # The hostname of the production server
|
|
|
|
# --- Deployment Logic ---
|
|
deploy_commands() {
|
|
echo ">>> [1/4] Navigating to the application directory..."
|
|
cd "$REMOTE_DIR"
|
|
|
|
echo ">>> [2/4] Pulling latest changes from Git..."
|
|
git pull
|
|
|
|
echo ">>> [3/4] Building new container image with the latest code..."
|
|
podman-compose build
|
|
|
|
echo ">>> [4/4] Restarting services with the updated image..."
|
|
podman-compose down
|
|
podman-compose up -d
|
|
|
|
echo ""
|
|
echo "✅ Deployment finished successfully on $REMOTE_HOST!"
|
|
}
|
|
|
|
# --- Execution ---
|
|
# Get the hostname of the machine this script is running on
|
|
current_hostname=$(hostname)
|
|
|
|
if [ "$current_hostname" == "$SERVER_HOSTNAME" ]; then
|
|
echo "🚀 Running deployment script directly on the server ($current_hostname)..."
|
|
deploy_commands
|
|
else
|
|
echo "🚀 Running deployment script from local machine ($current_hostname)..."
|
|
echo "Connecting to $REMOTE_USER@$REMOTE_HOST..."
|
|
# Using 'bash -s' allows us to execute the function on the remote server.
|
|
# We pass the function definition and then call it.
|
|
ssh "$REMOTE_USER@$REMOTE_HOST" "$(declare -f deploy_commands); deploy_commands"
|
|
fi |