#!/bin/bash # This script deploys the portfolio website from GitHub to the VPS # Load environment variables if [ -f .env ]; then source .env else echo "Error: .env file not found. Please create it based on .env.example." exit 1 fi # Check if sshpass is installed if ! command -v sshpass &> /dev/null; then echo "Error: sshpass is not installed. Please run ./install-sshpass.sh first." exit 1 fi # Set SSH and SCP commands with password SSH_CMD="sshpass -p \"$SERVER_PASSWORD\" ssh -o StrictHostKeyChecking=no $SERVER_USER@$SERVER_IP" SCP_CMD="sshpass -p \"$SERVER_PASSWORD\" scp -o StrictHostKeyChecking=no" # Set variables REMOTE_DIR="/var/www/boilerhaus.org" GITHUB_REPO="https://github.com/boilerrat/portfolio.git" TEMP_DIR="./portfolio-temp" # Create a temporary directory for the website files echo "Creating temporary directory..." mkdir -p $TEMP_DIR cd $TEMP_DIR # Clone the repository echo "Cloning portfolio repository from GitHub..." git clone $GITHUB_REPO . # Install dependencies echo "Installing dependencies..." npm install # Build the project echo "Building the project..." npm run build # Create a tarball of the built files echo "Creating tarball of the built files..." cd dist tar -czf ../../portfolio-dist.tar.gz . cd ../.. # Upload the tarball to the server echo "Uploading to server..." eval "$SCP_CMD portfolio-dist.tar.gz $SERVER_USER@$SERVER_IP:/tmp/" # Extract the tarball on the server echo "Extracting files on server..." eval "$SSH_CMD \"mkdir -p $REMOTE_DIR && \ tar -xzf /tmp/portfolio-dist.tar.gz -C $REMOTE_DIR && \ chown -R www-data:www-data $REMOTE_DIR && \ rm /tmp/portfolio-dist.tar.gz\"" # Clean up local files echo "Cleaning up..." rm -rf $TEMP_DIR portfolio-dist.tar.gz echo "Portfolio website deployed successfully!"