Codex: Codex 自动化与 CI/CD
最后更新:2026-08-31
Codex 的非交互模式使其非常适合集成到 CI/CD 流水线中,实现自动化代码审查和质量保证。
📋 前置知识:了解 CI/CD 基本概念,熟悉 GitHub Actions
1. 你将学到
- Codex 在 CI/CD 中的角色
- GitHub Actions 集成
- 自动化代码审查
- 质量门禁配置
2. Codex 在 CI/CD 中的角色
| 角色 | 说明 | 触发时机 |
|---|---|---|
| 代码审查员 | 自动审查 PR | PR 创建时 |
| 测试生成器 | 自动补充测试 | 代码变更时 |
| 文档更新器 | 自动更新文档 | API 变更时 |
| 安全扫描器 | 检查安全漏洞 | 每次提交 |
3. GitHub Actions 集成
(1) 基本配置
YAML
# .github/workflows/codex-review.yml
name: Codex Code Review
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Codex Review
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
run: |
npm install -g @openai/codex
git diff origin/main...HEAD | codex --quiet --sandbox readonly \
"审查这个 PR 的变更,关注:1. 安全漏洞 2. 性能问题 3. 代码风格" \
> review-comment.md
- name: Post Review
uses: actions/github-script@v7
with:
script: |
const fs = require('fs');
const comment = fs.readFileSync('review-comment.md', 'utf8');
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: comment
});
▶ 示例 1: Alice 的自动化审查
YAML
# Alice 的 PR 审查流水线
name: Auto Review
on:
pull_request:
jobs:
security-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Security Scan
run: |
codex --quiet --sandbox readonly \
"扫描代码中的安全漏洞:SQL注入、XSS、敏感信息泄露"
performance-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Performance Check
run: |
codex --quiet --sandbox readonly \
"分析代码性能问题:N+1查询、内存泄漏、不必要的计算"
4. 自动化测试生成
(1) PR 触发测试生成
YAML
name: Generate Tests
on:
pull_request:
paths:
- 'src/**'
jobs:
generate-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check Coverage
run: |
npm test -- --coverage
COVERAGE=$(cat coverage/coverage-summary.json | jq '.total.lines.pct')
if [ "$COVERAGE" -lt 80 ]; then
echo "Coverage below 80%, generating tests..."
codex --full-auto \
"为覆盖率不足的文件补充单元测试,目标覆盖率 80%"
fi
(2) 定时测试生成
YAML
name: Weekly Test Update
on:
schedule:
- cron: '0 2 * * 1' # 每周一凌晨2点
jobs:
update-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Update Tests
run: |
codex --full-auto \
"检查所有源文件,为缺少测试的文件生成单元测试"
5. 质量门禁
(1) 代码质量检查
YAML
name: Quality Gate
on:
pull_request:
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Quality Check
run: |
RESULT=$(codex --quiet --sandbox readonly \
"评估代码质量,评分 1-10,标准:可读性、可维护性、安全性、性能")
echo "$RESULT"
SCORE=$(echo "$RESULT" | grep -oP 'Score: \K\d+')
if [ "$SCORE" -lt 7 ]; then
echo "Quality score below 7, blocking PR"
exit 1
fi
(2) 自动修复 + 人工审查
YAML
name: Auto Fix and Review
on:
pull_request:
jobs:
auto-fix:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Auto Fix
run: |
codex --auto-edit \
"修复所有 lint 错误和格式问题"
git diff > auto-fixes.patch
- name: Upload Patch
uses: actions/upload-artifact@v4
with:
name: auto-fixes
path: auto-fixes.patch
6. 安全扫描
YAML
name: Security Scan
on:
push:
branches: [main]
pull_request:
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Security Audit
run: |
codex --quiet --sandbox readonly \
"执行安全审计:
1. 检查硬编码密钥和凭证
2. 检查 SQL 注入风险
3. 检查 XSS 风险
4. 检查不安全的依赖
5. 检查不安全的 API 调用
输出风险等级和修复建议"
7. 成本控制
| 策略 | 说明 |
|---|---|
| 限制触发条件 | 只在关键路径变更时触发 |
| 使用只读模式 | 审查任务用 --sandbox readonly |
| 选择合适模型 | 审查用轻量模型,生成用强模型 |
| 缓存结果 | 相同代码不重复审查 |
| 设置超时 | 避免长时间运行消耗 token |
❓ 常见问题
Q CI/CD 中的 Codex 安全吗?
A 使用
--sandbox readonly 模式只做审查,不做修改。需要修改时用 --auto-edit 并人工审查修改结果。Q 每次 CI 运行成本多少?
A 取决于任务复杂度和模型。简单审查约 $0.01-0.05/次,复杂生成约 $0.1-0.5/次。建议使用 DeepSeek 降低成本。
Q 可以替代 SonarQube 吗?
A 不能完全替代。Codex 擅长语义层面的审查,SonarQube 擅长规则层面的扫描。两者互补。
Q 如何避免 Codex 在 CI 中卡住?
A 设置
timeout 参数,使用非交互模式,配置 --approval-policy approve 或 deny。Q GitLab CI 也能用吗?
A 可以。Codex CLI 是跨平台的,任何 CI 系统都能使用。
📖 小节
- Codex 在 CI/CD 中的角色:审查员、测试生成器、安全扫描器
- GitHub Actions 集成:审查 PR、生成测试、质量门禁
- 安全模式:审查用 readonly,修改需人工确认
- 成本控制:限制触发条件、选择模型、设置超时
📝 作业
- 基础题(难度⭐):创建一个 GitHub Actions 工作流,在 PR 时自动运行 Codex 代码审查。
- 进阶题(难度⭐⭐):实现自动测试生成——覆盖率低于 80% 时自动补充测试。
- 挑战题(难度⭐⭐⭐):设计完整的 CI/CD 流水线:代码审查 → 自动修复 → 测试生成 → 安全扫描 → 质量门禁。