#!/bin/bash set -e # Check if the required environment variables are set if [ -z "$REPO_URL" ]; then echo "Error: REPO_URL environment variable must be set." exit 1 fi # Check if the SSH key exists if [ ! -f /root/.ssh/id_rsa ]; then echo "Error: SSH private key not found at /root/.ssh/id_rsa" exit 1 fi # Ensure the SSH key has the correct permissions chmod 600 /root/.ssh/id_rsa # Extract the domain from the REPO_URL DOMAIN=$(echo $REPO_URL | awk -F'[@:]' '{print $3}') # Check if the repository directory already exists if [ ! -d "/workspace/.git" ]; then # Add the SSH configuration for the domain echo "Host $DOMAIN HostName $DOMAIN IdentityFile /root/.ssh/id_rsa StrictHostKeyChecking no " >> /root/.ssh/config # Clone the repository if it doesn't exist git clone $REPO_URL /workspace fi # Add the public SSH key to authorized_keys if [ -f /root/.ssh/hostkey.pub ]; then cat /root/.ssh/hostkey.pub >> /root/.ssh/authorized_keys fi # Change to the repository directory cd /workspace # Install dependencies yarn install # Copy the environment file to the repository's environments directory if [ -f /environment/.dev.env ]; then mkdir -p /workspace/environments cp /environment/.dev.env /workspace/environments/.dev.env else echo "Error: Environment file not found at /environment/.dev.env" exit 1 fi # Start the application with pm2 exec pm2-runtime "yarn start:dev"