build(pbls): M9 收口——补齐 8c 模块 wwwroot 挂载步骤与应用侧可达性门禁 + 生成产物软链排除
- build.sh 新增「8c. 模块 wwwroot 挂载」:对所有含 wwwroot/ 的 pbl_* 模块执行
ln -sfn "${mod_dir}/wwwroot" "${APP_DIR}/wwwroot/${mod_name}",并以应用侧路径
find -L 实测页面壳数=12 作为门禁(不符即 die 终止部署),响应 QC 退回意见 #1/#2
(生成步骤已接入但可达链路断在挂载环节)
- .gitignore 排除构建期生成的模块 wwwroot 软链(git 中软链非目录,模式不带结尾斜杠),
并显式反排除应用仓自带的 wwwroot/pbl_overlay/(其 .js 为跟踪文件)
- 选择性 git add:仅 .gitignore 与 build.sh 两个文件,未使用 git add -A、未 add wwwroot/
- 自检:bash -n build.sh rc=0;gen_overlay_pages.py --check rc=0(打印生成+挂载两项均已接入)
This commit is contained in:
parent
1722b560c4
commit
8ac2694eee
5
.gitignore
vendored
5
.gitignore
vendored
@ -10,3 +10,8 @@ dist/
|
||||
build/
|
||||
.venv/
|
||||
venv/
|
||||
# build.sh「8c. 模块 wwwroot 挂载」生成的模块前端软链(构建产物,不入库)。
|
||||
# 注意:软链条目在 git 里不是目录,模式不能带结尾斜杠(wwwroot/pbl_*/ 匹配不到软链)。
|
||||
# 应用仓自带的 wwwroot/pbl_overlay/(pbl_overlay.js 为跟踪文件)仍保持跟踪,故显式反排除。
|
||||
wwwroot/pbl_*
|
||||
!wwwroot/pbl_overlay/
|
||||
|
||||
38
build.sh
38
build.sh
@ -113,7 +113,9 @@ done
|
||||
# ---- 8b. M9 覆盖层页面壳生成(构建产物,不入库)+ 一致性门禁 ----
|
||||
# 页面壳由 pbl_scense_ext 的生成器产出;产物目录 wwwroot/pbl_overlay/ 在模块仓
|
||||
# .gitignore 中被排除,因此必须在构建期生成,否则新克隆/新部署环境该目录为空、
|
||||
# /pbl_overlay/<key>.ui 导航全量 404。位置:模块安装之后、模块 wwwroot 软链之前。
|
||||
# /pbl_overlay/<key>.ui 导航全量 404。位置:模块安装之后、模块 wwwroot 软链(紧随其后的
|
||||
# 「8c. 模块 wwwroot 挂载」段)之前——生成物落在模块仓,必须再经 8c 挂载到应用 wwwroot
|
||||
# 才能在应用侧 URL /pbl_scense_ext/pbl_overlay/<key>.ui 上取到。
|
||||
OVERLAY_GEN="${WS_DIR}/modules/pbl_scense_ext/scripts/gen_overlay_pages.py"
|
||||
[ -f "${OVERLAY_GEN}" ] || die "缺少覆盖层页面壳生成器: ${OVERLAY_GEN}(modules/pbl_scense_ext 未就位)"
|
||||
log "生成 PBL 覆盖层页面壳: ${OVERLAY_GEN}"
|
||||
@ -132,6 +134,40 @@ if [ "${CHK_RC}" -ne 0 ]; then
|
||||
fi
|
||||
log "覆盖层页面壳生成 + 门禁校验通过(12 个页面壳 / i18n key 一致)"
|
||||
|
||||
# ---- 8c. 模块 wwwroot 挂载(软链)+ 应用侧可达性门禁(QC 退回意见 #1/#2)----
|
||||
# 上一版只做了 8b「生成」,生成物落在模块仓 modules/<m>/wwwroot/ 下,但本脚本从未把
|
||||
# 模块 wwwroot 挂进应用 wwwroot —— 应用 website.root=wwwroot 只指向应用自身目录,
|
||||
# 因此 build.sh 跑完后应用侧依然取不到 /pbl_scense_ext/pbl_overlay/<key>.ui(可达链路
|
||||
# 断在挂载环节,全量 404 并未消除)。此处按 web-application-spec「挂载模块 9 步流程」
|
||||
# 第 5 步(wwwroot 软链,非 cp,保持与模块仓单一副本同步)补齐,并立即以应用侧路径
|
||||
# 实测 12 个页面壳数量作为门禁,rc≠0 终止部署。
|
||||
LINKED_MODULES=""
|
||||
for mod_dir in "${WS_DIR}"/modules/pbl_*; do
|
||||
[ -d "${mod_dir}/wwwroot" ] || continue
|
||||
mod_name="$(basename "${mod_dir}")"
|
||||
www_link="${APP_DIR}/wwwroot/${mod_name}"
|
||||
# 已存在但不是软链(应用仓自带同名真实目录)时不覆盖,直接终止让人工处置,
|
||||
# 避免 ln -sfn 把软链建进既有目录里、或静默删掉应用仓跟踪文件。
|
||||
if [ -e "${www_link}" ] && [ ! -L "${www_link}" ]; then
|
||||
die "wwwroot 挂载冲突:${www_link} 已存在且不是软链(应用仓自带目录?),请人工处置后重试"
|
||||
fi
|
||||
ln -sfn "${mod_dir}/wwwroot" "${www_link}"
|
||||
LINKED_MODULES="${LINKED_MODULES} ${mod_name}"
|
||||
done
|
||||
[ -n "${LINKED_MODULES}" ] || die "未发现任何含 wwwroot/ 的 pbl_* 模块,模块 wwwroot 挂载为空"
|
||||
log "模块 wwwroot 软链挂载完成:${LINKED_MODULES}"
|
||||
|
||||
# 挂载后应用侧可达性门禁:覆盖层页面壳必须能通过应用 wwwroot 路径取到
|
||||
APP_OVERLAY_DIR="${APP_DIR}/wwwroot/pbl_scense_ext/pbl_overlay"
|
||||
APP_UI_COUNT=0
|
||||
if [ -d "${APP_OVERLAY_DIR}" ]; then
|
||||
APP_UI_COUNT="$(find -L "${APP_OVERLAY_DIR}" -maxdepth 1 -name '*.ui' | wc -l | tr -d '[:space:]')"
|
||||
fi
|
||||
if [ "${APP_UI_COUNT}" != "12" ]; then
|
||||
die "应用侧覆盖层页面壳应为 12 个,实际 ${APP_UI_COUNT}(${APP_OVERLAY_DIR}):模块 wwwroot 未挂载成功或生成器未产出,/pbl_scense_ext/pbl_overlay/<key>.ui 将全量 404,终止部署"
|
||||
fi
|
||||
log "应用侧可达性核验通过: ${APP_OVERLAY_DIR}/*.ui = ${APP_UI_COUNT}"
|
||||
|
||||
# ---- 9. 语法验证:全部 .py 跑 py_compile(QC 退回意见 #16)----
|
||||
log "py_compile 全量语法验证"
|
||||
FAIL_SYNTAX=0
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user