Docker, Jenkins and Unreal Engine

Hi guys,

first of all: I’m not really sure if this is the proper category, I apologize if not and feel free to move it to the proper category.

Terminology:

  • headless = without GUI
  • preseeded = A file is given to simulate userintaraction.

I’m trying to integrate Jenkins (running in a Docker) with Unreal Engine (Unreal’s Build Tool).

A brief explanation of Jenkins and Docker, skip it if you know what that is:

Docker is basically a linux based containerization-tool, each software runs in its own container containing its runtime environment.
There is a Docker Repository where you can get the images for your Docker-container.

Jenkins is a powerful scheduling and automation tool, its able to build, (auto-)test and deploy your software. Its based on plugins (e.g. CMake-plugin to use CMake as buildmanagament-tool), but there is no Unreal Build Tool plugin.

===END OF DESCRIPTION===

Why am I trying this?

I’m coming from Java and currently there exists a microservice-“hype”… however, when developing microservice, the amount of those can grow rapidly.
At some point you cannot handle the build, tests and deployments manually. Therefore we need some automation, the workflow is:

  • develop some software
  • push it to source control
  • Jenkins triggers on push for each commit: build, test and deployment
  • microservices usually run in a Dockercontainer with its own Java Virtual Machine and all the needed ressources, therefore a microservices is deployed into a (new) Dockercontainer

The automation makes sure that everyone is on the same page, meaning the builds are always executed the same way, the runtime-environment doesn’t change …

I’m a lazy guy and so should every developer be -> automate whatever is automateable to save your time for the important things -developing- :slight_smile:

  1. (optional)
    Also my project makes http-requests to microservices, it would be awesome when I could run my dedicated server in a Dockercontainer including all the automated deployments for development- and test-environment.

I was thinking, why not use the automation of Jenkins for a Unreal Engine projects and i found this:

https://patricevignola.com/post/auto…jenkins-unreal

This tutorial is good for Windows users, but the only time I’m using windows is when working with Unreal Engine…

So I’m facing those issues:

  • My Dockercontainer which runs the Jenkins does not know anything about Unreal’s Build Tool. (This could be fixed when running the Unreal Builds on a specific Jenkins Slave which runs on a Windows OS and installing Unreal Engine, but I’d rather not.) As I mentioned, Docker is linux based and when I go into the the container’s filesystem, which is only possible in headless mode -> I cannot install the Engine, so is there a way of installing the Engine headless on a cut down linux system, meaning I wont have much linux-commands to work with (maybe even a presseded installation)?
  • In the linked tutorial the guy uses a script to pilot Jenkins but again the tutorial is for Windows users so a translation from the used batch-commands to shell-commands would be awesome.
  • A scheduled task needs to be tested espacially when developing. Given some automation-tests, how can I run those tests from command line, again preferably as a shell-command.

A last word
I know all of this could be done when having a Windows Slave for Jenkins, but this brings other issues becouse Jenkins communicated to its slaves via SSH, this would be a big issue.

I appreciate your patience reading this and thanks in advance. Hope you guys are able to help.

1 Like