logo
0
0
WeChat Login
📝 docs(readme): 补充插件说明与使用示例

Codex

CNB 云原生构建 流水线中运行 OpenAI Codex CLI 的插件。

基于 openai/codex-action 移植,适配 CNB 云构建平台的 Docker 插件体系。

功能特性

  • 开箱即用:内置 Codex CLI 和 Responses API Proxy,无需额外安装
  • API Key 安全隔离:通过 Proxy 中转 API 调用,Key 不会泄露到 Codex 进程环境变量
  • 灵活的沙箱模式:支持 read-onlyworkspace-writedanger-full-access
  • 结构化输出:支持 Output Schema(内联或文件)
  • 变量导出:Codex 输出可导出为流水线环境变量,供后续 Stage 使用
  • 版本可控:支持运行时指定 Codex CLI 版本

快速开始

1. 准备 API Key

在 CNB 密钥仓库中创建 openai.yml 文件:

# 密钥仓库文件:openai.yml OPENAI_API_KEY: 'sk-your-api-key-here'

2. 配置 .cnb.yml

main: push: - name: codex-task docker: image: node:20 imports: - https://cnb.cool/<your-org>/<your-secrets-repo>/-/blob/main/openai.yml stages: - name: 运行 Codex image: docker.cnb.cool/<your-org>/codex:latest settings: prompt: '检查代码并修复所有 lint 错误' openai_api_key: $OPENAI_API_KEY model: o3-mini sandbox: workspace-write exports: final_message: CODEX_OUTPUT - name: 查看输出 script: echo "$CODEX_OUTPUT"

插件参数

参数必填默认值说明
prompt是*-提示词文本(与 prompt_file 二选一)
prompt_file是*-提示词文件路径(与 prompt 二选一)
openai_api_key-OpenAI API Key,提供后自动启动 Proxy
api_url-自定义 API 地址(支持 Azure OpenAI、自建代理等)
responses_api_endpoint-api_url,完整名称别名
model-使用的模型(如 gpt-5.4
effort-推理力度(xhighhighmediumlow
sandboxworkspace-write沙箱模式
codex_args-额外传递给 codex exec 的参数
output_file-Codex 输出写入的文件路径
output_schema-内联 JSON Schema
output_schema_file-JSON Schema 文件路径
codex_version-运行时安装指定版本(留空使用镜像内置版本)
working_directory.Codex 工作目录

* promptprompt_file 必须提供其中一个。

沙箱模式

模式说明
read-onlyCodex 只能读取文件,无法写入或访问网络
workspace-write默认。Codex 可以读写工作区内的文件
danger-full-accessCodex 拥有完全访问权限(不推荐)

导出变量

插件执行完成后,Codex 的最终输出消息会通过 final_message 导出。在 .cnb.yml 中通过 exports 使用:

stages: - name: 运行 Codex image: docker.cnb.cool/<your-org>/codex:latest settings: prompt: '分析代码' openai_api_key: $OPENAI_API_KEY exports: final_message: CODEX_RESULT - name: 使用结果 script: echo "$CODEX_RESULT"

高级用法

自定义 API 地址和模型

支持任意兼容 OpenAI Responses API 的端点(如 Azure OpenAI、自建代理、第三方服务):

stages: - name: 使用自定义 API 和模型 image: docker.cnb.cool/<your-org>/codex:latest settings: prompt: '分析代码质量' openai_api_key: $OPENAI_API_KEY api_url: 'https://your-custom-endpoint.com/v1/responses' model: 'gpt-5.4' sandbox: workspace-write

api_urlresponses_api_endpoint 等效,优先使用 api_url(更简洁)。

Azure OpenAI 示例

stages: - name: Azure OpenAI Codex image: docker.cnb.cool/<your-org>/codex:latest settings: prompt: '修复所有 Bug' openai_api_key: $AZURE_OPENAI_KEY api_url: 'https://your-resource.openai.azure.com/openai/v1/responses' model: 'gpt-5.4'

切换模型

# 使用 gpt-5.3-codex stages: - name: Codex gpt-5.3-codex image: docker.cnb.cool/<your-org>/codex:latest settings: prompt: '分析代码' openai_api_key: $OPENAI_API_KEY model: 'gpt-5.3-codex' effort: 'xhigh'

使用 Prompt 文件

stages: - name: Codex 执行 image: docker.cnb.cool/<your-org>/codex:latest settings: prompt_file: .codex/review-prompt.md openai_api_key: $OPENAI_API_KEY model: o3-mini

结构化输出

stages: - name: Codex 结构化分析 image: docker.cnb.cool/<your-org>/codex:latest settings: prompt: '分析代码质量并给出评分' openai_api_key: $OPENAI_API_KEY output_schema: | { "type": "object", "properties": { "score": { "type": "number" }, "issues": { "type": "array", "items": { "type": "string" } } } }

PR 触发代码审查

main: pull_request: - name: codex-review docker: image: node:20 imports: - https://cnb.cool/<your-org>/<your-secrets-repo>/-/blob/main/openai.yml stages: - name: 代码审查 image: docker.cnb.cool/<your-org>/codex:latest settings: prompt: '审查本次变更,输出 Markdown 审查报告' openai_api_key: $OPENAI_API_KEY model: o3-mini sandbox: read-only

自定义 Codex 版本

stages: - name: 使用指定版本 image: docker.cnb.cool/<your-org>/codex:latest settings: prompt: '修复 bug' openai_api_key: $OPENAI_API_KEY codex_version: '0.1.0'

构建插件镜像

# 构建默认版本 docker build -t codex:latest . # 构建指定 Codex 版本 docker build --build-arg CODEX_VERSION=0.1.0 -t codex:0.1.0 .

与 GitHub Action 的差异

特性GitHub codex-actionCNB codex-plugin
安全策略drop-sudo / unprivileged-user / read-only / unsafeDocker 容器天然隔离 + sandbox 模式
权限检查GitHub Collaborator APICNB 原生权限体系(CNB_TOKEN
运行环境虚拟机(Linux/macOS/Windows)Docker 容器(Linux)
API Proxy独立安装 + 复杂配置内置于插件镜像
密钥管理GitHub SecretsCNB 密钥仓库 + imports
输出传递@actions/core setOutput##[set-output] + exports

安全说明

  • API Key 通过 Responses API Proxy 中转,不直接暴露给 Codex 进程
  • Proxy 启动后 server-info 文件权限锁定为只读
  • Docker 容器提供进程级隔离,流水线结束后容器销毁
  • 建议使用 CNB 密钥仓库存储 API Key,避免明文写入配置

许可证

基于 openai/codex-action 移植,遵循原项目许可证。