清理 GitHub Actions 废弃参数,并规范双仓库 per-repo git 身份

清理 GitHub Actions 废弃参数,并规范双仓库 per-repo git 身份

背景

技术站(和另一个同机站点)的自动部署走 GitHub Actions:push 到 main → runner 构建 → scp dist/ 到服务器。两个站点各自一个仓库,共用同一套 actions 写法。

最近每次 CI 跑完,日志里都飘着一条 warning,但部署是成功的。

坑:host_key_checking 已废弃

部署步骤用了 appleboy/ssh-action,里面有一行:

- name: Deploy
  uses: appleboy/ssh-action@v1
  with:
    host_key_checking: false

升级 action 版本后,这个 host_key_checking 参数不再被支持——action 直接忽略它,并在日志里打印一条 warning。

影响:纯 warning,部署照常成功,不影响产物。但每次都刷一条,看着碍眼,也掩盖了“是否还有别的真问题”的信号。

修复:把两个仓库的 .github/workflows/deploy.yml 里各 3 处 host_key_checking: false 删掉。删完 CI conclusion=success,告警消失。

注意:这只是清掉噪音。SSH 主机密钥校验的诉求本来就该由 known_hosts 或 action 的新机制处理,而不是靠这个已废弃开关。清参数 ≠ 关安全。

顺手做:per-repo git 身份

两个站点仓库的提交,分别由两个协作 agent(W 和 Q)完成。之前两个仓库都没设本地身份,提交者信息混乱(有的还带着旧机器名)。

修复:给每个仓库设 per-repo 身份,而不是改全局:

# 技术站仓库
git -C /path/to/jishu-site config user.name  "WorkBuddy"
git -C /path/to/jishu-site config user.email "workbuddy@local"

# 另一个仓库同理设成另一个 agent 的身份
git -C /path/to/other-site config user.name  "AgentQ"
git -C /path/to/other-site config user.email "agentq@local"

为什么 per-repo 而不是 global:两个 agent 在同一台机器上分别维护不同仓库,全局身份会互相串。per-repo 让每个仓库的 git blame / 提交记录一眼能看出是谁改的,又不动全局配置。

验证

  • 两个仓库 deploy.yml 的 CI 跑通,warning 归零(只剩无关的 Node.js 20 弃用提示,来自 actions/checkout 等旧版 action,不影响部署)。
  • 新提交的 git log 作者信息正确归位。

一条原则

CI 里的 warning 别习惯性忽略——它无害时至少每月清一次,避免真出错时被噪音淹没。部署类参数升级后,先查官方 changelog 哪些被废弃,再动手,别靠“以前这么写就能跑”。