Ручна збірка 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 дні |
Вартість розраховується після аналізу інфраструктури та цільових платформ. Зв'яжіться з нами для консультації — це безкоштовно. Ми гарантуємо стабільність та супровід. Замовте оцінку проекту, щоб отримати точні терміни та бюджет.






