All checks were successful
Deploy production / deploy (push) Successful in 20m9s
39 lines
2.1 KiB
Bash
Executable File
39 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Update deployment tooling and clean up without building/deploying application code.
|
|
set -Eeuo pipefail
|
|
[[ ${EUID} -eq 0 ]] || { echo 'Run this installer with sudo.' >&2; exit 1; }
|
|
SOURCE_DIR="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
|
|
bash -n "${SOURCE_DIR}/eusrr-deploy"
|
|
# SCP can leave the source group-writable. Validate the exact protected copy
|
|
# that will be installed; logrotate may return zero even when it ignores a file.
|
|
validation_dir="$(mktemp -d /tmp/eusrr-logrotate-check.XXXXXXXX)"
|
|
cleanup_validation() {
|
|
rm -f -- "${validation_dir}/logrotate.conf" "${validation_dir}/validation.log"
|
|
rmdir -- "${validation_dir}"
|
|
}
|
|
trap cleanup_validation EXIT
|
|
install -o root -g root -m 0644 "${SOURCE_DIR}/logrotate.conf" "${validation_dir}/logrotate.conf"
|
|
if ! LC_ALL=C logrotate --debug --state /dev/null "${validation_dir}/logrotate.conf" \
|
|
>"${validation_dir}/validation.log" 2>&1 ||
|
|
grep -Eq '^error:|Ignoring .* because' "${validation_dir}/validation.log"; then
|
|
cat "${validation_dir}/validation.log" >&2
|
|
exit 1
|
|
fi
|
|
exec 9>/run/lock/eusrr-deploy.lock
|
|
flock -n 9 || { echo 'A deployment is running. Retry after it finishes.' >&2; exit 3; }
|
|
backup="/var/lib/eusrr-deploy/tooling-backup-$(date -u +%Y%m%dT%H%M%SZ)"
|
|
install -d -o root -g root -m 0700 "${backup}"
|
|
cp -a /usr/local/sbin/eusrr-deploy "${backup}/eusrr-deploy"
|
|
install -o root -g root -m 0755 "${SOURCE_DIR}/eusrr-deploy" /usr/local/sbin/eusrr-deploy.new
|
|
mv -Tf /usr/local/sbin/eusrr-deploy.new /usr/local/sbin/eusrr-deploy
|
|
install -o root -g root -m 0644 "${validation_dir}/logrotate.conf" /etc/logrotate.d/eusrr-deploy
|
|
/usr/local/sbin/eusrr-deploy --self-test
|
|
flock -u 9
|
|
exec 9>&-
|
|
/usr/local/sbin/eusrr-deploy --maintenance
|
|
systemctl is-active eusrr-backend@"$(cat /var/lib/eusrr-deploy/active-slot)".service \
|
|
eusrr-frontend@"$(cat /var/lib/eusrr-deploy/active-slot)".service \
|
|
eusrr-celery-worker@"$(cat /var/lib/eusrr-deploy/active-slot)".service \
|
|
eusrr-celery-beat@"$(cat /var/lib/eusrr-deploy/active-slot)".service
|
|
printf 'Deployment tooling updated. Application was not redeployed. Script backup: %s\n' "${backup}"
|