43 lines
1.5 KiB
Bash
43 lines
1.5 KiB
Bash
|
#!/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
|