Skip to content

Artifact Management

You can use the CreateArtifact task or the Artifact element to tell Horde to save artifacts. These can make artifacts available to download from the dashboard as well as from other tools like UnrealGameSync.

img

Universal Foundry is pre-configured to support three artifact types:

  • ugs-pcb which is the default type used by UnrealGameSync and is retained for 365 days
  • build-artifacts and staged-build which you can use to store arbitrary artifacts and are retained for 30 days.

As of 5.5.4, there are a few other artifact types used internally by Horde: step-output, step-saved, step-trace, step-testdata. These are retained for 14 days.

If additional types or different retention policies would be useful for your application, please reach to support@universalfoundry.io.

The Artifact element provides Horde with a list of tags to be uploaded to the artifact store.

Here is an example from the Epic-provided, BuildEditorAndTools.xml:

<Artifact
Name="editor"
Description="Editor PCBs"
Type="ugs-pcb"
BasePath="$(ArchiveStagingRelativeDir)"
Keys="$(UgsProjectKey)"
Metadata="ArchiveType=Editor"
Tag="#PublishBinaries"/>

Name - A name for this artifact. Expected to be used in the future by other features.

Description - This string will appear on the Job page within horde.

Type - In Universal Foundry, this should be ugs-pcb for UGS precompiled binaries, or build-artifacts for other artifacts. This is used to determine the permissions and expiration policy for the artifact.

BasePath - A Directory Reference from which you would like to upload the artifacts. All the tagged files must be under this directory. Defaults to the workspace root directory.

Keys - A String List representing arbitrary key/value pairs which can be used to search for the artifact. These should be of the form <key>=<value> for example my-first-key=my-first-value;my-second-key=my-second-value.

Metadata - A String List which is formatted the same as Keys. These pairs are not searchable.

Tag - A Tag representing all of the files to be included in the artifact upload. Different elements produce tagged files. See documentation for and for examples of elements that result in tagged files. Defaults to Name.

CreateArtifact is a Task that creates an artifact from files when it executes.

An example from the Epic-provided InstalledEngineBuild.xml:

<CreateArtifact
Name="installed-build-win64"
Type="installed-build"
Description="Installed Build (Windows)"
BaseDir="$(LocalInstalledDir)"
Files="..."/>

Name - A name for this artifact. Expected to be used in the future by other features.

Description - This string will appear on the Job page within horde.

Type - In Universal Foundry, this should be ugs-pcb for UGS precompiled binaries, or build-artifacts for other artifacts. This is used to determine the permissions and expiration policy for the artifact.

Files - A File Spec listing all files to include in the artifact.

Keys - A String List representing arbitrary key/value pairs which can be used to search for the artifact. These should be of the form <key>=<value> for example: my-first-key=my-first-value;my-second-key=my-second-value.

Metadata - A String List which is formatted the same as Keys. These pairs are not searchable.

There are few additional parameters which are rarely applicable, see Engine/Source/Programs/AutomationTool/BuildGraph/Tasks/CreateArtifactTask.cs for details.

Artifacts can be retrieved from any job via the web interface.

The Epic documentation references a <RetrieveArtifact> Task but the code for this has not yet been provided.

Epic provides a command line tool for retrieving artifacts which may be useful for your application. As of April 2025, this tool is not in use by any Universal Foundry customers. If you are interested in trying it, please reach out to support@universalfoundry.io and we will facilitate setup and configuration.