基于 Drone CI 的 AI 代码评审插件,支持:
PR增量评审,输出结构化JSON- 默认分支全量仓库评审,输出
Markdown - provider 可切换
codex或claudeCLI
- 流水线工作目录已由 Drone clone 为 Git 仓库
- 容器内已完成认证:
codex- 或
claude
当前仓库内置安装:
@openai/codex- Claude Code 原生 CLI
PLUGIN_MODE=pr|fullPLUGIN_PROVIDER=codex|claudePLUGIN_OUTPUT=<output file>
PLUGIN_WORKDIR=<path>:默认当前目录PLUGIN_PROMPT_FILE=<path>:自定义 prompt 文件PLUGIN_CLI_BIN=<path>:自定义 CLI 可执行文件PLUGIN_MODEL=<name>:指定模型PLUGIN_EXTRA_ARGS=<arg1,arg2>:附加 CLI 参数,使用逗号分隔PLUGIN_INCLUDE=<glob1,glob2>:提示 AI 优先关注的路径PLUGIN_EXCLUDE=<glob1,glob2>:提示 AI 跳过的路径PLUGIN_DEBUG=true:开启调试日志
pr 模式依赖 Drone 注入的以下环境变量:
DRONE_PULL_REQUESTDRONE_SOURCE_BRANCHDRONE_TARGET_BRANCH
插件会在当前仓库内自动执行 git diff 生成评审上下文。
PLUGIN_MODE=pr 时:
- 校验 Drone PR 环境变量
- 获取目标分支 diff
- 调用
codex或claudeCLI - 校验输出 JSON schema
- 将结果写入
PLUGIN_OUTPUT
输出结构:
{
"verdict": "pass",
"summary": "short review summary",
"findings": [
{
"path": "relative/file/path",
"line_start": 12,
"line_end": 12,
"severity": "medium",
"title": "short title",
"body": "actionable explanation"
}
]
}kind: pipeline
type: docker
name: default
steps:
- name: ai-pr-review
image: your-registry/drone-ai-review
environment:
PLUGIN_MODE: pr
PLUGIN_PROVIDER: codex
PLUGIN_OUTPUT: review.jsonPLUGIN_MODE=full 时:
- 直接在当前 clone 工作区执行仓库级审查
- 调用
codex或claudeCLI - 将 Markdown 报告写入
PLUGIN_OUTPUT
kind: pipeline
type: docker
name: default
steps:
- name: ai-full-review
image: your-registry/drone-ai-review
environment:
PLUGIN_MODE: full
PLUGIN_PROVIDER: claude
PLUGIN_OUTPUT: review.mdcodex provider 使用非交互 exec 模式,并在 pr 模式下附带 JSON schema 约束。
claude provider 使用 -p 非交互模式,并在 pr 模式下通过 --json-schema 约束输出结构。
export PLUGIN_MODE=full
export PLUGIN_PROVIDER=codex
export PLUGIN_OUTPUT=review.md
go run .- Codex CLI:官方文档当前推荐
npm i -g @openai/codex - Claude Code:官方文档当前推荐原生安装方式;本镜像使用官方
install.sh
示例流水线文件见:.drone.yml.example