第四十一课: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 环境中:
- 检查代码质量
- 运行测试
- 修复发现的问题
- 输出 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 exec | CI/CD 非交互模式 |
| GitHub Action | 官方 CI/CD 集成 |
| JSON 输出 | 便于自动化处理 |
| 最佳实践 | API Key、权限、日志、验证 |
| 集成场景 | PR 审查、测试、文档、安全 |
下一步
下一课我们将了解 Codex SDK。