From ec876685063b0c88e4696b5475903f72dfdbf4c1 Mon Sep 17 00:00:00 2001 From: Carlos Ortiz Date: Sun, 5 Jul 2026 13:01:15 -0400 Subject: [PATCH] ci: add Gitea Actions workflow to build + publish editor binaries Builds the UE 5.7.4 editor target on a Windows host-mode runner and publishes the binaries zip to gs://keystone-501223-build-artifacts on every push to master (poor-man's-UGS producer side). Co-Authored-By: Claude Opus 4.8 --- .gitea/workflows/build-editor.yml | 70 +++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 .gitea/workflows/build-editor.yml diff --git a/.gitea/workflows/build-editor.yml b/.gitea/workflows/build-editor.yml new file mode 100644 index 0000000..42afd6a --- /dev/null +++ b/.gitea/workflows/build-editor.yml @@ -0,0 +1,70 @@ +# Gitea Actions — build the UE 5.7.4 editor binaries on a Windows host-mode runner +# and publish them to the GCS artifacts bucket (the poor-man's-UGS producer side). +# +# Runner: registered on a Windows box with label `windows:host` (host mode, NOT a +# container) so it can use the installed UE 5.7.4 + VS 2022 + gcloud. +# +# NOTE (proof shortcut): BUILDGRAPH_SCRIPT points at the build-infra folder on the +# runner's local disk, because for now the runner and build-infra live on the same +# machine. For a real multi-agent fleet, vendor BuildEditor.xml into this repo (or a +# submodule) so any runner has it — see build-infra/RUNBOOK.md §9. +name: Build Editor + +on: + workflow_dispatch: + push: + branches: [ master ] + +concurrency: + group: build-editor + cancel-in-progress: true + +jobs: + build-editor: + runs-on: windows # matches the runner's `windows` label (host mode) + env: + UE_ROOT: D:\Unreal\UE_5.7 + PROJECT_NAME: ASGCGameJam2026 + ARTIFACTS_BUCKET: keystone-501223-build-artifacts + BUILDGRAPH_SCRIPT: D:\asgcgj\build-infra\buildgraph\BuildEditor.xml + GCLOUD_BIN: C:\Users\aorti\AppData\Local\Google\Cloud SDK\google-cloud-sdk\bin + steps: + # Editor binaries are pure C++ — no Content needed — so skip LFS (faster, and + # avoids LFS auth in CI). Packaged/cook builds WOULD need lfs: true. + - uses: actions/checkout@v4 + with: + lfs: false + + - name: Compute canonical BUILD_ID + shell: powershell + run: | + $short = "$env:GITHUB_SHA".Substring(0,8) + $buildId = "Development-$env:GITHUB_REF_NAME-$short" + "BUILD_ID=$buildId" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8 + Write-Host "BUILD_ID=$buildId" + + - name: BuildGraph — editor binaries + shell: powershell + run: | + & "$env:UE_ROOT\Engine\Build\BatchFiles\RunUAT.bat" BuildGraph ` + -Script="$env:BUILDGRAPH_SCRIPT" ` + -Target="EditorBinaries" ` + -set:ProjectName=$env:PROJECT_NAME ` + -set:ProjectDir="$env:GITHUB_WORKSPACE" ` + -set:ProjectPath="$env:GITHUB_WORKSPACE\$env:PROJECT_NAME.uproject" ` + -set:BuildVersion=$env:BUILD_ID ` + -set:OutputDir="$env:GITHUB_WORKSPACE\LocalBuilds" + if ($LASTEXITCODE -ne 0) { throw "BuildGraph failed ($LASTEXITCODE)" } + + - name: Publish to artifacts bucket + shell: powershell + run: | + $env:PATH += ";$env:GCLOUD_BIN" + $sha = "$env:GITHUB_SHA".Substring(0,8) + $src = "$env:GITHUB_WORKSPACE\LocalBuilds\EditorBinaries-Win64.zip" + if (-not (Test-Path $src)) { throw "Editor binaries zip not found: $src" } + gcloud storage cp $src "gs://$env:ARTIFACTS_BUCKET/editor/EditorBinaries-Win64-$sha.zip" + gcloud storage cp $src "gs://$env:ARTIFACTS_BUCKET/editor/EditorBinaries-Win64-latest.zip" + "$env:GITHUB_SHA" | Out-File -Encoding ascii latest.sha + gcloud storage cp latest.sha "gs://$env:ARTIFACTS_BUCKET/editor/latest.sha" + Write-Host "Published EditorBinaries-Win64 ($sha) -> gs://$env:ARTIFACTS_BUCKET/editor/" -- 2.53.0