已关闭
ci: main 分支无 push CI 且 preflight 不跑 go test——Go 单测证据仅 PR 时点 #618
aflyingto创建于  15 天前关闭于  7 小时前
aflyingto成员
15 天前 创建

背景

  • 第七轮评审(#610 第五节)记录:ci.yml 仅 PR 触发(on: pull_request),main 分支无 push CI;且 release preflight 不跑 go test ./...——Go 单测证据仅存在于 PR 时点
  • 风险实例:#610 P0-3 核验时遇到"合入尖端的 GitCode CI 未绿"证据缺口(run 414 平台故障),当时以 GitHub 镜像同提交 9/9 绿 + 父提交 5/5 绿补齐——若有 main push CI 则无此缺口

改动建议

  • 双端 ci.yml 增加 push: branches: [main] 触发,或 release preflight 增加 go test ./... 步骤(或两者,评审定夺)

验收标准

  • main 合并/直推后有 CI 运行记录
  • Go 单测证据不再仅限 PR 时点

影响范围

.github/workflows/ci.yml、.gitcode/workflows/ci.yml、(可选).github/workflows/release.yml preflight

likedislike
Aaflyingto成员
15 天前 添加了label:scope/ci, status/triage,type/feature
aflyingto成员
8 小时前 评论:

验证记录

  • 当前版本或分支: main @ f4025cf
  • 验证时间: 2026-10-20
  • 复现命令: sed -n '1,8p' .gitcode/workflows/ci.yml .github/workflows/ci.yml、grep -n "go test" .github/workflows/release.yml
  • 实际结果: 双端 ci.yml 均仅 on: pull_request: branches: [main] + workflow_dispatch,无 push 触发;release.yml preflight 含版本同步校验、goreleaser snapshot 与打包检查,无 go test——issue 主张全部属实
  • 预期结果: main 合并/直推后有 CI 运行记录;Go 单测证据不再仅限 PR 时点
  • 时间线检查: 2026-10-19/20 的一手证据使缺口具象化——d1714f0(!592 自身 head)的 GitCode CI run 419 为 FAILED 仍被合入 main,其引入的 factory 测试缺陷随后令所有 PR 的 CI 三平台全挂(run 418/420 等),直至 62d74eb 才解阻;期间无任何 main 时点的自动化证据能在此刻暴露问题。若有 main push CI,d1714f0 落 main 当刻即红
  • 结论: 继续修复(双端 ci.yml 增加 push: branches: [main] 触发 + release preflight 补 go test ./...,按 issue"或两者"取两者:push CI 满足两条验收标准,preflight 补测封住"main CI 缺失/变红时仍可发版"的残余路径)
likedislike
Aaflyingto成员
8 小时前 添加了label:status/verified;删除了label:status/triage
Aaflyingto成员
8 小时前 添加了label:status/in-progress
Aaflyingto成员
8 小时前 关联了pull request:ci: run CI on main pushes and gate releases with go test
Aaflyingto成员
8 小时前 添加了label:risk/high
Aaflyingto成员
7 小时前 添加了label:status/ready-for-review
aflyingto成员
7 小时前 评论:

开发进度

  • 当前状态: ready-for-review(PR !595 已完成自检、四角色独立评审三轮全部 approved、双端 CI 全绿,等待人工最终确认与合并;合并后执行首跑核验清单并回填本 issue)
  • 根因: main 分支无 push CI、release preflight 不跑 go test——PR 时点是唯一自动化证据,d1714f0 带红 CI(run 419 FAILED)合入后无任何 main 时点信号,直至阻断所有 PR CI 才暴露(详见验证记录)
  • 主要修改: 双端 ci.yml 增加 on.push.branches [main];release.yml preflight 增加 go test ./...(版本校验后、打包前);五处规范/入口文档同步 + 评审轮补契约钉(触发面双端 parity + preflight 步骤)与四处文档残留修复
  • 影响范围: CI 触发面与发布 preflight;Job 定义、权限、依赖关系、质量门禁映射均不变
  • 单元测试: go test ./... 163 包全部通过(含新增契约测试:validateTriggers 双端、3 个 mutation 负例、preflight 钉扎)
  • 构建: 三份 YAML 解析验证通过
  • 实际命令验证: CI 配置变更的真实命令验证即 CI 运行——基线 a2b459d 与终态 c090bfc 双端全绿(GitCode 五 job / GitHub 九 job);push 事件证据按验收标准合并后产生
  • 安全影响: 权限与 secret 边界零扩张(独立安全评审源码级核实);push 触发严格限 main 无滥用面
  • 文档同步: ci-workflows(必须清单/层级图/触发配置/工具链表/§3.2 查询示例/§5.4 契约/§6)、ai-local-development-workflow、code-quality-gates、release-process、AGENTS §3.6、LOOP-GOAL-GUIDE、.loop lessons——全仓残留扫描经文档评审复核闭环
  • 风险或未覆盖项: risk/high,合并前需人工最终确认;GitCode 平台 push 触发实际支持与 ATOMGIT_RUN_ID 在 push 运行的注入以合并后首跑为准(首跑核验清单:触发确认 / ATOMGIT_RUN_ID / 双事件重复运行噪音,缺失时回退仅需删 3 行);runner 用量上升为声明的已知代价
  • 关联 PR: !595
likedislike
Aaflyingto成员
7 小时前 关闭了 issue
Aaflyingto成员
7 小时前 添加了label:status/merged
aflyingto成员
7 小时前 评论:

验收回填:main push CI 首跑记录(issue 验收标准达成)

PR !595 合并提交 76bc48d 落 main 后,push 触发的 CI 在双端自动运行并全绿——main 合并/直推后有 CI 运行记录、Go 单测证据不再仅限 PR 时点 两条验收标准均达成:

  • GitCode 原生 CI(run e0db65914cdd4c81ae1df9efd870b819,event=Push,head 76bc48d):Lint / Secret Scan / Test / Build / Package 五个 Job 全部 COMPLETED。Test Job 通过即证明制品命名步骤的 ${ATOMGIT_RUN_ID:?} 在 push 运行上下文正常注入(评审预测点 b 未发生,无需 fallback)
  • GitHub 镜像 CI(run 39385819655,event=push,head 76bc48dc,镜像同步后自动触发):Test(ubuntu/macos/windows)+ Build(三平台)+ Lint + Secret Scan + Docker 共九个 Job 全部 success
  • 重复运行噪音评估(评审预测点 c):合并恰好产生每平台一次 push 运行,无失控扇出;runner 用量上升为声明的已知代价
  • 查询命令(新增的验收口径示例):gc actions run list -R atomgit-cli/cli --branch main --event Push --json、gh run list --workflow=ci.yml --branch main

对照事故基线:改动前 d1714f0(!592,run 419 FAILED)带红 CI 合入 main 无任何 main 时点信号;本次机制下同类事件将在合入瞬间被 push CI 暴露,且契约测试(validateTriggers 双端 parity)保证触发器本身不可被静默移除。

likedislike