Files
Genarrative/scripts/deploy/preview-deployer-install.sh
kdletters 41874ab391
Project CI / Repository checks (push) Successful in 1m16s
Project CI / Frontend tests (push) Successful in 3m1s
Project CI / Backend tests (push) Successful in 4m2s
Project CI / Native shell tests (push) Successful in 17m2s
新增内网容器预览部署控制面
新增分支与指定提交的预览部署 SPA 和 Jenkins 代理服务
新增多实例 Docker 预览流水线、端口租约、实时健康状态和卸载能力
新增 /build 内网路由、systemd 部署资产和运维文档
修正容器 Nginx 健康检查探针
2026-08-15 17:18:10 +08:00

41 lines
2.0 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
INSTALL_ROOT="${GENARRATIVE_PREVIEW_DEPLOYER_INSTALL_ROOT:-/opt/genarrative/preview-deployer}"
STATE_ROOT="${GENARRATIVE_PREVIEW_DEPLOYER_STATE_ROOT:-/var/lib/genarrative/preview-deployer}"
ENV_FILE="${GENARRATIVE_PREVIEW_DEPLOYER_ENV_FILE:-/etc/genarrative/preview-deployer.env}"
UNIT_FILE="${GENARRATIVE_PREVIEW_DEPLOYER_UNIT_FILE:-/etc/systemd/system/genarrative-preview-deployer.service}"
if [[ "${EUID}" -ne 0 ]]; then
echo "[preview-deployer-install] 必须以 root 执行安装。" >&2
exit 1
fi
if [[ ! -f "${ENV_FILE}" ]]; then
echo "[preview-deployer-install] 缺少私密配置 ${ENV_FILE};请从 deploy/env/preview-deployer.env.example 创建并填入 Jenkins Token 和控制面口令。" >&2
exit 1
fi
cd "${ROOT_DIR}"
PREVIEW_DEPLOYER_WEB_BASE=/build/ npm run preview-deployer:web:build
cargo build -p preview-deployer-server --release --manifest-path server-rs/Cargo.toml
install -d -o jenkins -g jenkins -m 0750 "${INSTALL_ROOT}" "${INSTALL_ROOT}/web"
install -d -o jenkins -g jenkins -m 0700 "${STATE_ROOT}"
install -o root -g root -m 0755 \
server-rs/target/release/preview-deployer-server \
"${INSTALL_ROOT}/preview-deployer-server"
find "${INSTALL_ROOT}/web" -mindepth 1 -delete
cp -a apps/preview-deployer-web/dist/. "${INSTALL_ROOT}/web/"
chown -R root:root "${INSTALL_ROOT}/web"
find "${INSTALL_ROOT}/web" -type d -exec chmod 0755 {} +
find "${INSTALL_ROOT}/web" -type f -exec chmod 0644 {} +
install -o root -g root -m 0644 \
deploy/systemd/genarrative-preview-deployer.service "${UNIT_FILE}"
systemctl daemon-reload
systemctl enable --now genarrative-preview-deployer.service
curl --fail --silent --show-error --max-time 5 \
--header 'Host: 192.168.35.82' http://127.0.0.1:8410/healthz >/dev/null
echo "[preview-deployer-install] 控制服务已安装;请将 deploy/nginx/genarrative-preview-deployer-lan.conf 嵌入内网默认 server 后执行 nginx -t && systemctl reload nginx。"