#!/usr/bin/env bash ### # FLOW ### # # convert deployment paths (string) into array of strings # if path is not already set # if number of paths > 1 print the strings with corresponding index # get deployment path index from user # in every case (number of paths = 1 OR index left blank from user), index is 0 # if version is not already set # get version from user # if version is left balnk, version is "latest" # get deployment path from index X of deployments # ssh into deployment host # cd into deployment path # git pull last changes # set correct version in .env file # pull latest docker image and spin up containers # # Convert deployment paths into array ENVIRONMENTS=($DEPLOYMENT_PATHS) # Check if the DEPLOYMENT_PATH is not already set if [ -z "${DEPLOYMENT_PATH}" ]; then # Print and ask for deployment environment (if more than one) if [ "${#ENVIRONMENTS[@]}" -gt 1 ]; then for i in "${!ENVIRONMENTS[@]}"; do echo "$i: ${ENVIRONMENTS[$i]}" done read -p "Deployment environment: " DEPLOYMENT_ENVIRONMENT fi if [ -z "${DEPLOYMENT_ENVIRONMENT}" ]; then DEPLOYMENT_ENVIRONMENT=0 fi # Select correct path DEPLOYMENT_PATH="${ENVIRONMENTS[$DEPLOYMENT_ENVIRONMENT]}" fi # Check if the DEPLOYMENT_VERSION is not already set if [ -z "${DEPLOYMENT_VERSION}" ]; then # Ask for deployment version read -p "Version [latest]: " DEPLOYMENT_VERSION if [ -z "${DEPLOYMENT_VERSION}" ]; then DEPLOYMENT_VERSION=latest fi fi echo "${DEPLOYMENT_PATH}" echo "${DEPLOYMENT_VERSION}" ssh $DEPLOYMENT_HOST \ "cd ${DEPLOYMENT_PATH} && \ git pull && \ sed -i "s/VERSION=.*/VERSION=${DEPLOYMENT_VERSION}/" .env && \ docker compose pull && \ docker compose up -d"