#!/bin/bash # Deploy staging environment for cmc-sales # Variables (edit these as needed) SERVER="cmc" REPO="code.springupsoftware.com/cmc/cmc-sales.git" BRANCH="stg" STAGING_DIR="cmc-sales-staging" # SSH and deploy ssh $SERVER << 'ENDSSH' set -e # Clone or update staging branch if [ -d "$STAGING_DIR" ]; then cd "$STAGING_DIR" git fetch origin git checkout $BRANCH git pull origin $BRANCH else git clone -b $BRANCH $REPO $STAGING_DIR cd "$STAGING_DIR" fi # Create .env file for go-app if it doesn't exist ENV_PATH="/home/cmc/$STAGING_DIR/go-app/.env" if [ ! -f "$ENV_PATH" ]; then cat > "$ENV_PATH" <<'ENVEOF' # Environment variables for Go app mail configuration SMTP_HOST="host.docker.internal" SMTP_PORT=1025 SMTP_USER="" SMTP_PASS="" SMTP_FROM="CMC Sales " ENVEOF fi # Start docker compose (edit file name if needed) docker compose -f docker-compose.yml -f docker-compose.stg.yml up -d # Check containers docker compose ps # Create sync script for staging dirs cat > /home/cmc/sync_prod_to_staging.sh <<'EOF' #!/bin/bash rsync -a --delete /mnt/vault/pdf/ /home/cmc/cmc-sales-staging/app/webroot/pdf/ rsync -a --delete /mnt/vault/attachments_files/ /home/cmc/cmc-sales-staging/app/webroot/attachments_files/ rsync -a --delete /mnt/vault/emails/ /home/cmc/cmc-sales-staging/vault/emails/ rsync -a --delete /mnt/vault/vaultmsgs/ /home/cmc/cmc-sales-staging/vault/vaultmsgs/ EOF chmod +x /home/cmc/sync_prod_to_staging.sh # Add cron job if not present (crontab -l 2>/dev/null | grep -q '/home/cmc/sync_prod_to_staging.sh') || \ (crontab -l 2>/dev/null; echo '0 3 * * * /home/cmc/sync_prod_to_staging.sh') | crontab - ENDSSH