Linux continuous integration

A feature request… I don’t believe there is currently a linux continuous integration server (based on the fact that the head consistently doesn’t build under linux). Could there please be one?

Having worked places where everyone carries on when someone breaks the build, I know first hand how much being careful with commits slows things down. But the problem is the Linux build is currently very unstable. So I’m constantly updating from the trunk in the hopes that you’ve solved my problems. It would be much appreciated if you could show us linux people a little bit of extra love for the next few releases until things settle down. I really want to use Unreal Engine but it’s very painful at the moment.

Also makefiles need a clean target. See here for details A new, community-hosted Unreal Engine Wiki - Announcements - Epic Developer Community Forums (your continuous integration server needs to make clean before a build).

I’ve been playing with google compute (cloud stuff). Did this as an experiment… http://104.155.222.199/ it’s using their free trial and will auto-go-away on the 20th Jan 2015.

That is pretty cool.

Perhaps you could write up how you got all that setup in the Google Compute Cloud on our Linux Wiki?

You can clean a target by passing ARGS=-clean (e.g. make ShaderCompileWorker UE4Editor ARGS=-clean).

As for build instability, do not use master. All bets are off with it - people commit code they are currently working on, it may be incomplete or broken for some platforms.

So people are allowed to push code that doesn’t even compile locally on their machine? It seems to me master is broken a lot of the time. Are there no continuous integration build servers that automatically email people when they have broken the master build?

There is a CI system in place, although it doesn’t run compile after each commit (which are too numerous for that), but instead runs using certain rules that balance between the number of batched commits vs. time needed to run a particular job. This often results in CIS notifications coming out relatively late (e.g. after a few hours).

It is generally expected that people do NOT check in the code that breaks the build, however, relatively few people have the ability (and time) to compile their change against all the 9 or so platforms that the engine runs on, and in all configurations (headless server, client only, standalone game, editor, debuggame editor etc) - even with Incredibuild this takes time, and builds for some platforms cannot (or just haven’t yet) be reliably parallelized, so committing a change that breaks a platform you are not working on is relatively common.

However, builds of each branch are regularly promoted (i.e. tested for usability issues) and non-code developers (authoring blueprint or simply the content) are expected to use promoted builds only. If QA cannot determine a usable build within certain period (usually 48 hours) - i.e. all builds are broken, either cannot be compiled or crash, or have regressions in functionality - then the branch in question is locked down and the only commits allowed are those that deal with the identified problems.

Yeah… problem was that all the “stable” builds were unusable on linux. So I was trying the master hoping things would be fixed.