Linux continuous integration

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.