fix: 补齐候选诊断环境与证据保护(09-06-release-gate-integrity)

这个提交包含在:
2026-09-08 07:21:19 +08:00
父节点 66f25b1fa8
当前提交 99167127b5
共修改 33 个文件,包含 2915 行新增和 67 行删除
+67
查看文件
@@ -0,0 +1,67 @@
#!/usr/bin/env bash
PWA_FIXTURE_ROOT=""
pwa_build_candidate() {
local client_dir="$1"
local label="$2"
local build_sha="$3"
local output_dir="$4"
local log_file="$5"
local build_status=0
(
cd "$client_dir"
VITE_BUILD_SHA="$build_sha" npx vite build --outDir "$output_dir" --emptyOutDir
) > "$log_file" 2>&1 || build_status="$?"
if [[ "$build_status" -ne 0 ]]; then
echo "[pwa-cross-version][ERROR] build=${label} exit=${build_status}" >&2
return "$build_status"
fi
if [[ ! -f "$output_dir/index.html" || ! -f "$output_dir/sw.js" ]]; then
echo "[pwa-cross-version][ERROR] build=${label} required_artifact_missing" >&2
return 1
fi
echo "[pwa-cross-version] build=${label} status=PASS"
}
pwa_prepare_fixture() {
local client_dir="$1"
local report_dir="$2"
if [[ -n "$PWA_FIXTURE_ROOT" ]]; then
echo "[pwa-cross-version][ERROR] fixture_already_owned" >&2
return 1
fi
mkdir -p "$report_dir" || return "$?"
PWA_FIXTURE_ROOT="$(mktemp -d "${TMPDIR:-/tmp}/hyb-pwa-cross-version.XXXXXX")" || return "$?"
PWA_BUILD_A_DIR="$PWA_FIXTURE_ROOT/build-a"
PWA_BUILD_B_DIR="$PWA_FIXTURE_ROOT/build-b"
PWA_BUILD_A_SHA="111111111111"
PWA_BUILD_B_SHA="222222222222"
pwa_build_candidate "$client_dir" A "$PWA_BUILD_A_SHA" "$PWA_BUILD_A_DIR" "$report_dir/pwa-build-a.log" || return "$?"
pwa_build_candidate "$client_dir" B "$PWA_BUILD_B_SHA" "$PWA_BUILD_B_DIR" "$report_dir/pwa-build-b.log" || return "$?"
}
pwa_with_fixture() {
if [[ -z "$PWA_FIXTURE_ROOT" || ! -f "${PWA_BUILD_A_DIR:-}/sw.js" || ! -f "${PWA_BUILD_B_DIR:-}/sw.js" ]]; then
echo "[pwa-cross-version][ERROR] fixture_not_ready" >&2
return 1
fi
PWA_BUILD_A_DIR="$PWA_BUILD_A_DIR" PWA_BUILD_B_DIR="$PWA_BUILD_B_DIR" \
PWA_BUILD_A_SHA="$PWA_BUILD_A_SHA" PWA_BUILD_B_SHA="$PWA_BUILD_B_SHA" "$@"
}
pwa_cleanup_fixture() {
if [[ -z "$PWA_FIXTURE_ROOT" ]]; then
return 0
fi
if [[ "$(basename "$PWA_FIXTURE_ROOT")" != hyb-pwa-cross-version.* ]]; then
echo "[pwa-cross-version][ERROR] fixture_cleanup_refused" >&2
return 1
fi
if [[ -d "$PWA_FIXTURE_ROOT" ]]; then
find "$PWA_FIXTURE_ROOT" -xdev -depth -delete || return "$?"
fi
PWA_FIXTURE_ROOT=""
}