Hello!
In short, I’m wondering how you best would go about solving having concurrent game builds running on a single jenkins machine?
Some background:
I’m an engineer at a small-ish game studio and we have recently begun looking into Unreal after previously having only worked with our own tech.
As we develop and maintain several game projects for several platforms we have a build server that automate builds using Jenkins.
With Jenkins we run each combination of game, platform, configuration and region as separate and concurrent build jobs.
However, this way of automating builds becomes a problem when we use the Unreal build tools.
From what I understand and have experienced, it is not possible to run several processes of the same UBT- and UAT instances without conflicts. When I try this I get errors that conflicting instances are running (as they were executed from the same path), or file io errors in the engine folders.
I ran into this problem as I tried to set up two concurrent game builds (for two different platforms) of our test game project using one instance of a custom “installed build” of Unreal.
Running non-concurrent builds won’t scale great for us when the amount of build jobs increase.
What are the recommendations, experiences and best practices for running several concurrent Unreal game builds on the same machine?
It looks like each job will require its own engine instance (in some way)?
What is the recommended way to go in that case?
Some alternatives I thought of so far:
-
- Pull engine source into jenkins job. 2. Also pull game code into same job. 3. Build both. (I have read that this might cause long unnecessary rebuilds of the engine even when it hasn’t changed.)
-
Or: 1. Pull engine source into jenkins job. 2. Also pull game code into same job. 3. Build a local installed build for that job’s platform target. 3. Build game using that local installed build.
-
Or: 1. Pull engine source into its own jenkins job. Build an installed build that contains all target platforms we need. 2. Pull game code into its own jenkins job. 3. Let jenkins copy the built artifact from the engine job into the game job. 4. Build game using copied engine.
Thank you for any pointers or ideas!