加固部署隔离与备份来源契约(07-26-internal-ops-recovery-baseline)

这个提交包含在:
2026-07-27 06:13:02 +08:00
父节点 130518f471
当前提交 23342035ee
共修改 16 个文件,包含 304 行新增和 80 行删除
+6 -1
查看文件
@@ -56,11 +56,16 @@ if ! command -v docker >/dev/null 2>&1; then
exit 1
fi
DB_CONTAINER="${DB_CONTAINER:-hyb-oa-trialrun-db}"
DB_CONTAINER="${DB_CONTAINER:-}"
POSTGRES_DB="${POSTGRES_DB:-}"
POSTGRES_USER="${POSTGRES_USER:-}"
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-}"
if [[ -z "$DB_CONTAINER" ]]; then
echo "[ERR] Using docker fallback requires explicit DB_CONTAINER" >&2
exit 1
fi
if [[ -z "$POSTGRES_DB" || -z "$POSTGRES_USER" || -z "$POSTGRES_PASSWORD" ]]; then
echo "[ERR] Using docker fallback requires POSTGRES_DB/POSTGRES_USER/POSTGRES_PASSWORD" >&2
exit 1
+2 -8
查看文件
@@ -16,14 +16,8 @@ fi
STORAGE_DIR_HOST="${STORAGE_DIR_HOST:-}"
if [[ -z "$STORAGE_DIR_HOST" ]]; then
if [[ -n "${STORAGE_DIR:-}" && -d "${STORAGE_DIR:-}" ]]; then
STORAGE_DIR_HOST="$STORAGE_DIR"
elif [[ -d "$ROOT_DIR/deploy/trialrun/data/storage" ]]; then
STORAGE_DIR_HOST="$ROOT_DIR/deploy/trialrun/data/storage"
else
echo "[ERR] storage dir not found; set STORAGE_DIR_HOST" >&2
exit 1
fi
echo "[ERR] STORAGE_DIR_HOST is required; implicit storage paths are forbidden" >&2
exit 1
fi
if [[ ! -d "$STORAGE_DIR_HOST" ]]; then
+44
查看文件
@@ -41,6 +41,50 @@ mkdir -p "$SOURCE_STORAGE/nested" "$NONEMPTY_STORAGE" "$BACKUP_ROOT"
printf 'synthetic attachment for restore drill\n' >"$SOURCE_STORAGE/nested/marker.txt"
printf 'must not be overwritten\n' >"$NONEMPTY_STORAGE/existing.txt"
if env -u STORAGE_DIR_HOST -u STORAGE_DIR \
OUT_FILE="$DRILL_DIR/implicit-storage.tar.gz" \
"$ROOT_DIR/scripts/backup-storage.sh" >/dev/null 2>&1; then
echo "[ERR] implicit storage backup source was accepted" >&2
exit 1
fi
if env -u DB_CONTAINER DB_TOOL_MODE=docker DATABASE_URL=postgresql://invalid \
POSTGRES_DB=invalid POSTGRES_USER=invalid POSTGRES_PASSWORD=invalid \
OUT_FILE="$DRILL_DIR/implicit-db.dump" \
"$ROOT_DIR/scripts/backup-db.sh" >/dev/null 2>&1; then
echo "[ERR] implicit DB container was accepted" >&2
exit 1
fi
if command -v node >/dev/null 2>&1; then
MUTATED_PORT_COMPOSE="$DRILL_DIR/docker-compose-db-port.yml"
sed '/ db:/a\ ports:\n - "5432:5432"' \
"$ROOT_DIR/deploy/trialrun/docker-compose.yml" >"$MUTATED_PORT_COMPOSE"
if ENV_CONTRACT_COMPOSE_PATH="$MUTATED_PORT_COMPOSE" \
node "$ROOT_DIR/deploy/trialrun/validate-env-contract.js" >/dev/null 2>&1; then
echo "[ERR] unsafe DB port publication passed the contract" >&2
exit 1
fi
MUTATED_NAME_COMPOSE="$DRILL_DIR/docker-compose-fixed-name.yml"
sed '/ db:/a\ container_name: forbidden-fixed-name' \
"$ROOT_DIR/deploy/trialrun/docker-compose.yml" >"$MUTATED_NAME_COMPOSE"
if ENV_CONTRACT_COMPOSE_PATH="$MUTATED_NAME_COMPOSE" \
node "$ROOT_DIR/deploy/trialrun/validate-env-contract.js" >/dev/null 2>&1; then
echo "[ERR] fixed Compose container name passed the contract" >&2
exit 1
fi
MUTATED_DEPLOY="$DRILL_DIR/deploy-without-project.sh"
sed 's/-p "$COMPOSE_PROJECT_NAME" //g' \
"$ROOT_DIR/deploy/trialrun/deploy.sh" >"$MUTATED_DEPLOY"
if ENV_CONTRACT_DEPLOY_SCRIPT_PATH="$MUTATED_DEPLOY" \
node "$ROOT_DIR/deploy/trialrun/validate-env-contract.js" >/dev/null 2>&1; then
echo "[ERR] deployment without an explicit Compose project passed the contract" >&2
exit 1
fi
fi
docker run -d --rm --name "$CONTAINER_NAME" \
-e "POSTGRES_USER=$POSTGRES_USER" \
-e "POSTGRES_PASSWORD=$POSTGRES_PASSWORD" \
+6 -1
查看文件
@@ -83,11 +83,16 @@ if ! command -v docker >/dev/null 2>&1; then
exit 1
fi
DB_CONTAINER="${DB_CONTAINER:-hyb-oa-trialrun-db}"
DB_CONTAINER="${DB_CONTAINER:-}"
POSTGRES_DB="${POSTGRES_DB:-}"
POSTGRES_USER="${POSTGRES_USER:-}"
POSTGRES_PASSWORD="${POSTGRES_PASSWORD:-}"
if [[ -z "$DB_CONTAINER" ]]; then
echo "[ERR] Using docker fallback requires explicit DB_CONTAINER" >&2
exit 1
fi
if [[ -z "$POSTGRES_DB" || -z "$POSTGRES_USER" || -z "$POSTGRES_PASSWORD" ]]; then
echo "[ERR] Using docker fallback requires POSTGRES_DB/POSTGRES_USER/POSTGRES_PASSWORD" >&2
exit 1