I’ve been looking into implementing a CI pipeline for UE4 projects, and I noticed that there only seemed to be a handful of outdated Linux Dockerfiles for UE4 floating around on GitHub (and most of those were geared towards running the Editor in a container, not providing a build environment suitable for a CI pipeline.) So I set about experimenting and ended up creating a set of Dockerfiles and an accompanying Python build script that provide the necessary functionality to build both Windows and Linux Docker images for UE4.19. (Other versions should work as well, but I’ve only tested 4.19 thus far.)
You can check out the code and associated documentation here: GitHub - adamrehn/ue4-docker: Windows and Linux containers for Unreal Engine 4
I ran into quite a few frustrations along the way (especially with the Windows container version), and I’ve documented these issues and their solutions here: Building Docker images for Unreal Engine 4 - Adam Rehn
Hopefully people find these containers useful!
Thanks for approaching this problem in what seems, at least to me, to be the right way! My struggles with a Packer -> Vagrant -> Ansible <-> Win10 virtual box only yield mediocre Windows build results, and it’s great to see you’ve laid a solid foundation for a proper Dockerized pipeline. I think I will find your ue4-docker and conan-ue4cli projects to be quite useful
I haven’t looked at Docker for Windows in a while, but I see there is now Linux Containers on Windows available, so that both container flavors can be run side by side. Jenkins is going to love this!
I just wanted to say thanks for sharing this - we’ve been beating out head against a wall with Windows containers and UE4 for a while now! Really impressive you got past it! (Our issue was that missing .dll and we could never figure out which one was missing).
Just as a quick follow-up: after further testing, I’ve determined which DLLs are needed in order to be able to cook content using the Windows container image (the Linux image was already capable of this without any issues.) This means that the Docker containers are now suitable for using AutomationTool to package Shipping builds of projects.
I’ve updated both the ue4-docker repo and the accompanying article accordingly. I’ve also added example Jenkinsfiles to the Demo OpenCV Integration repo that provide examples of automated builds for both Conan packages and UE4 projects that consume them.
Hopefully this provides a more comprehensive starting point for anyone looking to implement their own CI pipelines for UE4 projects.