Настройка CI/CD пайплайнов для сборки билдов игр

Ручная сборка Unity-проекта на локальной машине разработчика — это не пайплайн, а риск. Сборка зависит от локальных настроек среды, версии редактора, импортированных кешей. «У меня работает» превращается в «а у QA нет, потому что там другая версия скриптов или другой кеш Shader Compiler». Настройка

Наши компетенции

Другие услуги студии

VR/AR/MR приложения на заказ

Впечатляйте клиентов и обучайте команду в виртуальной реальности

Разработка игр на Unity

От идеи до релиза — игры, которые запоминаются

3D-моделирование и анимация

Оживим ваш продукт в объёмной графике и анимации

VR-тренажёры промышленного оборудования

Тренируем операторов на технике без риска и простоя

AR-инструкции для производства

Пошаговые подсказки прямо на оборудовании — без бумаги

Safety-тренажёры

Отработка ЧС и техники безопасности без выхода на объект

VR/AR-тренинги

Обучаем персонал сервису, адаптации и soft skills в VR

Обучающие викторины

Проверка знаний в формате игры — легко и без стресса

Корпоративные видеоинструкции

Понятные ролики для обучения сотрудников и клиентов

Геймификация бизнес-процессов

Мотивируем команду через игровые механики в KPI и HR

Приложения для инфокиосков

Интерактивные экраны для магазинов, стендов и офисов

VR/AR-инсталляции

Wow-эффект для брендов на выставках, ивентах и в шоу-румах

Виртуальные выставки и музеи

Ваша экспозиция доступна из любой точки мира — 24/7

Event-квесты и брендированные игры

Запоминающиеся игры для конференций и клиентских ивентов

Часто задаваемые вопросы

Последние работы

  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    1515
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    1017
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    648
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    729
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Обучающая викторина для детей «Покупки в магазине»
    117

Ручная сборка Unity-проекта на локальной машине разработчика — это не пайплайн, а риск. Сборка зависит от локальных настроек среды, версии редактора, импортированных кешей. «У меня работает» превращается в «а у QA нет, потому что там другая версия скриптов или другой кеш Shader Compiler». Настройка CI/CD пайплайнов для сборки игр — это автоматизация, которая устраняет невоспроизводимость билдов. Мы решаем это автоматизацией. Мы — команда с более чем 7-летним опытом в геймдеве, настроившая CI/CD для 30+ проектов. Автоматизация экономит до $1.8k–2.6k в месяц на типичном проекте, а при трёх и более платформах — до $2.7k–3.9k. Окупается за 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. На каждом есть свои тонкости. Пошаговая инструкция:

  1. Validation — быстрые проверки без полной сборки: unit tests через game-ci/unity-test-runner, codeformat check, Asset Database integrity. Запускается на каждый push, занимает 5–10 минут.
  2. Build — полная сборка для целевых платформ. Запускается при merge в develop или по расписанию. Android: 15–40 минут. iOS: 30–60 минут. WebGL: 10–25 минут.
  3. Distribution — после успешного билда: Android AAB → Google Play Internal Testing через fastlane supply, iOS IPA → TestFlight через fastlane pilot, WebGL → S3/CDN-хостинг. QA получает уведомление в Slack с прямой ссылкой на тест-билд.
  4. 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 дня

Стоимость рассчитывается после анализа инфраструктуры и целевых платформ. Свяжитесь с нами для консультации — это бесплатно. Мы гарантируем стабильность и сопровождение. Закажите оценку проекта, чтобы получить точные сроки и бюджет.