- T2:localePath 先归一 zh 再拼前缀(Header/CommandPalette/
BaseLayout 三处 /en/en/ 同源病根一刀),返回值统一尾斜杠;
BaseLayout 自指 canonical 全量 35 页;E2E 新增 en canonical
自指断言(33→34)
- T3:content-lint.mjs 零依赖三检(断链 FAIL/缺图 FAIL/zh-en
配对 WARN;CONTENT_LINT 逃生门;photos-originals 叠加层与
/admin 单语两误报已修);prod-smoke.sh 三断言(robots 未落明
确 FAIL 不静默);build.sh 守卫行挂载(smoke 对 staging 首版
容忍,T1 robots 上线后转硬门,触发条件注释在案)
- tasks.md verify 字面量 33→34 联动同步(6 处)
车道:op-gitea(verify 六条实录);收编验收:E2E 34/34+产物零
/en/en/+lint 0/0/0 实跑复现
验证: node tests/e2e.mjs 34/34 PASS;! grep -r /en/en/ dist/;
content-lint 三检 0 违例;bash -n+test -x 过
Spec: 2026-10-26_blog-5f
Co-authored-by: GLM-5.3
26 lines
1.2 KiB
Bash
Executable File
26 lines
1.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# 生产冒烟(T3):部署后三断言——robots 带 Sitemap / sitemap-index 可达 / 首页无 x-robots-tag
|
||
# 用法:./prod-smoke.sh [BASE_URL](默认 https://wait4x.online;构建机对 staging 传 http://127.0.0.1:18743)
|
||
# 任一断言失败 exit 1;robots 缺失常见于 SEO 解封前(T1 未落),会明确报 FAIL 而非静默
|
||
set -u
|
||
BASE="${1:-${SMOKE_BASE:-https://wait4x.online}}"
|
||
fail=0
|
||
|
||
robots="$(curl -fsS --max-time 15 "${BASE}/robots.txt" 2>/dev/null)" \
|
||
&& grep -q 'Sitemap:' <<<"$robots" \
|
||
&& echo "[smoke] robots.txt 200 含 Sitemap ✓" \
|
||
|| { echo "[smoke] FAIL robots.txt 缺失/无 Sitemap 行:${BASE}/robots.txt"; fail=1; }
|
||
|
||
curl -fsS --max-time 15 -o /dev/null "${BASE}/sitemap-index.xml" \
|
||
&& echo "[smoke] sitemap-index 200 ✓" \
|
||
|| { echo "[smoke] FAIL sitemap-index 不可达:${BASE}/sitemap-index.xml"; fail=1; }
|
||
|
||
# x-robots-tag 出现即 FAIL(noindex 头会废掉整站收录,SEO 解封的反面)
|
||
if curl -fsS --max-time 15 -I "${BASE}/" | grep -qi 'x-robots-tag'; then
|
||
echo "[smoke] FAIL 首页响应头含 x-robots-tag"; fail=1
|
||
else
|
||
echo "[smoke] 首页无 x-robots-tag ✓"
|
||
fi
|
||
|
||
exit $fail
|