#!/usr/bin/env bash set -e ### # FLOW ### # # if the private key variable is set, prepend "-i" to it # if the username variable is set, append the at sign to it # if either the deployment host or deployment path variables are not set, return an error # tarball the built website and scp it to the deployment host # ssh to the remote host, cd to the deployment path, and get the data path from .env file # then remove everything in the data path, untar the tarball and reload the server # finally remove the tarball, both from the remote host and locally (cleanup) # Check if the private key variable is set if [ ! -z "${SSH_PRIVATE_KEY}" ]; then SSH_PRIVATE_KEY="-i ${SSH_PRIVATE_KEY}" fi # Check if the username variable is set if [ ! -z "${SSH_USERNAME}" ]; then SSH_USERNAME="${SSH_USERNAME}@" fi # Check if either the deployment host or deployment path variables are not set if [ -z "${DEPLOYMENT_HOST}" ] || [ -z "${DEPLOYMENT_PATH}" ]; then echo "required variable DEPLOYMENT_HOST is not set" exit 1 fi tar -czf httpdocs.tgz -C public . scp -o StrictHostKeyChecking=no ${SSH_PRIVATE_KEY} httpdocs.tgz ${SSH_USERNAME}${DEPLOYMENT_HOST}:/tmp/httpdocs.tgz ssh -o StrictHostKeyChecking=no ${SSH_PRIVATE_KEY} ${SSH_USERNAME}${DEPLOYMENT_HOST} "DEPLOYMENT_PATH=$DEPLOYMENT_PATH bash" << 'EOF' cd ${DEPLOYMENT_PATH} DATAPATH=$(cat .env | grep "NGINX_DATA" | sed "s/NGINX_DATA=//g") rm -rf ${DATAPATH}/{*,.*} tar xf /tmp/httpdocs.tgz -C ${DATAPATH} docker compose restart rm -f /tmp/httpdocs.tgz EOF rm -f httpdocs.tgz