personal-site/cicd/scripts/deploy.sh
badbl0cks 1714225d00
Some checks failed
Build And Deploy / build-and-deploy (push) Has been cancelled
Add CI/CD build and deploy scripts, along with docker-compose, HAProxy config, and a certbot
merge hook. Set up env.example generation. Add doiuse dev dependency.
2026-02-04 16:11:51 -08:00

42 lines
1.2 KiB
Bash
Executable file

#!/bin/bash
#######################
# VARIABLES #
#######################
ROOT_DIR=$(dirname $(dirname $(dirname $(realpath $0))))
### NO EDITS BELOW THIS LINE ###
cd ${ROOT_DIR}
source .env
mkdir -p ${HOME}/.ssh
chmod 700 ${HOME}/.ssh
echo "${SSH_KEY}" > ${HOME}/.ssh/id_ed25519-${SSH_HOST//./_}
echo "${SSH_KNOWN_HOST}" > ${HOME}/.ssh/known_hosts-${SSH_HOST//./_}
chmod -R 600 ${HOME}/.ssh/
chmod 700 ${HOME}/.ssh
grep -q "Host ${SSH_HOST}" ${HOME}/.ssh/config || cat >> ${HOME}/.ssh/config <<EOF
Host ${SSH_HOST}
HostName ${SSH_HOST}
User ${SSH_USER}
Port ${SSH_PORT}
IdentityFile ${HOME}/.ssh/id_ed25519-${SSH_HOST//./_}
UserKnownHostsFile ${HOME}/.ssh/known_hosts-${SSH_HOST//./_}
StrictHostKeyChecking yes
ControlMaster auto
ControlPath ~/.ssh/control-%C
ControlPersist yes
ConnectionAttempts 3
ConnectTimeout 10
ServerAliveInterval 10
EOF
DOCKER_HOST=ssh://${SSH_HOST} docker load -i ${IMAGE_FILENAME}
ssh ${SSH_HOST} "mkdir -p /srv/${IMAGE_NAME#*/}/"
ssh ${SSH_HOST} "cd /srv/${IMAGE_NAME#*/}/ && docker compose down"
scp .env ${SSH_HOST}:/srv/${IMAGE_NAME#*/}/.env
cd deploy
scp -r . ${SSH_HOST}:/srv/${IMAGE_NAME#*/}/
ssh ${SSH_HOST} "cd /srv/${IMAGE_NAME#*/}/ && docker compose up -d"