#!/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 if [ -z "$GIT_USER" ]; then echo "Error: GIT_USER environment variable must be set." exit 1 fi if [ -z "$GIT_EMAIL" ]; then echo "Error: GIT_EMAIL 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 # If no teleport edition is given, fallback to oss if [ -z "$TELEPORT_EDITION" ]; then TELEPORT_EDITION="oss" fi # Install Teleport if the environment variables are set if [ -n "$TELEPORT_VERSION" ] && [ -n "$TELEPORT_URL" ]; then echo "Installing Teleport version $TELEPORT_VERSION, edition $TELEPORT_EDITION..." echo "Executing: curl curl https://cdn.teleport.dev/install-v${TELEPORT_VERSION}.sh" curl https://cdn.teleport.dev/install-v${TELEPORT_VERSION}.sh echo "Execute downloaded script" ./install-v${TELEPORT_VERSION}.sh ${TELEPORT_VERSION} ${TELEPORT_EDITION} else echo "Error: TELEPORT_VERSION and TELEPORT_EDITION environment variables must be set." 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 "Environment file not found at /environment/.dev.env" fi # Set the git user and email git config --global user.name $GIT_USER git config --global user.email $GIT_EMAIL # Get the hostname of the machine HOSTNAME=$(hostname) # # File path # CONFIG_FILE="/etc/teleport.yaml" # # Edit the teleport.yaml file to update the nodename # sed -i "s/^ nodename:.*/ nodename: $HOSTNAME/" "$CONFIG_FILE" ## If teleport token is set, join the server if [ -n "$TELEPORT_TOKEN" ]; then teleport configure --roles=node --token=$TELEPORT_TOKEN --proxy=$TELEPORT_URL -o file fi nohup teleport start & # Start the application with pm2 exec pm2-runtime "yarn start:dev"