Unreal Engine 5 Test template

TeamCity UE5 test config that I use for Project Rising

Fri, 04 Aug 2023

Full config

<?xml version="1.0" encoding="UTF-8"?>
<template xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" uuid="458a0c4b-5c78-454f-b1fa-1e079051af72" xsi:noNamespaceSchemaLocation="https://www.jetbrains.com/teamcity/schemas/2021.1/project-config.xsd">
  <name>Unreal Game Test</name>
  <settings>
    <options>
      <option name="artifactRules" value="%teamcity.build.workingDir%\dist\Windows =&gt; Windows" />
      <option name="buildNumberPattern" value="%version_name%.%build.counter%" />
      <option name="checkoutMode" value="ON_AGENT" />
      <option name="publishArtifactCondition" value="SUCCESSFUL" />
    </options>
    <parameters>
      <param name="version_name" value="0.1.0" />
    </parameters>
    <build-runners>
      <runner id="RUNNER_25" name="Build Editor" type="simpleRunner">
        <parameters>
          <param name="plugin.docker.imageId" value="eddiebeazer/unreal-engine:%UNREAL_ENGINE_VERSION%" />
          <param name="plugin.docker.imagePlatform" value="windows" />
          <param name="plugin.docker.pull.enabled" value="true" />
          <param name="script.content" value="ue4 build Development Editor" />
          <param name="teamcity.step.mode" value="default" />
          <param name="use.custom.script" value="true" />
        </parameters>
      </runner>
      <runner id="RUNNER_27" name="Test Game" type="simpleRunner">
        <parameters>
          <param name="plugin.docker.imageId" value="eddiebeazer/unreal-engine:%UNREAL_ENGINE_VERSION%" />
          <param name="plugin.docker.imagePlatform" value="windows" />
          <param name="script.content" value="ue4 test Project -- ReportOutputPath=%system.teamcity.build.workingDir%\Saved\Reports" />
          <param name="teamcity.step.mode" value="default" />
          <param name="use.custom.script" value="true" />
        </parameters>
      </runner>
      <runner id="RUNNER_38" name="Parse Test Results" type="simpleRunner">
        <parameters>
          <param name="plugin.docker.imagePlatform" value="windows" />
          <param name="plugin.docker.pull.enabled" value="true" />
          <param name="script.content" value="unreal-ci jsonToXml -j %system.teamcity.build.workingDir%\Saved\Reports\index.json -o %system.teamcity.build.workingDir%\Saved\Reports\tests.xml -t %TEST_SUITE_NAME%" />
          <param name="teamcity.step.mode" value="default" />
          <param name="use.custom.script" value="true" />
        </parameters>
      </runner>
    </build-runners>
    <vcs-settings />
    <requirements />
    <build-triggers />
    <build-extensions>
      <extension id="perfmon" type="perfmon">
        <parameters />
      </extension>
      <extension id="DockerSupport" type="DockerSupport">
        <parameters>
          <param name="login2registry" value="PROJECT_EXT_3" />
          <param name="loginCheckbox" value="on" />
        </parameters>
      </extension>
      <extension id="BUILD_EXT_7" type="xml-report-plugin">
        <parameters>
          <param name="xmlReportParsing.reportDirs" value="%system.teamcity.build.workingDir%\Saved\Reports\*.xml" />
          <param name="xmlReportParsing.reportType" value="junit" />
        </parameters>
      </extension>
      <extension id="jetbrains.agent.free.space" type="jetbrains.agent.free.space">
        <parameters>
          <param name="free-space-fail-start" value="true" />
          <param name="free-space-work" value="50gb" />
        </parameters>
      </extension>
    </build-extensions>
    <cleanup />
  </settings>
</template>

This template makes sure the editor is always building and runs functional tests. In the future this will also lint blueprints

  1. Build the editor. I use ue4cli to help with that
ue4 build Development Editor
  1. I run my functional tests.
ue4 test Project -- ReportOutputPath=%system.teamcity.build.workingDir%\Saved\Reports
  1. I then parse the report. Unreal Engine test report is in JSON, I created unreal-ci which is a cli tool that will then parse the JSON and output a JUnit xml file that can then be parsed by TeamCity/Jenkins
unreal-ci jsonToXml -j %system.teamcity.build.workingDir%\Saved\Reports\index.json -o %system.teamcity.build.workingDir%\Saved\Reports\tests.xml -t %TEST_SUITE_NAME%
Buy Me A CoffeeDigitalOcean Referral Badge
Loading...
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.

DigitalOcean Referral Badge