Codex: Codex 自动化与 CI/CD

最后更新:2026-08-31

Codex 的非交互模式使其非常适合集成到 CI/CD 流水线中,实现自动化代码审查和质量保证。

📋 前置知识:了解 CI/CD 基本概念,熟悉 GitHub Actions

1. 你将学到


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 approvedeny
Q GitLab CI 也能用吗?
A 可以。Codex CLI 是跨平台的,任何 CI 系统都能使用。

📖 小节


📝 作业

  1. 基础题(难度⭐):创建一个 GitHub Actions 工作流,在 PR 时自动运行 Codex 代码审查。
  2. 进阶题(难度⭐⭐):实现自动测试生成——覆盖率低于 80% 时自动补充测试。
  3. 挑战题(难度⭐⭐⭐):设计完整的 CI/CD 流水线:代码审查 → 自动修复 → 测试生成 → 安全扫描 → 质量门禁。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏