01
До первого запуска: определить границы Agent и Xcode CI
Подключать Codex к GitHub Actions можно, но задачи трех участников процесса следует описывать отдельно. Codex Agent выполняет порученную работу в рамках своего задания и настроек безопасности. Xcode и xcodebuild отвечают за компиляцию и тестирование Apple-проекта. GitHub Actions связывает задания, условия запуска, разрешения и передачу результатов между ними. Официальный README Codex GitHub Action описывает Action для workflow и содержит сведения о политиках безопасности для macOS и Linux; конкретные входные параметры, значения по умолчанию и актуальную поддержку нужно сверять перед внедрением.
Три результата нельзя объединять в одно «CI прошло»:
- Результат Agent — статус выполнения задания Codex и его текстовый вывод.
- Изменение рабочей копии — diff, созданный или изменённый в ходе задания.
- Результат Xcode CI — код завершения
xcodebuild, результаты тестов и сохранённый пакет результатов, если проект его создаёт.
- Подписанный артефакт — отдельный объект выпуска, требующий доступа к соответствующим материалам подписи и собственной проверки.
Успешный статус Action не заменяет сборку: Agent мог корректно выполнить анализ, но не проверить компиляцию целевого приложения. Аналогично, зелёный статус сборочного задания не подтверждает качество вывода Agent, если изменение не было проверено и принято по правилам команды.
Перед настройкой выберите предполагаемую роль Codex. Для чтения и замечаний обычно достаточно ограниченного доступа к коду без возможности изменять ветку. Для правок требуется отдельный путь представления изменений — например, diff или проверяемый результат задания. Участие в выпуске требует значительно более строгого рассмотрения: доступ к ключам, профилям и цепочке публикации нельзя выдавать только потому, что Agent добавлен в workflow.
| Вариант организации |
Где выполняется работа |
Что можно проверить |
Решение по применимости |
| Codex и Xcode в одном задании |
На одном Runner в рамках общего job |
Удобно связать изменения и команду сборки, но общий контекст исполнения усложняет изоляцию полномочий |
Только для доверенного кода и среды без ненужных секретов |
| Раздельные задания Agent и Mac-сборки |
Agent выполняется отдельно, затем проверенный результат передаётся Mac job |
Отдельно видны статус Agent, diff и результат Xcode |
Предпочтительный стартовый вариант для контролируемого внедрения |
| Только ручная проверка на Mac |
Codex формирует результат, разработчик переносит его в проверяемую ветку |
Решение о принятии изменений остаётся у команды; автоматическая передача ограничена |
Подходит для раннего испытания или строгих требований к допуску |
Для начального внедрения обычно проще защищать раздельные задания: Xcode Runner получает только принятый к проверке исходный код, а не полномочия Agent на изменение рабочего процесса. Объединение допустимо лишь после анализа того, какие файлы, токены и системные ресурсы становятся доступны процессу. Это оценка архитектурного риска, а не гарантия безопасности от выбранного способа разделения.
Оценка здесь качественная: раздельный запуск лучше подходит для изоляции, единый job — для упрощения передачи контекста, ручной перенос — для минимизации автоматических полномочий. Ни один вариант сам по себе не гарантирует безопасное выполнение кода; важны доверие к триггеру, доступ Runner и очистка среды.