Files
rpg-static-site/deploy.sh

75 lines
2.2 KiB
Bash
Executable File

#!/bin/bash
# Exit on errors
set -e
# Configuration (environment variables)
BUILD_DIR=".tmp_eleventy_build" # Temporary directory for the build
PRODUCTION_SERVER="${PRODUCTION_SERVER:-}" # Ensure this is set in the environment
PRODUCTION_PATH="${PRODUCTION_PATH:-}" # Ensure this is set in the environment
PATH_PREFIX="${PATH_PREFIX:-}" # Ensure this is set in the environment
SITE_URL="${SITE_URL:-}" # Ensure this is set in the environment
CDN_URL="${CDN_URL:-}" # Ensure this is set in the environment
FOUNDRY_BASE_URL="${FOUNDRY_BASE_URL:-}" # Ensure this is set in the environment
# Function to clean up the temporary directory
cleanup() {
echo "Cleaning up temporary files..."
rm -rf "$BUILD_DIR"
}
# Set trap to clean up on script exit or interruption
trap cleanup EXIT
# Function to check environment variables
check_env() {
if [[ -z "$PRODUCTION_SERVER" ]]; then
echo "Error: PRODUCTION_SERVER is not set. Please set it and try again."
exit 1
fi
if [[ -z "$PRODUCTION_PATH" ]]; then
echo "Error: PRODUCTION_PATH is not set. Please set it and try again."
exit 1
fi
if [[ -z "$PATH_PREFIX" ]]; then
echo "Error: PATH_PREFIX is not set. Please set it and try again."
exit 1
fi
if [[ -z "$SITE_URL" ]]; then
echo "Error: SITE_URL is not set. Please set it and try again."
exit 1
fi
if [[ -z "$CDN_URL" ]]; then
echo "Error: CDN_URL is not set. Please set it and try again."
exit 1
fi
if [[ -z "$FOUNDRY_BASE_URL" ]]; then
echo "Error: FOUNDRY_BASE_URL is not set. Please set it and try again."
exit 1
fi
}
# Check environment variables
check_env
# Step 1: Build the site to a temporary directory
echo "Building the site..."
npx @11ty/eleventy --output="$BUILD_DIR"
# Step 2: Deploy using rsync
echo "Deploying to production..."
rsync -avz --delete "$BUILD_DIR/" "$PRODUCTION_SERVER:$PRODUCTION_PATH"
# Step 3: Fix permissions on the remote server
echo "Fixing permissions on the server..."
ssh "$PRODUCTION_SERVER" << EOF
find "$PRODUCTION_PATH" -type f -exec chmod 665 {} \; # Set permissions for files
find "$PRODUCTION_PATH" -type d -exec chmod 775 {} \; # Set permissions for directories
EOF
echo "Deployment complete!"