AgentHarness 课程
Hermes 专题/课程概述

第四十一课:CI/CD 集成

GitHub Actioncodex exec自动化JSON输出

学习目标

  • 了解 Codex 的 CI/CD 集成方式
  • 掌握 GitHub Action 配置
  • 学会自动化测试和部署
  • 了解最佳实践

一、codex exec 命令

codex exec 是用于 CI/CD 的非交互模式命令。它让 Codex 可以在自动化流水线中运行。

1.1 基本用法

codex exec "运行测试并修复失败的用例"

1.2 常用参数

  • --sandbox:沙盒策略,控制文件系统访问
  • --ask-for-approval:审批策略,控制是否需要确认
  • --json:JSON 输出,便于自动化处理
  • --output-last-message:保存输出到文件
  • --timeout:超时时间

1.3 CI/CD 示例

codex exec \
  --sandbox workspace-write \
  --ask-for-approval never \
  --json \
  --timeout 300 \
  "检查代码质量,运行测试,修复问题"

这个命令会在 CI/CD 环境中:

  1. 检查代码质量
  2. 运行测试
  3. 修复发现的问题
  4. 输出 JSON 格式的结果

二、GitHub Action

2.1 官方 Action

Codex 提供官方 GitHub Action,可以在 CI/CD 流水线中使用。

2.2 配置示例

name: Codex CI
on: [push, pull_request]

jobs:
  codex:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: openai/codex-action@v1
        with:
          task: "运行测试并检查代码质量"
          model: codex-mini-latest
          sandbox: workspace-write
        env:
          OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

2.3 自定义任务

可以根据需要自定义任务:

  • 代码审查:分析代码质量
  • 测试运行:运行测试并修复问题
  • 文档生成:生成或更新文档
  • 安全扫描:检查安全漏洞

2.4 矩阵构建

jobs:
  codex:
    strategy:
      matrix:
        task: ["代码审查", "测试运行", "安全扫描"]
    steps:
      - uses: openai/codex-action@v1
        with:
          task: ${{ matrix.task }}

三、JSON 输出

3.1 启用 JSON

codex exec --json "任务描述"

3.2 输出格式

{
  "status": "success",
  "output": "任务执行结果...",
  "changes": [
    {
      "file": "src/utils.ts",
      "type": "modified",
      "diff": "..."
    }
  ],
  "duration": 123,
  "tokens_used": 4567
}

3.3 处理 JSON

使用 jq 或其他工具处理 JSON 输出:

# 获取状态
codex exec --json "任务" | jq -r '.status'

# 获取修改的文件
codex exec --json "任务" | jq -r '.changes[].file'

# 获取输出
codex exec --json "任务" | jq -r '.output'

四、自动化最佳实践

4.1 API Key 管理

  • 使用 CI/CD 专用的 API Key
  • 存储在 Secrets 中,不要硬编码
  • 定期轮换密钥
  • 限制 Key 的权限范围

4.2 权限控制

  • 使用最小权限原则
  • 限制沙盒策略为 workspace-write
  • 设置合理的超时时间
  • 禁止访问敏感资源

4.3 日志记录

  • 记录所有执行命令
  • 保存输出结果
  • 设置告警和监控
  • 定期审查日志

4.4 结果验证

  • 检查执行状态
  • 验证输出内容
  • 测试修改结果
  • 运行回归测试

五、集成场景

5.1 Pull Request 审查

在 PR 创建时自动运行代码审查:

on:
  pull_request:
    types: [opened, synchronize]

jobs:
  review:
    steps:
      - uses: openai/codex-action@v1
        with:
          task: "审查 PR 代码,提供改进建议"

5.2 测试自动化

在提交时自动运行测试并修复问题:

on: push

jobs:
  test:
    steps:
      - uses: openai/codex-action@v1
        with:
          task: "运行测试,修复失败的用例"

5.3 文档更新

在代码变更时自动更新文档:

on: push

jobs:
  docs:
    steps:
      - uses: openai/codex-action@v1
        with:
          task: "更新 API 文档"

5.4 安全扫描

定期运行安全扫描,发现潜在问题:

on:
  schedule:
    - cron: '0 0 * * 0'  # 每周日

jobs:
  security:
    steps:
      - uses: openai/codex-action@v1
        with:
          task: "运行安全扫描,报告潜在问题"

六、本课小结

要点说明
codex execCI/CD 非交互模式
GitHub Action官方 CI/CD 集成
JSON 输出便于自动化处理
最佳实践API Key、权限、日志、验证
集成场景PR 审查、测试、文档、安全

下一步

下一课我们将了解 Codex SDK。