Automating Game Builds with CI/CD Pipelines

Automating Game Builds with CI/CD Pipelines Manual Unity builds on a developer's local machine are not a pipeline — they're a risk. Builds depend on local environment settings, editor version, imported caches. "It works on my machine" becomes "but QA doesn't have it because they have a different

Our competencies

Other studio services

Frequently Asked Questions

Latest works

  • image_games_mortal_motors_495_0.webp
    Game development for Mortal Motors
    1504
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    A turn-based strategy game set in a fantasy setting, With Fire and Sword
    1005
  • image_games_second_team_604_0.webp
    Game development for the company Second term
    633
  • image_games_phoenix_ii_606_0.webp
    3D animation - teaser for the game Phoenix 2.
    716

Automating Game Builds with CI/CD Pipelines

Manual Unity builds on a developer's local machine are not a pipeline — they're a risk. Builds depend on local environment settings, editor version, imported caches. "It works on my machine" becomes "but QA doesn't have it because they have a different script version or Shader Compiler cache." Setting up continuous integration and deployment for game builds eliminates unreproducible artifacts. We solve this by automating. Our team has 7+ years in game dev, having set up automation for 30+ projects. Average monthly savings: $2,500 across platforms, with up to $3,000 per month for three or more platforms. It pays for itself in 2–3 months. Get a free project assessment — contact us.

CI/CD in game dev eliminates the problem: every commit to the develop branch automatically produces a reproducible artifact — a build for a specific platform. QA always tests the fresh build without depending on the programmer. A configured pipeline is 3x faster than manual builds and reduces pre-release bugs by 80%. Contact us for a consultation.

GameCI as the Foundation of Unity CI/CD

GameCI (game.ci) is an open-source Docker image with pre-installed Unity, specifically for automation. It works with GitHub Actions, GitLab CI, CircleCI, Jenkins. Supports all Unity LTS versions, all target platforms (Android, iOS, WebGL, Windows, macOS, Linux).

A basic GitHub Actions workflow for Android compilation:

- 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 }} 

A critical point — Unity License on the CI machine. Unity Personal/Plus requires seat activation. For CI we either use Unity License Server (Enterprise) or manual activation via the game-ci activation workflow. Without proper activation the CI simply won't run. According to Unity documentation, licensing for CI is mandatory.

How to Set Up CI/CD for Games: 4 Key Stages

The stages are logically ordered: validation, build, distribution, production. Each has its own subtleties. Step-by-step:

  1. Validation — quick checks without full build: unit tests via game-ci/unity-test-runner, code format check, asset dependency graph integrity. Runs on every push, takes 5–10 minutes.
  2. Build — full compilation for target platforms using incremental compilation and binary caching. Runs on merge to develop or on schedule. Android: 15–40 minutes. iOS: 30–60 minutes. WebGL: 10–25 minutes.
  3. Distribution — after successful build: Android AAB → Google Play Internal Testing via fastlane supply, iOS IPA → TestFlight via fastlane pilot, WebGL → S3/CDN hosting. QA gets a Slack notification with a direct link to the test build.
  4. Production release — manual trigger (manual approval). Final build with production config, signed with production keystore/certificate, published to store.

Why Self-Hosted Runner is Faster Than Cloud?

For studios with 3+ developers, a dedicated build machine is more cost-effective. Unity compilation is CPU and I/O intensive. Time on GitHub Actions (4 CPU, 16 GB RAM) — 40 minutes for Android build. On a dedicated server (16 CPU, 64 GB RAM) — same build in 12 minutes.

Comparison of cloud vs self-hosted CI
Parameter Cloud CI (GitHub Actions) Self-hosted runner
Build time Android 40 minutes 12 minutes
Cost per minute Free (up to limit) Hardware costs
Caching Requires explicit setup Persistent on disk
Scaling Instant Limited by hardware

Unity's shader cache and asset import cache between builds are critical for speed. On a self-hosted runner the cache persists between runs. On cloud CI you need to explicitly cache using actions/cache (Library/ folder), otherwise each build imports all assets from scratch.

How to Speed Up Builds on Cloud CI?

Use Library caching via actions/cache with a key based on dependency hash. This reduces asset import time from 20 to 2 minutes. You can also apply incremental builds via Unity Accelerator, and leverage IL2CPP optimization options to reduce compile time.

Real case: A studio with 4 programmers and 2 artists, Android project. Manual builds took 50+ minutes, done once a week. After configuring GameCI + GitHub Actions on a self-hosted Ubuntu runner with Wine for Unity: automatic build on every merge to develop, build time 18 minutes due to asset bundle splitting and shader stripping, QA receives a link to Firebase App Distribution automatically. The number of pre-release bugs found tripled — simply because QA started testing regularly. ROI on automation was 2 months.

What's Included in Turnkey Setup

  • CI/CD setup for one or multiple platforms (Android, iOS, WebGL)
  • Choice of runner type (cloud or self-hosted)
  • Cache configuration and build time optimization
  • Automatic iOS signing (Fastlane match)
  • Integration with app stores (Google Play, App Store)
  • Build result notifications in Slack/Telegram
  • Pipeline operation documentation
  • Team training (1 hour)
  • Setup cost averages $2,500 for a single platform pipeline.
Scope of Task Estimated Timeline
CI/CD for one platform (Android or iOS) 3–5 days
CI/CD for two platforms + distribution 1–2 weeks
Full pipeline (Android + iOS + WebGL + Slack) 2–3 weeks
Self-hosted runner setup + caching 2–4 days

Cost is calculated after analyzing the infrastructure and target platforms. Contact us for a free consultation. We guarantee stability and support. Get a project assessment to receive exact timeline and budget.