Building SubmitTool
There are multiple ways to build it, you can build the tool using the .sln or package the program as a standalone version that can be distributed as you want. To package the program you can use UAT BuildCookRun.
At Epic Games we use Horde to build it via BuildGraph.
Distributing SubmitTool
We have two locations users can download SubmitTool from: Via UGS as a Custom Tool (for most users) or via the Horde Tools page (for advanced users/Mac/Linux, or anyone needing manual distribution).
After you’ve set up SubmitTool as a custom tool in UGS, you can open UGS, click “Options” at the bottom right, “Application Settings”, and check the “Submit Tool” checkbox. This will add SubmitTool as an option to your P4V client.
UGS Custom Tools configured via UGS
UGS can be configured to handle the installation of custom tools.
You configure UGS to scan a P4 path for tools and their updates by providing it with a P4 depot path in UGS’ Deployment.json file:
{ [...] "toolsDepotPath": "//depot/InternalTools/UnrealGameSync/bin/Tools", }
It will look for .ini files and then a corresponding zip file name following this directory structure:
ToolDepotFolder/ToolName/ToolName.ini
ToolDepotFolder/ToolName/ToolName.zip
To update a tool, simply commit a new version of its zip file. UGS will automatically update the tool if it finds a newer version in Perforce. It polls periodically.
The Custom Tool’s .ini file contains its ID, name, description, and optionally, its installation and uninstallation steps.
See how the .ini file gets read in ToolUpdateMonitor.ParseToolInfo(..).
We provide a PowerShell script for installing SubmitTool to P4V which you can find at https://github.com/EpicGames/UnrealEngine/blob/ue5-main/Engine/Programs/SubmitTool/Build/Win64/InstallSubmitTool.ps1.
That Build folder also contains installation scripts for Mac and Linux.
Here’s an example SubmitTool.ini:
[Settings] Id=cc165d7a-8ed8-4d0f-9b99-072e94b913ef Name=SubmitTool Description=Submit Tool InstallCommand=InstallSubmitTool.ps1
Here is an example BuildGraph file that compiles SubmitTool, submits it to a P4 depot for UGS to find, and also publishes it as a Horde tool: https://dev.epicgames.com/community/snippets/wQ2g/unreal-engine-submittool-buildgraph-example.
Configuring SubmitTool
The base engine SubmitTool settings are in WorkspaceFolder/Engine/Programs/SubmitTool/Config/SubmitTool.ini.
Each project can override it in WorkspaceFolder/ProjectName/Config/SubmitTool.ini.
For the parameters you can set, see Engine/Source/Programs/SubmitTool/Private/Parameters/SubmitToolParameters.h.
Submit tool config works in override layers on a property-by-property basis. You can check the override hierarchy in the SubmitToolParametersBuilder.cpp constructor.
As a non-exhaustive summary:
- Load internal .ini packaged with SubmitTool
- Load .ini in the root directory that we’re running
- Scan the top-level folders for .uprojects and a Config/SubmitTool.ini next to them
- Load up a user-level override in %LOCALAPPDATA%/SubmitTool/SubmitTool.ini
Each config location has a later specific override for each platform (WindowsSubmitTool.ini, MacSubmitTool.ini, LinuxSubmitTool.ini)
Integrating it - Into P4V
After installing Submit Tool through UnrealGameSync, it can be run from P4V via Tools > SubmitTool, or by right-clicking on the changelist and selecting “SubmitTool” from the menu.
Integrating it - Into Unreal Editor
We have recently made a plugin available called SubmitToolEditor, see here: https://github.com/EpicGames/UnrealEngine/tree/ue5-main/Engine/Plugins/Experimental/SubmitToolEditor.
Enabling this plugin will allow projects to override the submit flow and call an exe/args to allow submission to be handled externally.
This is what our config section looks like in DefaultEditor.ini. It requires the SubmitTool to be installed in a predefined place for anyone trying to submit using the editor, using UGS here has that advantage over other distribution methods.
[/Script/SubmitToolEditor.SubmitToolEditorSettings] SubmitToolPath=$(LocalAppData)/UnrealGameSync/Tools/SubmitTool/Current/Windows/Engine/Binaries/Win64/SubmitTool.exe SubmitToolArguments=-server $(Port) -user $(User) -client $(Client) -cl $(Changelist) -root-dir \\\"$(RootDir)\\\" bSubmitToolEnabled=True bEnforceDataValidation=True
Jira Integration
The Jira button integrates with Jira, authenticating and fetching tickets assigned to the user and allowing you to easily add the ID as a tag. If you don’t use Jira in your organization you won’t have any need for that tag.
[Image Removed]