host: GitHub PR/CI line (github-workflow, pr, pr-checks, pr-merge with checks gate)
This commit is contained in:
1 parent
2f326f33f8
commit
b97c34465f
4 files changed
+458
No files matched your search
@@ -438,3 +438,50 @@ tests/ 标准库 unittest,验收命令就是 `python3 -m unittest discover -s
|
||||
`host.py --config <config> health`(无模型成本)和 /
|
||||
或 `run-due`(到期才跑模型),需用户定间隔和是否允许
|
||||
自动跑模型后才装。
|
||||
|
||||
## GitHub PR/CI 一条线(2026-10-26,用户选“先做 GitHub PR/CI 这一条线”)
|
||||
|
||||
- **只做代码和本地可测部分,真实 PR 本轮没跑**:本仓没有
|
||||
git remote origin(`git remote -v` 为空),gh 未登录
|
||||
(`gh auth status`:未登录)。按任务要求,不登录 GitHub、
|
||||
不向真实 GitHub push 或建 PR,真实 PR 那一步留给用户以后
|
||||
给仓库远端和 PAT 之后再跑;PAT 走 Secure Vault,绝不写进
|
||||
文件、state、日志或聊天记录。
|
||||
- **新增命令(都在 Server 创建之前,不跑模型)**:
|
||||
- `github-workflow`:生成 `.github/workflows/host-verify.yml`
|
||||
(checkout + setup-python 3.12 + `python3 -m unittest
|
||||
discover -s tests -v`),幂等:已存在且内容相同则不改写。
|
||||
临时仓库实测:第一次 changed=true,第二次 changed=false。
|
||||
- `pr --task <名>`:校验任务(无 branch 或状态不是
|
||||
completed/merged 就报错退出)→ 查 remote origin(无 remote
|
||||
就明确报错,不静默失败)→ `git push origin <branch>` →
|
||||
`gh pr create --title/--body/--head`(body 含任务名、提示摘要、
|
||||
未解决评审评论)→ 成功后 pr_url/pr_number 写回任务记录并
|
||||
保存 state;失败打印 gh/git 错误原文,不编造 URL。
|
||||
- `pr-checks --task <名>`:调 `gh pr checks <number>`,解析
|
||||
输出返回 {pr_url, checks: [{name, state}], all_pass},
|
||||
all_pass 仅当 checks 非空且全部为 pass 时为真(空 checks
|
||||
不算过,否则空 PR 也能合)。解析兼容制表符格式和
|
||||
人类可读格式(✓ build pass / ✗ test fail)。
|
||||
- `pr-merge --task <名>`:先调 pr-checks,未全过拒绝且不调
|
||||
merge,并打印未过项;全过才 `gh pr merge --merge`,成功
|
||||
后任务状态标 merged。**不动本地主分支**:合并由 GitHub
|
||||
完成,和本地 merge_task()(直接合进本地主仓 + 自动验测
|
||||
回滚)是两条线,一个任务不要两边都合。
|
||||
- **gh 可注入**:全部 gh 调用走 `run_gh(args, cwd, runner)`,
|
||||
单测注入假 gh,不依赖真实网络和登录;真实路径走 gh CLI。
|
||||
- **单测**:tests 从 19 个涨到 27 个,全部通过。新增 8 个:
|
||||
workflow 内容正确且幂等(含被改坏后恢复);pr-checks
|
||||
解析 pass / fail / mixed / 空;pr-merge 未全过时拒绝且未
|
||||
调 merge、全过时才调 merge 并标 merged;无 branch /
|
||||
非 completed 状态被拒;无 remote 时 pr 报错含 remote;
|
||||
本地 bare 远端 push 成功后假 gh 返回 PR URL(pr_number
|
||||
42 写回任务,bare 远端里确有 host/t1 分支);CLI 层
|
||||
`pr --task` 在无 remote 时退出码非零且输出含 remote。
|
||||
- **未动的部分**:本地 merge/goal/review 行为未改;没有动
|
||||
~/.codex/config.toml;没有动 wechat-bridge;没有提交
|
||||
git commit,改动留在工作区。
|
||||
- **真实 PR 仍缺什么**:仓库远端(`git remote add origin <url>`)
|
||||
和 gh 登录(PAT 走 Secure Vault)。两者齐了之后的顺序:
|
||||
github-workflow 生成并提交 workflow → 任务 completed 后
|
||||
pr → pr-checks → pr-merge。
|
||||
Reference in new issue
Block a user