Container-based builds
Updated to "adopt". Container based builds has getting to the de facto standard for our pipelines in GitLab or other CI Tools.
Running your builds in isolated containers keeps your build servers clean. It allows you to even run them with multiple versions of a framework or programming language. You don't need additional machines like you would for running builds with PHP5 or PHP7 at the same time or running some legacy builds.
Note that you need to think about some kind of caching mechanism for your dependencies to avoid downloading them in every build, which would cause long build times.
At DCX, we are currently starting to use this approach for building services and it is especially useful if your build has special dependencies. Also, it's possible to use GitLab as a build tool or use Docker with the new Jenkins pipeline. For caching we are evaluating minio as a cache server. We noticed that our builds run quite rapidly and reliably with that. Also, the complexity of the builds decreased since we don't need any workarounds, which were caused by having everything installed on one build server.