Интеграция CI/CD
Используйте облачный Mac как отслеживаемый постоянный узел сборки
При подключении GitLab CI Runner сначала определите назначение узла, затем зарегистрируйте исполнитель. Один узел может обслуживать несколько очередей, но задачи с высокими правами подписи и обычные задачи компиляции должны использовать разные метки, каталоги и области действия учётных данных.
Регистрация
Установите и зарегистрируйте GitLab CI Runner
Завершите установку с помощью регистрационных данных, предоставленных проектом или командой. Назначьте узлу метки, отражающие архитектуру, версию Xcode и тип задачи, и отключите приём задач без меток, чтобы произвольные конвейеры не занимали узел сборки.
- Запишите имя Runner и проект-владелец
- Метки содержат сведения о наборе инструментов и типе задачи
- Проверьте права каталога пользователя, выполняющего задачи
Постоянная работа
Управляйте постоянными задачами сборки
Запускайте Runner как контролируемую фоновую задачу и убедитесь, что после перезапуска он восстанавливается. Не удерживайте процессы сборки в личной терминальной сессии: разрыв сессии не должен прерывать выполняемую компиляцию или тестирование.
- Проверьте владельца процесса и способ запуска
- Ограничьте число одновременно выполняемых задач
- Задайте правила завершения для задач с превышенным временем ожидания
Кэш
Закрепите каталог кэша и границы очистки
Разделите кэш зависимостей, DerivedData, архивы и итоговые артефакты. Кэш можно переиспользовать, архивы нужно отслеживать, а временные файлы следует удалять по правилам конвейера. При аномальном росте диска сначала найдите каталог, не удаляйте неизвестные данные напрямую.
- Отдельно фиксируйте пути к кэшу и артефактам
- Настройте отдельный каталог для каждого проекта
- Регулярно проверяйте свободное место и источник роста
Изоляция
Изолируйте данные для подписи и права доступа к репозиториям
Передавайте минимально необходимые учётные данные по проектам и разрешайте задачи подписи только из защищённых веток. В логах фиксируйте лишь успешность загрузки данных, не выводя пароли, закрытые ключи, токены и содержимое материалов для подписи.
- Защитите конфиденциальные переменные и ограничьте ветки
- Разделите обычные задачи компиляции и подписи разными метками
- Удаляйте временные файлы после завершения задачи