Skip to content

pr to deploy

把一个已经通过 review 和 CI 的 PR 合并到 main,并确认 GitHub Actions 成功发布到 Cloudflare Pages。

默认流程是:PR checks 通过 -> squash merge 到 main -> 等待 Deploy to Cloudflare Pages -> 验证线上站点。

前置条件

  • PR 已被确认可以合并。
  • 必要 checks 绿色,特别是构建检查。
  • 当前操作只针对一个 PR。
  • 不把 Cloudflare token、账号信息或本机配置写入仓库文件。

1. 确认 PR 状态

sh
gh pr checks <pr-number> --watch
gh pr view <pr-number> --json number,title,state,mergeStateStatus,reviewDecision,headRefName,baseRefName,url

继续前确认:

  • baseRefNamemain,除非用户明确要求其他 base。
  • checks 已通过。
  • review 状态符合用户要求。
  • PR 内容确实是本次要发布的范围。

如果 checks 失败,先修复失败原因,不要跳过检查合并。

2. 合并 PR

使用 squash merge,并删除远端分支:

sh
gh pr merge <pr-number> --squash --delete-branch

如果 gh pr merge 输出本地 fast-forward 失败,不要立即重试合并。先确认 GitHub 上 PR 是否已经合并:

sh
gh pr view <pr-number> --json state,mergeCommit --jq '{state, mergeCommit: .mergeCommit.oid}'

如果状态是 MERGED,同步本地 main

sh
git switch main
git fetch origin
git pull --ff-only origin main

不要使用 git reset --hard,除非用户明确批准。

3. 等待 Cloudflare Pages 部署

合并到 main 会触发 GitHub Actions 工作流 Deploy to Cloudflare Pages

sh
gh run list --branch main --workflow "Deploy to Cloudflare Pages" --limit 1
gh run watch <run-id>

如果需要查看失败日志:

sh
gh run view <run-id> --log-failed

失败时按日志修复并重新走 PR 流程;不要在 Actions 里手动注入或泄露 secret。

4. 验证线上站点

部署成功后验证公开站点:

sh
curl -I https://claude-zh.cn
curl -fsSL https://claude-zh.cn/robots.txt

按改动类型补充验证:

  • 首页或指南改动:打开对应 URL,确认标题、正文、链接和导航可见。
  • 安装脚本改动:确认 https://claude-zh.cn/scripts/install.sh 或对应 .ps1 能返回最新内容。
  • 下载文件改动:确认 public/downloads/ 对应路径可访问,校验 checksum 文件。
  • Cloudflare Function 改动:用最小请求验证状态码和响应字段。

5. 发布记录

最终回复或发布记录里包含:

  • 合并的 PR 链接。
  • merge commit。
  • GitHub Actions run 链接和结论。
  • 线上验证命令与结果摘要。
  • 如果部署失败,说明失败点、已采取动作和下一步。

回滚

如果线上发布出现问题,优先用一个新的 revert PR 回滚对应 merge commit:

sh
git switch -c revert/<pr-number>-brief-name origin/main
git revert <merge-commit>
npm run docs:build
gh pr create --title "Revert <original title>" --body-file <body-file>

合并 revert PR 后再次等待 Deploy to Cloudflare Pages,并验证线上站点恢复。

Checklist

  • [ ] PR checks 已通过。
  • [ ] PR 范围和 base branch 已确认。
  • [ ] 已 squash merge 到 main
  • [ ] 已等待 Deploy to Cloudflare Pages 完成。
  • [ ] 已验证线上站点或受影响资源。
  • [ ] 已记录 PR、merge commit、Actions run 和验证结果。

Claude Code 中文教程站