Announcement

Collapse
No announcement yet.

Docker, Jenkins and Unreal Engine

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

    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?

    1.
    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

    2.
    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 ...

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

    4. (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
    https://github.com/skymapgames/jenkins-ue4

    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.
    Last edited by PShaikh; 08-01-2019, 05:53 PM.
Working...
X