ci: add weekly Development + Shipping Windows game builds
Scheduled (weekly) + manual workflow that cooks/stages/packages standalone Windows builds in both Development and Shipping configurations via a matrix, publishing each to gs://.../builds/windows/<config>/. Platform is a matrix axis mapped to a runner label, so Linux/Mac just need their own runner + a matrix entry later. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,81 @@
|
|||||||
|
# Gitea Actions — weekly PACKAGED GAME builds (cooked, staged, standalone).
|
||||||
|
# Produces Development AND Shipping Windows builds and publishes each to the
|
||||||
|
# artifacts bucket. This is the shippable/playtest artifact, distinct from the
|
||||||
|
# per-push editor binaries (build-editor.yml).
|
||||||
|
#
|
||||||
|
# PLATFORM EXPANSION: platform is modeled as a matrix axis mapped to a runner
|
||||||
|
# label. Windows builds on the `windows` host-mode runner. To add Linux/Mac later:
|
||||||
|
# 1) stand up a runner on a Linux/Mac machine (labels `linux` / `macos`),
|
||||||
|
# 2) add an entry to the matrix below ({ os: linux, platform: Linux, ... }).
|
||||||
|
# No other changes needed — the BuildGraph target is platform-parameterized.
|
||||||
|
name: Weekly Game Build
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
- cron: '0 6 * * 1' # Mondays 06:00 UTC — adjust to your cadence
|
||||||
|
workflow_dispatch: # manual "build now"
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: weekly-game-build
|
||||||
|
cancel-in-progress: false # don't kill an in-flight cook with a new trigger
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
package:
|
||||||
|
strategy:
|
||||||
|
fail-fast: false # a Shipping failure shouldn't cancel Development
|
||||||
|
matrix:
|
||||||
|
include:
|
||||||
|
- { os: windows, platform: Win64, configuration: Development }
|
||||||
|
- { os: windows, platform: Win64, configuration: Shipping }
|
||||||
|
runs-on: ${{ matrix.os }}
|
||||||
|
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:
|
||||||
|
# Packaged builds COOK content, so LFS is required (unlike editor binaries).
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
lfs: true
|
||||||
|
|
||||||
|
- name: Compute canonical BUILD_ID
|
||||||
|
shell: powershell
|
||||||
|
run: |
|
||||||
|
$short = "$env:GITHUB_SHA".Substring(0,8)
|
||||||
|
$buildId = "${{ matrix.configuration }}-$env:GITHUB_REF_NAME-$short"
|
||||||
|
"BUILD_ID=$buildId" | Out-File -FilePath $env:GITHUB_ENV -Append -Encoding utf8
|
||||||
|
Write-Host "BUILD_ID=$buildId"
|
||||||
|
|
||||||
|
- name: BuildGraph — packaged game (${{ matrix.configuration }} / ${{ matrix.platform }})
|
||||||
|
shell: powershell
|
||||||
|
run: |
|
||||||
|
& "$env:UE_ROOT\Engine\Build\BatchFiles\RunUAT.bat" BuildGraph `
|
||||||
|
-Script="$env:BUILDGRAPH_SCRIPT" `
|
||||||
|
-Target="PackagedGame" `
|
||||||
|
-set:ProjectName=$env:PROJECT_NAME `
|
||||||
|
-set:ProjectDir="$env:GITHUB_WORKSPACE" `
|
||||||
|
-set:ProjectPath="$env:GITHUB_WORKSPACE\$env:PROJECT_NAME.uproject" `
|
||||||
|
-set:Platform=${{ matrix.platform }} `
|
||||||
|
-set:Configuration=${{ matrix.configuration }} `
|
||||||
|
-set:BuildVersion=$env:BUILD_ID `
|
||||||
|
-set:OutputDir="$env:GITHUB_WORKSPACE\LocalBuilds"
|
||||||
|
if ($LASTEXITCODE -ne 0) { throw "BuildGraph failed ($LASTEXITCODE)" }
|
||||||
|
|
||||||
|
- name: Publish packaged build
|
||||||
|
shell: powershell
|
||||||
|
run: |
|
||||||
|
$env:PATH += ";$env:GCLOUD_BIN"
|
||||||
|
$cfg = "${{ matrix.configuration }}".ToLower()
|
||||||
|
$plat = "${{ matrix.os }}"
|
||||||
|
$zip = "$env:GITHUB_WORKSPACE\LocalBuilds\$env:PROJECT_NAME-${{ matrix.platform }}-${{ matrix.configuration }}.zip"
|
||||||
|
if (-not (Test-Path $zip)) { throw "Packaged zip not found: $zip" }
|
||||||
|
$sha = "$env:GITHUB_SHA".Substring(0,8)
|
||||||
|
$base = "gs://$env:ARTIFACTS_BUCKET/builds/$plat/$cfg"
|
||||||
|
# Immutable, sha-tagged copy + a 'latest' pointer per platform/config.
|
||||||
|
gcloud storage cp $zip "$base/$env:PROJECT_NAME-$env:BUILD_ID.zip"
|
||||||
|
gcloud storage cp $zip "$base/latest.zip"
|
||||||
|
"$env:GITHUB_SHA" | Out-File -Encoding ascii latest.sha
|
||||||
|
gcloud storage cp latest.sha "$base/latest.sha"
|
||||||
|
Write-Host "Published $cfg $plat build -> $base/"
|
||||||
Reference in New Issue
Block a user