02
试跑前:拆清 Codex、GitHub Actions 与 Xcode 的职责
Codex 负责 Agent 任务,例如审查代码、解释差异或在授权范围内修改工作区;GitHub Actions 负责触发条件、Job 依赖、权限和产物流转;Xcode 与 xcodebuild 才负责 Apple 平台项目的实际构建与测试。Codex 输出可以帮助判断下一步,但不能作为构建通过、测试通过或可发布的证明。
macOS Runner 可运行 Codex GitHub Action。官方 README 将 macOS 列入安全策略支持的平台;但该 Action 不是 Xcode 构建器,项目构建仍须进入具备所需 Xcode 工具链的 Mac Job。若只做代码审查,可先用只读权限;若要修改工作区,再选经过审查的写入策略,并验证实际生效范围。
在独立测试分支或手动触发的试跑工作流中,限制仓库访问范围,使用不含生产证书、描述文件和发布凭据的执行环境。OpenAI 文档记载,权限配置文件支持需 Codex CLI 0.138.0 或更高版本;该数字是特定功能的版本门槛,不代表项目应盲目升级。若选用权限配置文件,须同时检查 CLI 版本、Action 输入和可信配置文件来源;旧版本应回退到已核验的受支持配置。相关版本和配置约束见 OpenAI 官方 README。
| 方案 |
适用任务 |
权限与隔离判断 |
工程适配度 |
Codex 与 xcodebuild 放在同一 Job |
仅限可信代码、一次性 Runner、无签名秘密的初期验证 |
配置简单,但 Agent 与构建代码共享同一执行环境;主机状态、工作区与凭据边界更难拆清 |
中:便于试验,不宜默认用于发布链路 |
| Codex Job 与 Mac 构建 Job 分开 |
代码审查、受控修改、正式 Xcode 构建测试 |
可分别设定 Runner、令牌和秘密;要审查 Job 间交付内容,不应盲目执行 Agent 产物 |
高:更适合逐步上线 |
| Agent 仅输出结论,Mac Job 只构建已审查提交 |
变更风险高、发布权限严格的项目 |
交接点清楚,但修改需先经人工审查并合入或批准 |
高:发布边界最清晰 |
这里的“高/中”是按职责隔离、审查难度与凭据暴露面作出的工程判断,不是本站性能实测。通常 Codex Agent 和 xcodebuild 不必放在同一个 CI Job:分开后,Agent 的结论与 Xcode 的执行结果可以独立追踪;同 Job 主要留给无敏感凭据、可回收主机上的受控试跑。