gtat-tech-career-kickstarte.../setup_utils/deploy.sh

60 lines
1.6 KiB
Bash

#!/bin/bash
# Exit on any error
set -e
UAT_USER="$CK_UAT_USER"
UAT_HOST="$CK_UAT_HOST"
DEPLOYMENT_DIR="$(date +%s)"
UAT_DEST_DIR="$CK_UAT_DEPLOYMENT_DIR/$(whoami)/$DEPLOYMENT_DIR"
PROJECT_ROOT="${1:-$(pwd)}"
IDENTITY_KEY="$HOME/.ssh/${CK_DEPLOY_KEY_NAME:-id_optivex}"
if [ ! -f "$IDENTITY_KEY" ]; then
echo "Identity key not found. Please check your SSH configuration."
exit 1
fi
echo "Starting deployment..."
echo " -> Deployment id: $DEPLOYMENT_DIR"
if [ -z "$VIRTUAL_ENV" ]; then
if [ -d ".venv" ]; then
echo "Activating virtual environment from .venv..."
source .venv/bin/activate
else
echo "No virtual environment found. Please create one and try again."
exit 1
fi
fi
echo "Building the project with 'uv'..."
uv build
DIST_DIR="$PROJECT_ROOT/dist"
if [ ! -d "$DIST_DIR" ]; then
echo "Build failed or dist directory not found."
exit 1
fi
echo "Copying files to UAT server..."
# Create destination directory all the way into the logs directory
ssh -i "$IDENTITY_KEY" -o StrictHostKeyChecking=no "$UAT_USER@$UAT_HOST" "mkdir -p $UAT_DEST_DIR/logs"
# -O forces legacy SCP protocol (OpenSSH 8.7+ defaults to SFTP, which
# the restricted_deploy.sh forced command does not allow)
scp -O -i "$IDENTITY_KEY" -o StrictHostKeyChecking=no -r "$DIST_DIR/"* "$UAT_USER@$UAT_HOST:$UAT_DEST_DIR/"
if [ $? -ne 0 ]; then
echo "File transfer failed."
exit 1
fi
echo "Deployment to UAT complete."
echo "Tests results will soon be available at /tmp/$DEPLOYMENT_DIR/test_results.xml"
echo "Bumping patch version of the application for the next deployment..."
uv version --bump patch
echo "All done!"