Мобильные команды колеблются между облачным Bitrise macOS и self-hosted агентами на выделенных удалённых Mac: первое даёт ясные счета, но фиксирует семантику очередей и образов; второе ощущается как аренда VPS, но требует зрелых секретов и дисциплины диска. Аудитория: платформенные инженеры и лиды iOS. Боль: поминутный биллинг, треки стеков, пулы агентов и сессии связки ключей пересекаются. Результат: семь скрытых допущений, матрица из четырёх схем (ссылки на runner GitHub Actions и GitLab Runner), шестишаговый onboarding-runbook, FAQ ведёт к ценам аренды и справочному центру.
Bitrise сворачивает YAML, маркетплейс шагов и минутные дашборды; реальные инциденты iOS всё ещё там, где пересекаются отпечатки Xcode, границы подписи и усиление диска. Без этих тем в ревью остаётся спор о логотипах.
Self-hosted ≠ ноль операций: агент — лишь исполнитель; корни Ruby/Bundler, кэши CocoaPods/SwiftPM и контракты DERIVED_DATA остаются за вами — см. зависимости и диск.
Облачные минуты и CapEx аренды не складываются линейно: финансы должны моделировать пики релизной недели и ночное простаивание ядер; всегда включённые узлы амортизируют idle в каждой сборке.
Игнор сезонных апдейтов Xcode/стека: облачные job’ы часто мигрируют сами; self-hosted требует canary-workflow и окно отката.
Подпись на чужом ноутбуке: корпоративные сертификаты и match — на выделенных CI-пользователях с ротацией — см. Fastlane без GUI.
Смешивать Bitrise без изоляции путей: как в корпоративных пулах сборки; безымянные workspace сталкиваются в релизных поездах.
Недооценка первого GUI-прохода: разовая интерактивная сессия по чеклисту SSH vs VNC, затем снова headless.
Сетевые проверки заканчиваются браузером: нужны стабильный egress и коллбеки консоли; TLS-прокси оставляют воркеры «зомби» без явных логов.
Общая причина — воспринимать удалённые Mac как аренду CPU, а не прод-узлы с отпечатком toolchain и границами комплаенса. Если смотрите CircleCI/Buildkite, читайте гибрид CircleCI и агент Buildkite.
До второго агента опубликуйте три метрики: глубина очереди P95, распределение длительности Archive E2E, недельная дельта диска. Иначе вы копируете хаос. Выделенное железо предсказуемее офисных ноутбуков; Apple Silicon снижает риски подписи и ревью по сравнению с сомнительной виртуализацией — фиксируйте в RFC, не в чатах.
Универсального победителя нет: зафиксируйте близость workflow к репозиториям, кто гарантирует минутные счета и физически ли выделена macOS-ёмкость.
| Измерение | Bitrise cloud macOS | Bitrise self-hosted (выделенный удалённый Mac) | GitHub Actions self-hosted | GitLab Runner (shell) |
|---|---|---|---|---|
| Плоскость управления | Bitrise UI/API + YAML репо | То же + явные пути агента и пулы | Метки runs-on + группы runner | tags + область регистрации |
| Биллинг | Минуты workflow + уровни стека | Часто двойной контур облачные минуты + фикс-аренда | Минуты Actions + износ железа | Лицензии параллелизма runner + железо |
| Эластичность | Зрелые параллельные стадии | Честный потолок CPU/IO на машину | Матрицы + разбиение меток | Стиль mutex resource_group |
| Типичный fit | Быстрые юнит-тесты, прототипы IPA | Archive, корпоративная подпись, длинные интеграции с тёплым диском | Команды, завязанные на события GitHub | Глубокая связка с моделью прав GitLab |
«Арендовать Mac как VPS» в Bitrise — сохранить эргономику workflow и запереть Xcode + секреты + NVMe за контрактным выделенным хостом.
Если Steps уже липкие, но нескольким тяжёлым job нужны предсказуемые диски и домены подписи: лёгкая валидация в облачных стеках, тяжёлые сборки в self-hosted пулах — явными условиями workflow. Пиковое давление смещается с «ждём кредиты» на «ждём свою очередь», сбои ближе к SSH-доступным хостам.
Опишите RACI «кто меняет подпись» и «кто чистит кэши» для Bitrise/GitHub/GitLab — иначе три пайплайна запагируются в день истечения сертификата. Финансы: переиспользуйте сетку из покупка vs аренда TCO до переключения стеков Bitrise.
Порядок: учётные записи и каталоги, затем регистрация агента, затем параллелизм. Подписи меню — по актуальной доке Bitrise; здесь инженерный каркас.
Выделенный пользователь CI macOS: не смешивать с личными сессиями Apple ID; префикс вроде ~/bitrise-ci.
Заморозить отпечатки toolchain: xcodebuild -version, Ruby, Bundler в документации репо.
Установить/зарегистрировать self-hosted агента по гайду: enrollment-токены как ротируемые секреты с окном истечения в runbook.
Привязать workflow к верному stack/pool: дефолты часто всё ещё указывают на облачных воркеров.
Hello-workflow: checkout + xcodebuild -list для замыкания очередь→хост.
Canary того же Git SHA на облачной и self-hosted дорожке перед масштабированием параллелизма.
xcodebuild -version sysctl hw.memsize hw.ncpu df -h / /usr/bin/security find-identity -v -p codesigning
Подсказка: отключите сон системы и проверьте LaunchDaemon/LaunchAgent после перезагрузки — иначе «днём зелёный, ночью красный» маскируется под инцидент Bitrise.
После замыкания повесьте мониторинг на время ожидания очереди и водяной знак диска хоста: первое ловит неверные пулы, второе — безумные политики кэша. Сопоставьте с параллелизмом XCTest — UI-тесты и compile-heavy job бьют разный IO-профиль.
Зелёные дашборды редко означают простой CPU: разрешение зависимостей, компиляция и пики подписи со временем смещаются — задавайте честные потолки через mutex или отдельные очереди. Выделенные удалённые Mac выигрывают у общих ноутбуков и хрупких VM по латентности NVMe и непрерывности связки ключей; без ограждений диска остаётся риск полусобранных git/Xcode-артефактов поздно в пятницу.
Внимание: остановите планирование ниже порога свободного места; чистите осознанно и логируйте удалённые пути для аудита.
Финансы должны считать не только юнит-цену, но и «часы героизма релизной недели избежали» и «экстренные покупки облачных минут предотвращены». Self-hosted меняет видимые счета Bitrise на патчи, апдейты Xcode и агентов; чистый дата-центр переносит обслуживание внутрь, аренда выделенных узлов часто пакует мультирегиональную логистику — фиксируйте всё ежеквартально.
Персональные данные: храните логи и артефакты минимально необходимое время для доказательств; сроки закрепите в runbook и журналируйте доступ.
Безопасность: self-hosted выполняет произвольные скрипты репозитория — относитесь к хостам как к прод-серверам: ротация SSH-ключей, только ключевая аутентификация, минимальный sudo, изолированные build-аккаунты. Сверяйтесь с воспроизводимыми отпечатками сборки; каждый bump toolchain — canary-workflow и теги отката.
Подгоните пороги под массу репозитория и политику параллелизма.
Одолженные ноутбуки проигрывают политикам сна и сюрпризам ОС; серая виртуализация macOS проваливает аудиты. Держите Bitrise как привычный оркестратор и выносите исполнение macOS на выделенные, всегда включённые, SSH-дружелюбные узлы — пайплайны становятся «контрактного» уровня. Против разового железа или непрозрачных shared-хостов облачная аренда NodeMini Mac Mini даёт яснее SSH-договоры, уровни диска и воспроизводимые профили исполнения для iOS CI/CD и автоматизации. SKU — на странице цен аренды, онбординг — в справочном центре.
Привяжите runbook к внутренним уровням изменений toolchain: minor/major Xcode — разные согласования и области инвалидации кэша; избегайте «всё красное после апгрейда» без ясной границы подписи или диска.
Облако сильно в курируемых стеках и эластичных минутах; железо — в секретных доменах и тёплых кэшах. Лёгкое — в облако, тяжёлую подпись — self-hosted. Сначала сравните уровни на странице цен аренды.
Разводите DerivedData и кэши по Unix-пользователю или корню монтирования; разделяйте связки ключей подписи. Онбординг в справочном центре плюс глубокие материалы по runner.
Проверьте процессы агента и политику сна, затем привязку pool/stack; если прокси режет HTTPS, консоль может показать лишь косвенные симптомы — соберите сетевые доказательства на хосте.