gitlab merge request需自动触发grok code fast 1扫描,须配置专用runner环境、安装1.3.0版本、设置grok_api_token变量、编写.grokrules.yml规则文件、在.gitlab-ci.yml中定义grok-review job并绑定$ci_merge_request_iid,最后通过分支保护强制该job通过方可合并。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

当你在GitLab上发起Merge Request时,希望代码还没合并就自动被Grok Code Fast 1扫描一遍,识别潜在逻辑漏洞、安全风险和风格问题,而不是等人工Review时才发现——这需要把Grok评审能力嵌入CI/CD流水线,在MR触发时立即运行。
准备Grok Code Fast 1运行环境
先确认你的GitLab Runner节点能执行Python脚本并访问Grok模型服务。如果使用的是shared runner,必须用自定义Docker镜像;若为私有runner,直接在宿主机安装更稳定。
在runner所在服务器执行:pip install grok-code-fast-1==1.3.0。版本号必须严格匹配,【1.2.x或1.4.x会导致API调用失败】。
创建一个专用token用于Grok服务认证:登录Grok控制台 → Settings → API Tokens → Generate New Token → 勾选“code-review”权限 → 复制生成的token字符串。
把这个token写入GitLab项目的CI/CD变量:Settings → CI/CD → Variables → Add variable,Key填GROK_API_TOKEN,Value粘贴刚复制的token,勾选“Mask variable”并保存。
编写.grokrules.yml定义评审规则
在项目根目录新建.grokrules.yml文件,内容如下:
rules: - severity: high pattern: "eval\(" message: "禁止使用eval,存在远程代码执行风险" - severity: medium pattern: "print\(" message: "生产代码中不应保留调试print语句"
这个文件决定了Grok扫描时关注哪些模式。你也可以用正则表达式匹配更复杂的逻辑,比如os.system\(.*\)或subprocess.run\([^)]*shell=True[^)]*\)。
注意:文件名必须是.grokrules.yml,大小写和点号都不能错,否则Grok CLI启动时会报“no rules found”。
配置.gitlab-ci.yml启用MR触发评审
打开项目根目录的.gitlab-ci.yml,在stages列表末尾添加- code-review。
新增job定义:
grok-review: stage: code-review image: python:3.11-slim before_script: - pip install grok-code-fast-1==1.3.0 script: - grok-code-fast-1 review --mr-id $CI_MERGE_REQUEST_IID --token $GROK_API_TOKEN only: - merge_requests
关键点在于--mr-id $CI_MERGE_REQUEST_IID:GitLab会在MR触发时自动注入该环境变量,指向当前请求ID;漏掉它,Grok就无法定位要分析的diff范围,只会扫全量代码。
这个job只在merge_requests事件下运行,不会污染push或tag构建流程。
设置分支保护强制评审通过
进入Settings → Repository → Protected Branches,找到你要保护的目标分支(如main)。
点击Edit按钮,在“Allowed to merge”区域选择“Developers + Maintainers”,然后向下滚动到“Merge request approval rules”部分。
点击“Add approval rule”,填写:
Rule name: Grok Auto-Review
Approvals required: 1
Users or groups: 选择“None”(留空)→ 启用“Check if all status checks passed”
这一步让GitLab把CI pipeline中的grok-review job状态当作合并前提条件。只要该job失败(即Grok发现high级问题),MR界面就会显示红色×,禁止点击Merge按钮。
最后点击“Save changes”。现在任何向main发起的MR,都必须先通过Grok自动化扫描才能合入。










