DevOps / CI·CD
11 апреля 2026
Xcode SwiftPM реестр, resolve и CI-кэш на арендованном облачном Mac (2026)
MacXCode Engineering Team · ~16 мин
На Apple Silicon в SG/JP/KR/HK/US East чаще ломается загрузка зависимостей, а не компилятор. Читайте также SwiftPM и CocoaPods, параллельный xcodebuild, self-hosted runner.
Почему важен регион
- Разные маршруты egress и списки IP.
- Git LFS и бинарные артефакты чувствительны к RTT.
- Мультитенант: не делите глобальный SPM-кэш слепо.
Правило: коммитить
Package.resolved на релизных ветках; на main — только чтение resolve.Аутентификация без GUI
Секреты CI → ~/.netrc, права 600, удаление после задачи.
Политика lock
| Ветка | Политика | CI |
|---|---|---|
main | Lock обязателен | Ошибка при изменении графа |
| Feature | Обновления ботом | PR с новым lock |
| Библиотека | часто без lock | временный lock в CI |
Пути
| Путь | Роль | Заметка |
|---|---|---|
SourcePackages | Исходники | изоляция на задачу |
| DerivedData | Индекс | лимиты параллелизма |
| Глобальный SPM | Загрузки | тёплый RO + отдельные писатели |
Шаги CI
swift package resolve — подпись и resolve в том же пользователе, что и удалённый archive.
Матрица
| Тема | Метрика | Митигация |
|---|---|---|
| RTT | TTFB | зеркало |
| GitHub | 429 | backoff |
| Диск | fs_usage | отдельный том |
FAQ
| Вопрос | Ответ |
|---|---|
| Отключать кэш? | Только при отладке порчи. |
| Xcode Cloud? | См. сравнение. |
| Детерминизм | Checksum Package.resolved в CI. |
Mac mini M4
Быстрый NVMe и unified memory. Тарифы, Справка.
См. также: