Repository navigation
Expand file tree
/
Copy pathdeploy.sh
More file actions
executable file
·66 lines (54 loc) · 2.19 KB
/
Copy pathdeploy.sh
File metadata and controls
executable file
·66 lines (54 loc) · 2.19 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
SYSTEMD_DIR="/etc/systemd/system"
WEB_UNIT_NAME="ppstudio-web.service"
WORKER_UNIT_NAME="ppstudio-email-worker.service"
SYSUSERS_FILE="ppstudio.sysusers.conf"
TMPFILES_FILE="ppstudio.tmpfiles.conf"
if [[ "${EUID}" -ne 0 ]]; then
echo "Spusť deploy.sh jako root, aby mohl zapsat do ${SYSTEMD_DIR}." >&2
exit 1
fi
install_unit() {
local source_file="$1"
local target_file="$2"
install -m 0644 "${source_file}" "${target_file}"
}
main() {
if [[ ! -f "${REPO_DIR}/package.json" ]]; then
echo "Nenašel jsem root projektu v ${REPO_DIR}." >&2
exit 1
fi
# První provisioning ještě nemá verzovaný release. Zachováme proto dosavadní
# checkout jako dočasný cíl; první release.sh ho nahradí adresářem v releases/.
if [[ ! -e "${REPO_DIR}/current" ]]; then
ln -s "${REPO_DIR}" "${REPO_DIR}/current"
fi
install -d -m 0755 /etc/sysusers.d /etc/tmpfiles.d
install -m 0644 "${REPO_DIR}/deploy/systemd/${SYSUSERS_FILE}" "/etc/sysusers.d/${SYSUSERS_FILE}"
systemd-sysusers "/etc/sysusers.d/${SYSUSERS_FILE}"
install -m 0644 "${REPO_DIR}/deploy/systemd/${TMPFILES_FILE}" "/etc/tmpfiles.d/${TMPFILES_FILE}"
systemd-tmpfiles --create "/etc/tmpfiles.d/${TMPFILES_FILE}"
# První provisioning může dočasně spouštět checkout přes current. Runtime
# účet proto dostane jen čtení/traversal; tajný env není čitelný ostatními.
chgrp -R ppstudio "${REPO_DIR}"
chmod -R g+rX,o-rwx "${REPO_DIR}"
if [[ -d "${REPO_DIR}/.next/cache" ]]; then
chmod -R g+rwX "${REPO_DIR}/.next/cache"
fi
if [[ -f "${REPO_DIR}/.env" ]]; then
chgrp ppstudio "${REPO_DIR}/.env"
chmod 0640 "${REPO_DIR}/.env"
fi
install_unit "${REPO_DIR}/deploy/systemd/${WEB_UNIT_NAME}" "${SYSTEMD_DIR}/${WEB_UNIT_NAME}"
install_unit "${REPO_DIR}/deploy/systemd/${WORKER_UNIT_NAME}" "${SYSTEMD_DIR}/${WORKER_UNIT_NAME}"
systemctl daemon-reload
systemctl enable --now "${WEB_UNIT_NAME%.service}"
systemctl enable --now "${WORKER_UNIT_NAME%.service}"
echo "Nasazeno:"
echo " - ${WEB_UNIT_NAME}"
echo " - ${WORKER_UNIT_NAME}"
}
main "$@"