加固既有生产部署流程(07-27-yang-jun-reimbursement-readiness)
这个提交包含在:
+27
@@ -0,0 +1,27 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
fail() {
|
||||
echo "[remote-preflight][ERROR] $1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
for key in REMOTE_DIR REMOTE_ENV_FILE COMPOSE_FILE POSTGRES_DATA_DIR STORAGE_HOST_DIR DEPLOY_DATA_MODE SYNC_ENV; do
|
||||
[[ -n "${!key:-}" ]] || fail "缺少 $key"
|
||||
done
|
||||
|
||||
if [[ "$DEPLOY_DATA_MODE" == "existing" ]]; then
|
||||
[[ -d "$REMOTE_DIR" \
|
||||
&& -f "$REMOTE_DIR/server/package.json" \
|
||||
&& -f "$REMOTE_DIR/$COMPOSE_FILE" ]] \
|
||||
|| fail "existing 模式要求 REMOTE_DIR 是现存仓库根目录"
|
||||
[[ -f "$POSTGRES_DATA_DIR/PG_VERSION" && -d "$STORAGE_HOST_DIR" ]] \
|
||||
|| fail "existing 模式的数据目录合同未满足"
|
||||
fi
|
||||
|
||||
if [[ "$SYNC_ENV" == "0" ]]; then
|
||||
[[ -f "$REMOTE_ENV_FILE" && ! -L "$REMOTE_ENV_FILE" ]] \
|
||||
|| fail "SYNC_ENV=0 要求同步前已有普通远端 .env 文件"
|
||||
fi
|
||||
|
||||
echo "[remote-preflight][PASS] 远端仓库、环境与数据合同通过"
|
||||
在新工单中引用
屏蔽一个用户