Repository navigation
test: verify complete fork CI workflow - #8
Conversation
There was a problem hiding this comment.
AI Review
🟢 未发现有明确证据的问题
在已提供并完成审查的 diff 范围内未形成可确认问题。
变更概览
本次变更的语义概览暂未生成,具体修改请查看文件审查摘要。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|
审查信息
- 变更统计:0 个文件,+0/-0。
- 覆盖情况:共 0 个文件,已完整审查 0 个。
- 候选问题:0 项;证据复核过滤:0 项;发布前敏感信息保护:0 项。
- 本服务只审查 GitHub 提供的 PR diff,未执行代码或重跑测试;结论仍需维护者核验。
CI 失败证据:AITER CI
- build-and-test:aiter 脚本在 wheel 安装成功后报错:--test_dir 源码处于 detached HEAD,无法确定分支,提示改用 --branch 和 --commit(L3642),随后该步骤以 exit code 1 结束(L3643)。失败点为脚本的分支探测逻辑,而非 wheel 安装或测试执行本身。
- 与本次改动的关系:无法确定;报错是脚本对 detached HEAD 的确定性处理失败,属脚本/工作流参数层面的可直接归因错误;但本批无可用 PR patch(0/0 文件),无法确认本次改动是否触及该脚本、调用参数或 checkout 配置,故与 PR 的关系无法确定。
- 建议:在该调用步骤为脚本显式传入 --branch 与 --commit(可取 workflow 的分支名与 SHA),或调整脚本在 detached HEAD 下不依赖分支名推断。以上为方向性建议,需结合工作流定义人工核验,未经验证不保证有效。
There was a problem hiding this comment.
AI Review
🟢 未发现有明确证据的问题
在已提供并完成审查的 diff 范围内未形成可确认问题。
变更概览
本次变更主要包含:
- 新增 Quality Gate GitHub Actions 工作流:在面向 main 分支的 pull_request 事件上,以固定 SHA 复用 HYGON-AI/quality-gate 仓库的 pr-quality-gate 工作流执行检查,并声明最小 contents: read 权限及按 PR 号分组取消旧运行的并发控制。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|---|---|
.github/workflows/quality-gate.yml |
新增 · +21/-0 | — |
审查信息
- 变更统计:1 个文件,+21/-0。
- 覆盖情况:共 1 个文件,已完整审查 1 个。
- 候选问题:0 项;证据复核过滤:0 项;发布前敏感信息保护:0 项。
- 本服务以 GitHub 提供的 PR diff 为审查主体,PR 描述与按相关性选取的仓库片段仅用于核验;未执行代码或重跑测试,结论仍需维护者核验。
CI 失败证据:AITER CI
- build-and-test:已证实的直接失败:09:11:55 aiter 检查脚本在安装 wheel(0.1.6) 后报 ERROR:--test_dir 源码处于 detached HEAD,无法确定分支,提示改用 --branch 和 --commit(L3644),该步骤退出码 1(L3645)。09:12:09 另见一处 exit code 1(L3738),对应步骤输出未含于本选段,原因无法确定。
- 与本次改动的关系:无法确定;Run SHA 与 PR SHA 相同仅说明被测提交为 PR 头部;本批提供的 patch 匹配为 0/1 文件,未见相关改动内容,不能证实或排除本次修改与该检查的关联。detached HEAD 本身由 L3644 直接证实,属检出状态而非产品代码行为。
- 建议:最小方向:核对该步骤对脚本的调用处是否缺 --branch/--commit 传参(脚本自身提示的替代方式),或让脚本兼容 detached HEAD(如从 CI 事件上下文取分支来源)。具体改法需先查看工作流与脚本实现,不预设唯一实现。
There was a problem hiding this comment.
AI Review
🔴 需要修改
发现有明确证据的高优先级问题。
已确认 1 个问题,其中 1 个已添加到对应代码行。
变更概览
本次变更主要包含:
- ci.yml 的 optest 步骤改为显式传入 PR 头部分支名和提交 SHA,并对非 PR 场景保留回退值。
- 新增 quality-gate.yml:PR 指向 main 时复用外部仓库的质量门工作流,使用指定 runner 标签并按 PR 编号做并发去重。
文件审查摘要
| 文件 | 变更 | 审查结果 |
|---|---|---|
.github/workflows/ci.yml |
修改 · +7/-1 | P1 × 1 |
.github/workflows/quality-gate.yml |
新增 · +25/-0 | — |
审查信息
- 变更统计:2 个文件,+32/-1。
- 覆盖情况:共 2 个文件,已完整审查 2 个。
- 候选问题:1 项;证据复核过滤:0 项;发布前敏感信息保护:0 项。
- 本服务以 GitHub 提供的 PR diff 为审查主体,PR 描述与按相关性选取的仓库片段仅用于核验;未执行代码或重跑测试,结论仍需维护者核验。
CI 失败证据:AITER CI
- build-and-test:aiter 测试脚本步骤直接报错:--test_dir 源码处于 detached HEAD,无法确定分支,提示改用 --branch 和 --commit(L3691),随后该步骤以退出码 1 结束(L3692)。此前 wheel 安装成功(L3690),说明失败不在依赖安装环节,而在脚本对 detached HEAD 的分支判定/参数校验。
- 与本次改动的关系:无法确定;本批日志未附匹配的 PR patch(0/2 文件),无法核对本次改动是否触及报错脚本或其工作流调用处;Run SHA 与 PR SHA 相同不构成相关性证明,故只能判无法确定。
- 建议:在调用该脚本的工作流步骤补充 --branch 与 --commit 参数以适配 detached HEAD(取当前 run 的分支和 SHA),或为脚本增加 detached HEAD 场景的参数回退逻辑;为方向性建议,需人工核验调用处后再改。
| # asking it to infer a branch from that merge ref. | ||
| run: >- | ||
| optest --op_name aiter --test_mode all --test_dir "$GITHUB_WORKSPACE" | ||
| --branch "${{ github.event.pull_request.head.ref || github.ref_name }}" |
There was a problem hiding this comment.
P1 · CI 脚本注入:分支名直接拼入 run 命令
触发条件: 攻击者从 fork 发起 PR(本 PR 场景明确覆盖 fork 工作流),将分支命名为包含 shell 元字符(如分号或命令替换语法)的合法 git 分支名,触发 pull_request 事件。
证据与影响: optest 命令使用 --branch "${{ github.event.pull_request.head.ref || github.ref_name }}"。GitHub 表达式在 shell 执行前做文本替换,分支名由 fork 作者完全控制,可提前闭合引号或以元字符追加命令。 注入的命令在 CI 作业内以工作流身份执行,可访问已检出含私有子模块的工作区、该作业可用的凭据,并在 runner 上执行任意操作。
修改建议: 改用环境变量中转:在 step 定义 env: PR_REF: ${{ github.event.pull_request.head.ref || github.ref_name }},run 内改为 --branch "$PR_REF"(commit 同理)。
Empty validation commit. This PR verifies fork workflow triggering, private submodule checkout, wheel building, and the full operator test suite. It should be closed after verification.