完成资源管理阶段七验收
Project CI / Repository checks (pull_request) Successful in 1m1s
Project CI / Backend tests (pull_request) Successful in 3m43s
Project CI / Native shell tests (pull_request) Successful in 10m47s
Project CI / Frontend tests (pull_request) Failing after 1m41s

补齐视频与资源读取失败空态测试
完成全量前后端和 Rust CI 验收
修复 macOS/BSD 跨平台门禁与测试隔离
更新阶段七验收与共享项目记忆
This commit is contained in:
2026-08-04 10:06:12 +08:00
parent df4e61a208
commit 80bcb4ba0e
26 changed files with 233 additions and 45 deletions
+15 -2
View File
@@ -7,6 +7,19 @@ MAINTENANCE_PAGE_FILE="${GENARRATIVE_MAINTENANCE_PAGE_FILE:-/var/lib/genarrative
PAGE_SOURCE=""
REASON_PARTS=()
replace_file_atomically() {
local source_file="$1"
local target_file="$2"
if [[ -d "${target_file}" && ! -L "${target_file}" ]]; then
echo "[maintenance] 原子替换目标不能是目录: ${target_file}" >&2
exit 1
fi
# 源文件与目标文件位于同一目录,POSIX rename 语义即可保证原子替换。
# 不使用 GNU mv 专属的 -T,确保 macOS/BSD 本地门禁也能执行。
mv -f "${source_file}" "${target_file}"
}
while [[ $# -gt 0 ]]; do
case "$1" in
--page-file)
@@ -41,7 +54,7 @@ if [[ -n "${PAGE_SOURCE}" ]]; then
page_temp="$(mktemp "${MAINTENANCE_PAGE_FILE}.tmp.XXXXXX")"
trap 'rm -f "${page_temp:-}" "${marker_temp:-}"' EXIT
install -m 0644 -- "${PAGE_SOURCE}" "${page_temp}"
mv -fT -- "${page_temp}" "${MAINTENANCE_PAGE_FILE}"
replace_file_atomically "${page_temp}" "${MAINTENANCE_PAGE_FILE}"
page_temp=""
echo "[maintenance] 已安装本次运行态公告页: ${MAINTENANCE_PAGE_FILE}"
elif [[ ! -f "${MAINTENANCE_FILE}" && ( -e "${MAINTENANCE_PAGE_FILE}" || -L "${MAINTENANCE_PAGE_FILE}" ) ]]; then
@@ -55,7 +68,7 @@ marker_temp="$(mktemp "${MAINTENANCE_FILE}.tmp.XXXXXX")"
} >"${marker_temp}"
chmod 0644 "${marker_temp}"
mv -fT -- "${marker_temp}" "${MAINTENANCE_FILE}"
replace_file_atomically "${marker_temp}" "${MAINTENANCE_FILE}"
marker_temp=""
trap - EXIT
echo "[maintenance] 已进入维护模式: ${MAINTENANCE_FILE}"
+9 -3
View File
@@ -892,7 +892,9 @@ ensure_default_worker_service() {
return 1
fi
mapfile -t services < <(list_worker_services "${pattern}")
while IFS= read -r service; do
services+=("${service}")
done < <(list_worker_services "${pattern}")
if [[ "${#services[@]}" -gt 0 ]]; then
return 0
fi
@@ -1033,7 +1035,9 @@ restart_worker_services() {
fi
ensure_default_worker_service "${pattern}"
mapfile -t services < <(list_worker_services "${pattern}")
while IFS= read -r service; do
services+=("${service}")
done < <(list_worker_services "${pattern}")
if [[ "${#services[@]}" -eq 0 ]]; then
echo "[production-api-deploy] 未发现已加载的外部生成 worker 单元: ${pattern}" >&2
return 1
@@ -1052,7 +1056,9 @@ wait_for_worker_services() {
return 0
fi
mapfile -t services < <(list_worker_services "${pattern}")
while IFS= read -r service; do
services+=("${service}")
done < <(list_worker_services "${pattern}")
if [[ "${#services[@]}" -eq 0 ]]; then
echo "[production-api-deploy] 外部生成 worker 单元不存在,发布失败: ${pattern}" >&2
return 1