I’m trying to get my builds automated with GitHub Actions. That’s the workflow I have so far:
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
clean: false
lfs: true
name: CI
on:
push:
branches: [main]
pull_request:
branches: [main]
jobs:
uat:
name: Unreal Automation Tool
runs-on: [self-hosted, windows, x64]
steps:
- name: Checkout code
uses: actions/checkout@v6
with:
fetch-depth: 0
clean: false
lfs: true
- name: HarbingerGame Windows+Linux Development
shell: powershell
run: '& "C:/Program Files/Epic Games/UE_5.7/Engine/Build/BatchFiles/RunUAT.bat" -ScriptsForProject=${{ github.workspace }}/HarbingerGame.uproject BuildCookRun -project=${{ github.workspace }}/HarbingerGame.uproject -noP4 -clientconfig=Development -serverconfig=Development -nocompile -nocompileeditor -installed -unrealexe="C:\Program Files\Epic Games\UE_5.7\Engine\Binaries\Win64\UnrealEditor-Cmd.exe" -utf8output -platform=Win64+Linux -target=HarbingerGame -clientarchitecture=x64 -build -cook -map=/Game/HarbingerGame/Maps/Prototyping/Prototyping -CookCultures=en -unversionedcookedcontent -zenstore -pak -iostore -stage -compressed -manifests -cookincremental -archive -archivedirectory=<snip>/Archive/Development'
- name: Upload Archive Windows Development
uses: actions/upload-artifact@v7
with:
name: HarbingerGame-Windows
path: <snip>/Archive/Development/Windows/
retention-days: 7
- name: Upload Archive Linux Development
uses: actions/upload-artifact@v7
with:
name: HarbingerGame-Linux
path: <snip>/Archive/Development/Linux/
retention-days: 7
Building works, but when it comes to cooking, it fails on the checked out repo from the runner. The runner is self-hosted and installed on my local machine and runs as my local user. The cooking fails on that runner checked our repository no matter if executed by the github actions runner or locally via powershell:
LogMeshReduction: Display: Using QuadricMeshReduction for automatic static mesh reduction
LogMeshReduction: Display: Using SkeletalMeshReduction for automatic skeletal mesh reduction
LogMeshReduction: Display: Using ProxyLODMeshReduction for automatic mesh merging
LogMeshReduction: Display: No distributed automatic mesh merging module available
LogShaderCompilers: Display: Compiling shader autogen file: <snip>/HarbingerGame/Intermediate/ShaderAutogen/PCD3D_SM5/AutogenShaderHeaders.ush
LogShaderCompilers: Display: Autogen file is unchanged, skipping write.
LogShaderCompilers: Display: Compiling shader autogen file: <snip>/HarbingerGame/Intermediate/ShaderAutogen/VULKAN_SM6/AutogenShaderHeaders.ush
LogShaderCompilers: Display: Autogen file is unchanged, skipping write.
LogVirtualization: Display: VirtualizationSystem name found in ini file: None
LogVirtualization: Display: FNullVirtualizationSystem mounted, virtualization will be disabled
LogWorldPartition: Display: FWorldPartitionClassDescRegistry::Initialize started...
LogWorldPartition: Display: FWorldPartitionClassDescRegistry::Initialize took 2.582 ms
LogMetaSound: Display: MetaSound Page Target Initialized to 'Default'
LogAudio: Display: Registering Engine Module Parameter Interfaces...
LogShaderCompilers: Display: Shaders left to compile 0
Took 6,47s to run UnrealEditor-Cmd.exe, ExitCode=1
Cook failed.
(see C:\Users\em\AppData\Roaming\Unreal Engine\AutomationTool\Logs\C+Program+Files+Epic+Games+UE_5.7\Log.txt for full exception trace)
AutomationTool executed for 0h 0m 11s
AutomationTool exiting with ExitCode=25 (Error_UnknownCookFailure)
BUILD FAILED
The same command works without any problems, when exuted on the project repository itself from that I push to github..
LogMeshReduction: Display: Using QuadricMeshReduction for automatic static mesh reduction
LogMeshReduction: Display: Using SkeletalMeshReduction for automatic skeletal mesh reduction
LogMeshReduction: Display: Using ProxyLODMeshReduction for automatic mesh merging
LogMeshReduction: Display: No distributed automatic mesh merging module available
LogShaderCompilers: Display: Compiling shader autogen file: /HarbingerGame/Intermediate/ShaderAutogen/PCD3D_SM5/AutogenShaderHeaders.ush
LogShaderCompilers: Display: Autogen file is unchanged, skipping write.
LogShaderCompilers: Display: Compiling shader autogen file: /HarbingerGame/Intermediate/ShaderAutogen/VULKAN_SM6/AutogenShaderHeaders.ush
LogShaderCompilers: Display: Autogen file is unchanged, skipping write.
LogVirtualization: Display: VirtualizationSystem name found in ini file: None
LogVirtualization: Display: FNullVirtualizationSystem mounted, virtualization will be disabled
LogWorldPartition: Display: FWorldPartitionClassDescRegistry::Initialize started…
LogWorldPartition: Display: FWorldPartitionClassDescRegistry::Initialize took 2.525 ms
LogMetaSound: Display: MetaSound Page Target Initialized to ‘Default’
LogAudio: Display: Registering Engine Module Parameter Interfaces…
LogAudioCaptureCore: Display: No Audio Capture implementations found. Audio input will be silent.
LogAudioCaptureCore: Display: No Audio Capture implementations found. Audio input will be silent.
LogGameFeatures: Display: Total built in plugin load time 0.0011s
LogCsvProfiler: Display: Metadata set : largeworldcoordinates=“1”
LogCook: Display: CookProcessCount=1. CookMultiprocess is disabled and the cooker is running as a single process.
LogCook: Display: CookSettings for Memory:
MemoryMaxUsedVirtual 0MiB
MemoryMaxUsedPhysical 0MiB
MemoryMinFreeVirtual 2048MiB
MemoryMinFreePhysical 2048MiB
MemoryTriggerGCAtPressureLevel None
SoftGCMemoryUseTrigger disabled
SoftGCTimeBudgetTrigger enabled (0.05 budget, 30s min period)
LogCook: Display: SkipOnlyEditorOnly is enabled, unsolicited packages will not be cooked unless they are referenced from the cooked version of the instigator package.
LogEditorDomain: Display: Cycle detected in parents of class /Script/RigVMDeveloper.RigVMUnitNode. Allow flags for editordomain and incremental cooking will be invalid.
LogZenServiceInstance: Display: Launching zen utility ‘C:/Program Files/Epic Games/UE_5.7/Engine/Binaries/Win64/zen.exe service status’.
LogZenServiceInstance: Display: Launching zen utility ‘C:/Program Files/Epic Games/UE_5.7/Engine/Binaries/Win64/zen.exe service status’.
LogZenStore: Display: Establishing oplog ‘HarbingerGame.47ed4c01/EditorDomain’
LogZenStore: Display: Zen project ‘HarbingerGame.47ed4c01’ already exists
LogZenStore: Display: Zen oplog ‘HarbingerGame.47ed4c01/EditorDomain’ already exists
I honestly don’t know what could be wrong with the checkout done by github actions..