AutomationTool Overview

A host program and a set of utility libraries that enable you to script unattended processes related to Unreal Engine.

Windows
MacOS
Linux

AutomationTool is a host program and a set of utility libraries you can use to script unattended processes related to Unreal Engine when using C#. Internally, we use AutomationTool for a variety of tasks, including building, cooking, and running games, running automation tests, and scripting other operations to be executed on our build farm.

The source code for AutomationTool, and various scripts that run under it, can be found under Engine/Source/Programs/AutomationTool.

While we provide this tool as a courtesy, the level of support we can provide is limited.

How AutomationTool Works

Automation Projects

When run, AutomationTool finds all automation projects (saved as Visual Studio C# projects with an .Automation.csproj extension), compiles them, and then uses reflection to find the appropriate command to be executed. Those commands are implemented as classes derived from the BuildCommand base class, and are identified by the class name.

To learn more, read how to add an automation project and how to add a command.

Running AutomationTool

You can run commands under the Visual Studio debugger on Windows, or from the command line on Windows, Mac, and Linux.

Running Commands under the Debugger

To run AutomationTool under the Debugger in Visual Studio:

  1. Right click the AutomationTool Project, and select Properties from the context menu.

  2. Select the Debug tab, and enter your command name (here, we use SampleCommand) into the Start Options > Command line arguments: field. AutomationTool_CmdLineArg.png

  3. Set a breakpoint in your script before pressing the F5 key (or clicking the Start button in the Visual Studio toolbar).

Running Commands from the command line (Windows)

To run AutomationTool from the command line:

  1. Open a Command Prompt window.

  2. Change the working directory to Engine/Build/BatchFiles.

  3. Enter the following into the command line: RunUAT.bat SampleCommand

Running Commands from the terminal (Mac/Linux)

To run AutomationTool from the terminal:

  1. Open the terminal.

  2. Change the working directory to Engine/Build/BatchFiles.

  3. Enter the following into the command line: ./RunUAT.sh SampleCommand

Command Line Syntax

The general syntax of the AutomationTool command line is:

RunUAT.bat Command1 [-Arg1 -Arg2...] Command2 [-Arg3 -Arg4…] ...

Here, two commands will be run sequentially. -Arg1 and -Arg2 are passed to Command1, and -Arg3 and -Arg4 are passed to Command2.

Global options:

Option

Description

-Help

Shows help and options for AutomationTool in general, or (when specified after a command name) help for that particular command.

-List

Displays a list of all available AutomationTool commands.

-P4

Enable Perforce support.

-Submit

Allows automated processes to submit files.

-NoCompile

Prevents AutomationTool from compiling any .Automation.csproj files on startup.

If set, the following environment variables are used to configure Perforce support for build machines. They may be set via the AutomationTool command line in the VARNAME=VALUE syntax or inherited from the current session.

Environment Variable

Description

uebp_PORT

The Perforce server and port (for example, perforce:1666).

uebp_CLIENT_ROOT

Path to the local root directory of the current client (for example, D:\P4).

uebp_CL

The current changelist that is synced to.

uebp_CodeCL

The current code changelist that is synced to.

This may be before the current changelist specified by uebp_CL.

uebp_USER

The Perforce user.

uebp_CLIENT

Name of the client used to access Perforce.

uebp_BuildRoot_P4

Path to the root of the current branch or stream (for example, //UE4/Release-4.22).

Welcome to the new Unreal Engine 4 Documentation site!

We're working on lots of new features including a feedback system so you can tell us how we are doing. It's not quite ready for use in the wild yet, so head over to the Documentation Feedback forum to tell us about this page or call out any issues you are encountering in the meantime.

We'll be sure to let you know when the new system is up and running.

Post Feedback