GitHub Action
在 GitHub Actions 中使用 Codex
概述
Codex GitHub Action 允许你在 CI/CD 流程中集成 Codex,实现自动化的代码审查、测试生成等任务。
快速开始
基础用法
yaml
name: Codex Code Review
on:
pull_request:
branches: [main]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Codex Review
uses: openai/codex-action@v2
with:
api-key: ${{ secrets.OPENAI_API_KEY }}
mode: review配置选项
必需参数
| 参数 | 说明 |
|---|---|
api-key | OpenAI API 密钥 |
mode | 运行模式 |
可选参数
| 参数 | 默认值 | 说明 |
|---|---|---|
model | codex-latest | 使用的模型 |
files | all | 审查的文件 |
exclude | none | 排除的文件 |
fail-on-issues | false | 发现问题时失败 |
comment-pr | true | 是否在 PR 评论 |
使用模式
1. 代码审查模式
yaml
- name: Code Review
uses: openai/codex-action@v2
with:
api-key: ${{ secrets.OPENAI_API_KEY }}
mode: review
comment-pr: true
fail-on-issues: false2. 测试生成模式
yaml
- name: Generate Tests
uses: openai/codex-action@v2
with:
api-key: ${{ secrets.OPENAI_API_KEY }}
mode: test-generation
test-framework: jest3. 文档生成模式
yaml
- name: Generate Docs
uses: openai/codex-action@v2
with:
api-key: ${{ secrets.OPENAI_API_KEY }}
mode: docs
output-dir: docs/generated4. Bug 检测模式
yaml
- name: Bug Detection
uses: openai/codex-action@v2
with:
api-key: ${{ secrets.OPENAI_API_KEY }}
mode: bug-detection
fail-on-issues: true高级用法
条件审查
yaml
- name: Codex Review
uses: openai/codex-action@v2
with:
api-key: ${{ secrets.OPENAI_API_KEY }}
mode: review
files: |
src/**/*.ts
!src/**/*.test.ts
exclude: |
**/*.d.ts
**/vendor/**多模型审查
yaml
- name: Multi-Model Review
uses: openai/codex-action@v2
with:
api-key: ${{ secrets.OPENAI_API_KEY }}
model: codex-latest
fallback-model: codex-fast自定义提示
yaml
- name: Custom Review
uses: openai/codex-action@v2
with:
api-key: ${{ secrets.OPENAI_API_KEY }}
mode: custom
prompt: |
请审查这段代码,特别关注:
1. 安全性问题
2. 性能问题
3. 代码可读性
请用中文回答。完整示例
PR 自动审查
yaml
name: PR Code Review
on:
pull_request:
types: [opened, synchronize]
branches: [main, develop]
jobs:
codex-review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install Dependencies
run: npm ci
- name: Run Codex Review
uses: openai/codex-action@v2
with:
api-key: ${{ secrets.OPENAI_API_KEY }}
mode: review
comment-pr: true
fail-on-issues: false
files: |
src/**/*.ts
src/**/*.tsx自动测试生成
yaml
name: Generate Tests
on:
push:
branches: [develop]
paths:
- 'src/**/*.ts'
jobs:
generate-tests:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Generate Tests
uses: openai/codex-action@v2
with:
api-key: ${{ secrets.OPENAI_API_KEY }}
mode: test-generation
test-framework: jest
create-pr: true
- name: Create Pull Request
uses: peter-evans/create-pull-request@v5
with:
title: 'chore: auto-generated tests'
body: 'Automatically generated by Codex'环境变量
yaml
env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
OPENAI_MODEL: codex-latest
CODEX_CONFIG: .codex.json输出
Codex Action 提供以下输出:
yaml
outputs:
review-summary: ${{ steps.codex.outputs.summary }}
issues-found: ${{ steps.codex.outputs.issues }}
pr-comment: ${{ steps.codex.outputs.comment }}安全最佳实践
1. 使用 Secrets
yaml
# 好:使用 Secrets
with:
api-key: ${{ secrets.OPENAI_API_KEY }}
# 不好:硬编码密钥
with:
api-key: sk-xxx # 不要这样做!2. 限制权限
yaml
permissions:
contents: read
pull-requests: write3. 文件过滤
yaml
with:
files: |
src/**/*.ts
exclude: |
**/*.test.ts
**/node_modules/**故障排除
认证失败
确保 API 密钥正确配置:
yaml
with:
api-key: ${{ secrets.OPENAI_API_KEY }}超时错误
增加超时时间:
yaml
with:
timeout: 600 # 10 分钟查看日志
bash
# 在 GitHub Actions 界面查看详细日志定价
GitHub Actions 使用 Codex 会计入 API 使用量:
- 按 Token 计费
- 查看 定价页面 了解详情