feat(launch): 热力图与 webhook 发布闭环(T2/T3)

- T2 (op-artalk 车道):gitea heatmap 构建期拉取+fallback+空态三保险,
  53×7 灰阶格复用 tokens(亮暗自动),日界锚定 Asia/Shanghai,零 JS,
  zh/en 首页挂载;fallback 经死端点实测不破构建
- T3:webhook_receiver.py(HMAC 强制+main-only+构建锁)以 systemd
  --user 常驻 13021;gitea hook 注册(events=push, branch=main)
- 三个深坑:gitea 容器回宿主须走桥网关 IP 而非 127.0.0.1;gitea 28
  egress 拦私网须 ALLOWED_HOST_LIST(ALLOWLIST 是废弃名);systemd
  用户服务缺用户 PATH 致 build 静默失败(stamp 不更新即症状)

验证: 测试投递 202→构建→staging 戳更新(09:48:37 实测);
      dist 热力图 376 格真数据(9 次贡献)zh/en 双页

Spec: 2026-10-25_add-blog-launch
Co-authored-by: GLM-5.3
This commit is contained in:
wait4xandGLM-5.3 committed 2026-10-25 09:49:19 +08:00
1 parent 0c54a43bb5
commit 938558ad4c
12 files changed
+692 -110

No files matched your search

+7
View File
@@ -60,3 +60,10 @@ sqlite 直接热拷贝会撕裂,备份前 `docker compose down` 或用 `sqlite
- SSH 通道整体关闭(不映射 22 + `DISABLE_SSH=true`),克隆统一走 https。
- DNS/ESA 解析 `git.wait4x.online` 尚未配置,nginx 接入由运维会话统一执行,
本目录草稿不自行生效。
## 运行时变更台账(2026-10-25,Phase 4)
- `data/gitea/conf/app.ini` 追加 `[webhook] ALLOWED_HOST_LIST = 172.22.0.1`——
gitea 28 出站 egress 策略默认拦私网地址(废弃名 ALLOWLIST 无效),
此项放行 webhook 回连宿主接收器(172.22.0.1:13021);改后需 restart gitea