用 GitHub Action 跑 Codex
基于官方 Codex GitHub Action 教程,讲清 openai/codex-action@v1 适合什么 CI/CD 任务、权限怎么给、结果怎么验收。
Codex GitHub Action,也就是 openai/codex-action@v1,是在 GitHub Actions 里运行 Codex 的官方入口。它安装 Codex CLI,在你提供 API key 时启动 Responses API proxy,并按指定权限运行 codex exec。
GitHub Action 不是免审自动合并器。第一版只做只读 PR review;自动修复和推送必须放到更后面,并保留人工 review。
GitHub Action
官方 Codex GitHub Action 文档。
Non-interactive mode
Action 本质上是在 workflow 里运行 codex exec。
CI/CD auth
先处理 API key、GitHub token 和 fork PR 风险。
什么时候用
flowchart LR
Event["GitHub event"] --> Workflow["workflow job"]
Workflow --> Action["openai/codex-action"]
Action --> Exec["codex exec"]
Exec --> Output["final message / artifact / patch"]
Output --> Review["PR review / human approval"]
适合:
- 在 PR 上自动生成 Codex review。
- 把 Codex 检查放进 CI pipeline。
- 不想自己安装和管理 Codex CLI。
- 需要把最终 Codex message 传给后续 GitHub steps。
- 任务已经可以用
codex exec清楚描述。
不适合:
- prompt 还没写清。
- 不知道应该给 read-only 还是 workspace-write。
- 让来自任意 fork 的输入直接驱动 Codex。
- 没准备好保护 OpenAI key 和 GitHub token。
- 希望 Codex 无限制自动改主分支。
Prompt 放哪里
短任务可以用 inline prompt。
长期维护的任务放进 prompt file,例如:
.github/codex/prompts/review.mdprompt 和 prompt-file 二选一。新手推荐 prompt file,因为它能被团队 review、版本管理和复用。CI prompt 也是代码资产,不应该藏在无人维护的 workflow 片段里。
权限怎么给
权限要分三层看:
- GitHub job permissions。
- Codex sandbox。
- runner safety strategy。
只读 review 通常从 contents: read 起步。要回写 PR comment 时,再给 pull-requests: write。
Codex sandbox 也先收紧:
- read-only:审查、总结、风险报告。
- workspace-write:生成 patch 或修改工作区文件。
- danger-full-access:不作为默认 CI 路线。
官方 Action 默认 safety strategy 是 drop-sudo。Windows runner 需要特殊处理,不应作为新手第一版路线。
触发条件
不要让任何人都能触发带 secret 的 Codex job。来自 PR、issue、commit message 的内容都要当成不可信输入。
尤其注意:
- fork PR。
- 外部贡献者。
- 自动评论触发。
- workflow dispatch 输入。
- issue body 和 PR description 里的 prompt injection。
如果工作流会使用 OPENAI_API_KEY 或 GitHub token,触发条件必须保守。
输出怎么用
Action 会提供最终 Codex message。你可以把它交给后续 step:
- 发 PR comment。
- 上传 artifact。
- 写入报告。
- 作为 job output 给后续任务消费。
如果只需要人读,保存 final message 就够。如果要程序解析,底层 codex exec 应使用结构化输出,例如通过 schema 固定字段。
不要一开始就做“自动应用 + 自动提交 + 自动评论”。先保存输出、人工看,再逐步自动化。
稳妥落地顺序
第一版:只读 PR review。Codex 只输出风险点,不改文件。
第二版:把结果发成 PR comment。GitHub token 只给评论所需权限。
第三版:在受控分支上生成 patch,并复跑测试。
第四版:只有测试通过时,才开自动修复 PR,仍然由人 review。
这个顺序能让团队先建立信任,再扩大自动化范围。
常见坑
- 把 Action 当成能替代 CI 的质量系统。
- prompt 太宽,输出泛泛意见。
- workflow、GitHub token、Codex sandbox 权限都太大。
- secret 进入日志、artifact 或 prompt 输出。
- 同时设置
prompt和prompt-file。 - 没有 checkout 代码,Codex 读不到 repository contents。
- 让不可信用户触发带写权限的 job。
验收清单
- Action 运行前已经 checkout 正确 diff。
- 能说明 GitHub job permissions、Codex sandbox、safety strategy。
- 日志里能看到 Codex 最终输出,但看不到 OpenAI key、auth 文件和私有 token。
- 失败时能定位 prompt、API key、proxy、sudo strategy、文件权限或触发者权限。
- 同一个 PR 重跑能得到稳定格式的结果。
- 自动修复必须生成可 review 的 PR,不直接改主分支。