014 · Webhook 200 但 git pull 失败(HOME 与 safe.directory)
问题现象
Gitea Webhook Delivery 200,但 notes 内容未更新;journalctl -u webhook-mkdocs 可见 fatal: $HOME not set 或 dubious ownership。
排查过程
- 对比 手动 shell 执行
/opt/rebuild-notes.sh与 systemd 服务 执行的环境差异。 - 检查
git config --show-origin safe.directory是否覆盖工作副本与裸库路径。
根因
- adnanh/webhook 触发的子进程 无登录环境,
git需要HOME。 - root/服务用户 操作 Gitea 数据目录触发 dubious ownership(与工单
002同源)。
改进计划
- 在
webhook-mkdocs.service的[Service]增加Environment=HOME=/root(按实际运行用户调整)。 git config --global --add safe.directory列出所有相关绝对路径。systemctl restart webhook-mkdocs后curl本地钩子 再验一条完整日志。
经验教训
「服务里跑脚本」必须 单独试跑,不能假设与 SSH 会话等价;Git 安全策略在自动化里高频踩雷。