Sooua
登录
返回文章列表
Codex··3 分钟阅读

CI/CD 流水线集成:自动化 Codex 执行

codex exec 命令提供非交互式执行能力,使 Codex 可嵌入 CI/CD 流水线:

官方原文索引: Scripting Codex / exec command / Headless mode


1. 核心架构与原理解析

codex exec 命令提供非交互式执行能力,使 Codex 可嵌入 CI/CD 流水线:

特性交互式 TUIcodex exec
用户输入实时对话仅初始 Prompt
审批处理人工确认预先配置策略
输出格式富文本 TUI纯文本 / JSONL
适用场景日常开发CI/CD、自动化

2. 工程落地与代码示例

GitHub Actions 完整集成

# .github/workflows/codex-review.yml
name: Codex Auto Review
on:
  pull_request:
    types: [opened, synchronize]
 
jobs:
  codex-review:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0  # 需要完整历史用于 diff
      
      - name: Setup Node.js
        uses: actions/setup-node@v4
        with:
          node-version: 22
      
      - name: Install Codex
        run: npm install -g @openai/codex
      
      - name: Run Codex Security Review
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
          codex exec \
            --sandbox read-only \
            --approval-mode never \
            --model gpt-5.3-codex-spark \
            "审查本次 PR 的安全风险,输出 Markdown 格式的报告"
      
      - name: Comment PR
        uses: actions/github-script@v7
        with:
          script: |
            const fs = require('fs');
            const report = fs.readFileSync('codex-report.md', 'utf8');
            github.rest.issues.createComment({
              issue_number: context.issue.number,
              owner: context.repo.owner,
              repo: context.repo.repo,
              body: report
            });

自动化测试修复

# 当 CI 失败时自动诊断
codex exec --full-auto -c max_budget_usd=10 \
  "CI is failing with the error in logs/. Analyze root cause, fix the code, and run tests until they pass."

预算控制

# 防止 Token 爆炸
codex exec --full-auto -c max_budget_usd=5 "update dependencies"
 
# 超时控制
codex exec --full-auto --timeout 300 "run test suite"

预提交钩子集成

#!/bin/bash
# .git/hooks/pre-commit
 
# 使用 Codex 做代码风格检查
codex exec \
  --sandbox read-only \
  --approval-mode never \
  --model gpt-5.3-codex-spark \
  "检查暂存区的代码风格问题,只报告不修改"
 
if [ $? -ne 0 ]; then
  echo "Codex 发现代码风格问题,请修复后再提交"
  exit 1
fi

3. 场景深入:CI/CD 中的 Codex 实践

场景:夜间回归测试

# .github/workflows/nightly-codex.yml
name: Nightly Codex Regression
on:
  schedule:
    - cron: '0 2 * * *'  # 每天凌晨 2 点
 
jobs:
  regression:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      
      - name: Setup
        run: npm install -g @openai/codex
      
      - name: Run Regression
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
        run: |
          codex exec --full-auto \
            "运行完整测试套件,如果失败则诊断修复并重试,生成回归报告"
      
      - name: Upload Report
        uses: actions/upload-artifact@v4
        with:
          name: regression-report
          path: codex-report.md

场景:依赖安全扫描

# 每周扫描依赖漏洞
codex exec --sandbox read-only \
  "扫描 package.json 中的依赖,检查是否有已知 CVE:
   1. 对比 npm audit 输出
   2. 评估每个漏洞的可利用性
   3. 给出升级建议和兼容性风险"

4. 💡 核心避坑与最佳实践 (Takeaways)

  • CI 中必须使用 API Key:OAuth 不适合自动化场景
  • 设置预算上限max_budget_usd 防止意外高额消费
  • Read Only 审查最安全:CI 中避免自动写入,防止恶意 PR 被自动批准
  • 输出结构化便于解析:使用 -z 获取纯净输出,配合 jq 解析
  • 缓存安装结果:Codex CLI 安装慢,CI 中考虑缓存 npm -g 目录
  • 失败时生成报告:Codex 失败不要直接退出,先生成诊断报告便于排查
分享

评论

登录 后参与讨论。

加载中…

相关文章