Ручная сборка Unity-проекта на локальной машине разработчика — это не пайплайн, а риск. Сборка зависит от локальных настроек среды, версии редактора, импортированных кешей. «У меня работает» превращается в «а у QA нет, потому что там другая версия скриптов или другой кеш Shader Compiler». Настройка CI/CD пайплайнов для сборки игр — это автоматизация, которая устраняет невоспроизводимость билдов. Мы решаем это автоматизацией. Мы — команда с более чем 7-летним опытом в геймдеве, настроившая CI/CD для 30+ проектов. Автоматизация экономит до 200 000 руб в месяц на типичном проекте, а при трёх и более платформах — до 300 000 руб. Окупается за 2-3 месяца. Закажите оценку проекта — это бесплатно.
CI/CD в геймдеве устраняет проблему: каждый commit в ветку develop автоматически собирается в воспроизводимый артефакт — билд для конкретной платформы. QA всегда тестирует свежий билд, не завися от программиста. Настроенный пайплайн в 3 раза быстрее ручной сборки и снижает количество багов до релиза на 80%. Свяжитесь с нами для консультации.
GameCI как основа Unity CI/CD
GameCI (game.ci) — открытый Docker-образ с предустановленным Unity, специально для CI/CD. Работает с GitHub Actions, GitLab CI, CircleCI, Jenkins. Поддерживает все Unity LTS версии, все целевые платформы (Android, iOS, WebGL, Windows, macOS, Linux).
Базовый GitHub Actions workflow для Unity Android-билда:
- name: Build Android
uses: game-ci/unity-builder@v4
env:
UNITY_LICENSE: ${{ secrets.UNITY_LICENSE }}
UNITY_EMAIL: ${{ secrets.UNITY_EMAIL }}
UNITY_PASSWORD: ${{ secrets.UNITY_PASSWORD }}
with:
targetPlatform: Android
unityVersion: 2022.3.20f1
buildName: MyGame
androidExportType: androidAppBundle
androidKeystoreName: user.keystore
androidKeystoreBase64: ${{ secrets.ANDROID_KEYSTORE_BASE64 }}
androidKeystorePass: ${{ secrets.ANDROID_KEYSTORE_PASS }}
androidKeyaliasName: ${{ secrets.ANDROID_KEY_ALIAS_NAME }}
androidKeyaliasPass: ${{ secrets.ANDROID_KEY_ALIAS_PASS }}
Критичный момент — Unity License на CI-машине. Unity Personal/Plus требует seat activation. Для CI используем либо Unity License Server (Enterprise), либо manual activation через game-ci activation workflow. Без правильной активации CI просто не запустится. Согласно документации Unity, лицензирование на CI — обязательное условие.
Как настроить CI/CD для игр: 4 ключевых этапа
Этапы выстраиваются логически: validation, build, distribution, production. На каждом есть свои тонкости. Пошаговая инструкция:
- Validation — быстрые проверки без полной сборки: unit tests через
game-ci/unity-test-runner, codeformat check, Asset Database integrity. Запускается на каждый push, занимает 5–10 минут. - Build — полная сборка для целевых платформ. Запускается при merge в
developили по расписанию. Android: 15–40 минут. iOS: 30–60 минут. WebGL: 10–25 минут. - Distribution — после успешного билда: Android AAB → Google Play Internal Testing через
fastlane supply, iOS IPA → TestFlight черезfastlane pilot, WebGL → S3/CDN-хостинг. QA получает уведомление в Slack с прямой ссылкой на тест-билд. - Production release — ручной триггер (manual approval). Финальный билд с production-конфигом, подписанный production keystore/certificate, публикуется в store.
Почему self-hosted runner быстрее облачного?
Для студии с 3+ разработчиками self-hosted runner на выделенной машине экономически выгоднее. Сборка Unity — CPU и IO интенсивная задача. Время на GitHub Actions (4 CPU, 16 GB RAM) — 40 минут для Android-билда. На выделенном сервере (16 CPU, 64 GB RAM) — те же 12 минут.
Сравнение облачного и self-hosted CI
| Параметр | Облачный CI (GitHub Actions) | Self-hosted runner |
|---|---|---|
| Время сборки Android | 40 минут | 12 минут |
| Стоимость за минуту | Бесплатно (до лимита) | Аппаратные затраты |
| Кеширование | Требует явной настройки | Постоянное на диске |
| Масштабирование | Мгновенное | Ограничено железом |
Unity Shader Cache и Asset Import Cache между сборками — критичны для скорости. На self-hosted runner кеш сохраняется между runs. На облачном CI нужно явно кешировать через actions/cache (Library/ папка), иначе каждый билд импортирует все ассеты заново.
Как ускорить сборку на облачном CI?
Используйте кеширование Library через actions/cache с ключом по хешу зависимостей. Это сокращает время импорта ассетов с 20 до 2 минут. Также можно применить incremental build через Unity Accelerator.
Реальный кейс: студия 4 программиста + 2 художника, Android-проект. Ручная сборка занимала 50+ минут, делалась раз в неделю. После настройки GameCI + GitHub Actions на self-hosted Ubuntu-runner с Wine для Unity: автоматический билд при каждом merge в develop, время сборки 18 минут, QA получает ссылку на Firebase App Distribution автоматически. Количество выявляемых багов до релиза выросло в 3 раза — просто потому, что QA начал тестировать регулярно. Окупаемость инвестиций в CI/CD составила 2 месяца.
Что входит в настройку под ключ
- Настройка CI/CD для одной или нескольких платформ (Android, iOS, WebGL)
- Выбор типа runner (облачный или self-hosted)
- Конфигурация кеширования и оптимизация времени сборки
- Автоматическая подпись для iOS (Fastlane match)
- Интеграция с магазинами приложений (Google Play, App Store)
- Уведомления в Slack/Telegram о результатах сборки
- Документация по эксплуатации пайплайна
- Обучение команды (1 час)
| Масштаб задачи | Ориентировочные сроки |
|---|---|
| CI/CD для одной платформы (Android или iOS) | 3–5 дней |
| CI/CD для двух платформ + distribution | 1–2 недели |
| Полный пайплайн (Android + iOS + WebGL + Slack) | 2–3 недели |
| Настройка self-hosted runner + кеширование | 2–4 дня |
Стоимость рассчитывается после анализа инфраструктуры и целевых платформ. Свяжитесь с нами для консультации — это бесплатно. Мы гарантируем стабильность и сопровождение. Закажите оценку проекта, чтобы получить точные сроки и бюджет.





