CI/CD With Unreal Engine, Jenkins and Perforce

Learn how to automate your pipelines from start to finish

Thu, 16 Sep 2021

UPDATE: This is a generic setup of a basic build and deployment phase for an unreal engine game. I started a dev log for my game Edgemaul Legends, you can see me apply these steps slowly over the course of the next few months. Edgemaul Legends Pipeline

This is going to be a bit of a long series. In this series I’m hoping to show you how to easily set up a CI/CD environment for your Unreal Engine projects without having to go through all the loops that I did.

I automated my entire build and deploy process(except for production builds) in order to speed up the process as well as make sure each deployment is replicated in the same fashion as the last one. I currently use PlayFab for server deployments, Steam for my client builds, Perforce for source code management and Jenkins to manage the entire process.

There isn’t going to be much info in this post. This is mainly to redirect you to the correct post for each step in the process. As I post these topics I will update each step with the corresponding link

  1. Perforce setup for Unreal Engine - Perforce Setup for Unreal
  2. Jenkins setup for Unreal and Perforce - Jenkins Setup for Unreal
  3. Setting up an Unreal Engine build agent - Unreal Engine Build Agents for Jenkins
  4. Jenkinsfile Overview - Here are two examples. The basic example will just be a simple setup of the environment and building a client. The advanced example will build a server, client, lint, deploy the client to steam and the server to PlayFab. Basic Example
  5. Testing Phase Part 1(Linting) - Linting with LinterV2. Look in the Linting section of this post
  6. Testing Phase Part 2(Functional Testing) - Functional Testing With Gauntlet. Look in the Gauntlet section of this post
  7. Deploying to Steam - Steam Deployments. Follow and add the command under Usage -> OS to your Jenkinsfile

Future plans - I want to go over some Test Driven Development scenarios with Unreal Engine and Jenkins. I’m currently entrenched in a project and do not have the time. Once I have some more time I want to add those steps to this.

Buy Me A CoffeeDigitalOcean Referral Badge
Edward Beazer

Edward Beazer - I just like to build shit. Sometimes I get stuck for hours, even days while trying to figure out how to solve an issue or implement a new feature. Hope my tips and tutorials can save you some time.