Open Code Review 项目解析知识图谱 / 分组目录 / 使用场景索引 / 场景:接入 CI 流水线

场景:接入 CI 流水线

使用场景进阶场景索引G-S · 使用场景索引

What · 是什么

让审查自动跑在每个 MR/PR:GitHub Actions 一步复用、GitLab/Gerrit 等加 post_review.py 回贴评论
让 AI 审查自动跑在每次 MR/PR 上,无需人工触发,是规模化落地的标准形态
GitHub Actions:uses: alibaba/open-code-review@main,三个必填输入 llm_url / llm_auth_token / llm_model,Anthropic 协议模型需加 llm_use_anthropic
GitLab:在 .gitlab-ci.yml 中配置审查作业,结合 post_review.py 把审查结果回贴为 discussion 评论
Gerrit / Codeup / GitFlic / Bitbucket 等平台遵循同一模式:CI 作业执行审查 + 脚本回贴结果
审查产物:.ocr/ocr-stats.env(统计信息,如评论数/token 数)与 result.json(结构化审查结果),供下游消费
配置陷阱:action 输入中 'true'/'false' 必须写成字符串字面量,裸布尔会被 YAML 解析为布尔类型导致传参失败

Why · 为什么

原理 · Principle

人工 review 无法保证每个 MR 都覆盖,CI 自动化把审查变成合并的必经环节而非可选项

回贴讨论(GitLab discussion / GitHub comment)让审查结论与代码行绑定,开发者在原处即可处理

统计产物(ocr-stats.env)支撑团队度量:审查覆盖率、评论密度、token 成本都可量化

多平台一致模式降低落地成本:学会一套(Actions)即可复制到其他平台

How · 怎么做

GitHub Actions 接入:在工作流中 steps 内 uses: alibaba/open-code-review@main,配置 llm_url、llm_auth_token、llm_model 三个必填项,Anthropic 协议模型再加 llm_use_anthropic(注意 'true' 写字符串字面量)
GitLab 接入:在 .gitlab-ci.yml 新增审查 stage,作业内运行审查命令,随后用 post_review.py 将 result.json 回贴为 MR discussion
其他平台:仿照同一模式,CI 作业跑审查 + 读取 result.json + 平台 API 回贴评论
消费产物:审查后读取 .ocr/ocr-stats.env 与 result.json,接入通知(如机器人推送摘要)或度量面板
配置检查:审查 job 配置中所有布尔型输入用引号包裹('true'/'false'),避免 YAML 布尔解析问题

案例 · Cases

代表性案例
GitHub 团队落地:每个 PR 自动审查并评论,Precision 优先保证评论值得处理
GitLab 合规流程:审查结果回贴为 discussion,合并前必须处理高严重度评论
多平台统一:同一仓库在 GitLab 与 Gerrit 双平台使用,产物格式一致便于脚本复用
度量驱动:CI 产物汇总到面板,按月看评论采纳率与 token 成本趋势

反模式 · Anti-patterns

正反实例论证 · Evidence

正例 · Pro
Actions 三必填 + 字符串字面量布尔
- uses: alibaba/open-code-review@main with: llm_url: ${{ secrets.LLM_URL }} llm_auth_token: ${{ secrets.LLM_AUTH_TOKEN }} llm_model: deepseek-v3 llm_use_anthropic: 'false'
llm_url/llm_auth_token/llm_model 三个必填项 + 密钥走 secrets,布尔输入用引号包裹为字符串字面量,传参可靠。
反例 · Con
布尔不写字符串字面量导致静默失败
llm_use_anthropic: false # YAML 解析为布尔而非字符串
裸布尔被 YAML 解析为布尔类型,action 收到类型不符的输入而静默失败,审查不跑且无报错提示。
正例 · Pro
GitLab 回贴 discussion 让结论与代码行绑定
# .gitlab-ci.yml 审查作业ocr review --to cipython post_review.py .ocr/result.json # 回贴为 MR discussion
审查结论回贴到对应代码行,开发者在原处处理,评审闭环在平台内完成。
反例 · Con
凭据明文写进工作流文件
llm_auth_token: sk-xxxx # 硬编码而非 secrets
凭据随仓库泄漏,任何有仓库读权限的人都能提取并使用,账单与安全双风险。
正例 · Pro
消费 .ocr/ 产物接入度量
cat .ocr/ocr-stats.env# OCR_COMMENTS=12 OCR_TOKENS=38421# 推送机器人摘要 + 汇总到月度面板
审查统计进入团队度量(覆盖率/评论密度/token 成本),结果不只在日志里转瞬即逝。
反例 · Con
忽略 .ocr/ 产物只留日志
# 审查后不读取 result.json / ocr-stats.env
审查结果无法被通知、度量与归档消费,团队无法度量审查价值,问题也无人跟进。

实践资产 · Assets

CI 集成
GitHub Actions 自动审查 workflow 示例(PR 事件+评论触发,并发组防重)
examples/github_actions/ocr-review.yml · 5170 B
CI 集成
GitLab CI 审查作业示例(含 OCR_* 环境变量族)
examples/gitlab_ci/.gitlab-ci.yml · 9775 B
CI 集成
GitHub Actions composite action 完整定义(24 入参 / 6 出参)
action.yml · 14207 B

相关边