aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/validate.yml
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/validate.yml')
-rw-r--r--.github/workflows/validate.yml193
1 files changed, 181 insertions, 12 deletions
diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml
index bf7b1c853..fb87ecb6b 100644
--- a/.github/workflows/validate.yml
+++ b/.github/workflows/validate.yml
@@ -71,8 +71,33 @@ jobs:
- name: Trust workspace
run: git config --global --add safe.directory "${{ github.workspace }}"
+ - name: Runner info
+ shell: powershell
+ run: |
+ Write-Host "=== Host ==="
+ Write-Host "Hostname: $env:COMPUTERNAME"
+ Write-Host ""
+ Write-Host "=== CPU ==="
+ Get-CimInstance Win32_Processor |
+ Select-Object Name, NumberOfCores, NumberOfLogicalProcessors, MaxClockSpeed |
+ Format-List
+ Write-Host "=== Memory (MB) ==="
+ $os = Get-CimInstance Win32_OperatingSystem
+ "{0,-20} {1,10:N0}" -f "TotalVisible:", ($os.TotalVisibleMemorySize / 1KB)
+ "{0,-20} {1,10:N0}" -f "FreePhysical:", ($os.FreePhysicalMemory / 1KB)
+ Write-Host ""
+ Write-Host "=== Disks (GB) ==="
+ Get-PSDrive -PSProvider FileSystem |
+ Where-Object { $_.Used -ne $null -or $_.Free -ne $null } |
+ Select-Object Name,
+ @{N='UsedGB'; E={[math]::Round($_.Used/1GB,2)}},
+ @{N='FreeGB'; E={[math]::Round($_.Free/1GB,2)}},
+ @{N='TotalGB'; E={[math]::Round(($_.Used + $_.Free)/1GB,2)}},
+ Root |
+ Format-Table -AutoSize
+
- name: Setup xmake
- uses: ue-foundation/[email protected]
+ uses: ue-foundation/[email protected]
with:
xmake-version: ${{env.XMAKE_VERSION}}
@@ -84,14 +109,29 @@ jobs:
if: ${{ matrix.config == 'debug' }}
run: if (Test-Path build/reports) { Remove-Item -Recurse -Force build/reports }
+ - name: Kill stale test processes
+ if: ${{ matrix.config == 'debug' }}
+ shell: powershell
+ run: |
+ scripts\test_scripts\kill-test-processes.ps1 -Label stale -BuildDir "${{ github.workspace }}\build"
+
- name: Build & Test
if: ${{ matrix.config == 'debug' }}
+ env:
+ ZEN_TEST_ARTIFACTS_S3: ${{ vars.ZEN_TEST_ARTIFACTS_S3 }}
+ AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }}
run: |
xmake test -v -y --junit
+ - name: Kill test processes
+ if: ${{ always() && matrix.config == 'debug' }}
+ shell: powershell
+ run: |
+ scripts\test_scripts\kill-test-processes.ps1 -Label leftover -BuildDir "${{ github.workspace }}\build"
+
- name: Upload report
if: ${{ (failure() || success()) && (matrix.config == 'debug') }}
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v3-node20
with:
name: reports-win64
path: build/reports/*.xml
@@ -112,7 +152,7 @@ jobs:
- name: Upload zenserver-win64
if: ${{ github.ref_name == 'main' && matrix.config == 'release' }}
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v3-node20
with:
name: zenserver-win64
path: build/zenserver-win64.zip
@@ -133,33 +173,69 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
+ - name: Runner info
+ shell: bash
+ run: |
+ echo "=== Host ==="
+ echo "Hostname: $(hostname)"
+ echo "Kernel: $(uname -srm)"
+ echo
+ echo "=== CPU ==="
+ if command -v lscpu >/dev/null; then
+ lscpu | grep -E 'Model name|Socket|Core|Thread|CPU\(s\):'
+ else
+ grep -m1 'model name' /proc/cpuinfo
+ echo "CPUs: $(nproc)"
+ fi
+ echo
+ echo "=== Memory ==="
+ free -h
+ echo
+ echo "=== Disks ==="
+ df -h -x tmpfs -x devtmpfs -x squashfs 2>/dev/null || df -h
+
- name: Install UE Toolchain
run: |
rm -rf ./.tmp-ue-toolchain
./scripts/ue_build_linux/get_ue_toolchain.sh ./.tmp-ue-toolchain
- name: Setup xmake
- uses: ue-foundation/[email protected]
+ uses: ue-foundation/[email protected]
with:
xmake-version: ${{env.XMAKE_VERSION}}
- name: Config
run: |
- ./scripts/ue_build_linux/ue_build.sh ./.tmp-ue-toolchain xmake config -v -y -m ${{ matrix.config }} --arch=${{ matrix.arch }} --zensentry=yes
+ xmake config -v -y -m ${{ matrix.config }} --arch=${{ matrix.arch }} --zensentry=yes --toolchain=ue-clang --sdk=${{ github.workspace }}/.tmp-ue-toolchain
- name: Clean reports
if: ${{ matrix.config == 'debug' }}
shell: bash
run: rm -rf build/reports
+ - name: Kill stale test processes
+ if: ${{ matrix.config == 'debug' }}
+ shell: bash
+ run: |
+ bash scripts/test_scripts/kill-test-processes.sh stale "${{ github.workspace }}/build"
+
- name: Build & Test
if: ${{ matrix.config == 'debug' }}
+ env:
+ ZEN_TEST_ARTIFACTS_S3: ${{ vars.ZEN_TEST_ARTIFACTS_S3 }}
+ AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }}
+ run: |
+ xmake test -v -y --junit
+
+ - name: Kill test processes
+ if: ${{ always() && matrix.config == 'debug' }}
+ shell: bash
run: |
- ./scripts/ue_build_linux/ue_build.sh ./.tmp-ue-toolchain xmake test -v -y --junit
+ bash scripts/test_scripts/kill-test-processes.sh leftover "${{ github.workspace }}/build"
- name: Upload report
if: ${{ (failure() || success()) && (matrix.config == 'debug') }}
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v3-node20
with:
name: reports-linux
path: build/reports/*.xml
@@ -176,11 +252,17 @@ jobs:
- name: Bundle
if: ${{ matrix.config == 'release' }}
run: |
- ./scripts/ue_build_linux/ue_build.sh ./.tmp-ue-toolchain xmake bundle -v -y
+ xmake bundle -v -y
+
+ - name: Crashpad Check
+ if: ${{ matrix.config == 'release' }}
+ shell: bash
+ run: |
+ ./scripts/test_linux/crashpad-test.sh build/linux/${{ matrix.arch }}/release/zenserver
- name: Upload zenserver-linux
if: ${{ github.ref_name == 'main' && matrix.config == 'release' }}
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v3-node20
with:
name: zenserver-linux
path: build/zenserver-linux.zip
@@ -201,8 +283,29 @@ jobs:
- name: Checkout
uses: actions/checkout@v4
+ - name: Runner info
+ shell: bash
+ run: |
+ echo "=== Host ==="
+ echo "Hostname: $(hostname)"
+ echo "Kernel: $(uname -srm)"
+ echo
+ echo "=== CPU ==="
+ echo "Brand: $(sysctl -n machdep.cpu.brand_string 2>/dev/null || echo unknown)"
+ echo "Cores: $(sysctl -n hw.physicalcpu 2>/dev/null || echo ?) physical / $(sysctl -n hw.logicalcpu 2>/dev/null || echo ?) logical"
+ echo
+ echo "=== Memory ==="
+ mem_bytes=$(sysctl -n hw.memsize 2>/dev/null || echo 0)
+ echo "Total: $(awk -v b="$mem_bytes" 'BEGIN{printf "%.2f GB\n", b/1024/1024/1024}')"
+ if command -v vm_stat >/dev/null; then
+ vm_stat | head -5
+ fi
+ echo
+ echo "=== Disks ==="
+ df -h
+
- name: Setup xmake
- uses: ue-foundation/[email protected]
+ uses: ue-foundation/[email protected]
with:
xmake-version: ${{env.XMAKE_VERSION}}
@@ -215,14 +318,29 @@ jobs:
shell: bash
run: rm -rf build/reports
+ - name: Kill stale test processes
+ if: ${{ matrix.config == 'debug' }}
+ shell: bash
+ run: |
+ bash scripts/test_scripts/kill-test-processes.sh stale "${{ github.workspace }}/build"
+
- name: Build & Test
if: ${{ matrix.config == 'debug' }}
+ env:
+ ZEN_TEST_ARTIFACTS_S3: ${{ vars.ZEN_TEST_ARTIFACTS_S3 }}
+ AWS_DEFAULT_REGION: ${{ vars.AWS_DEFAULT_REGION }}
run: |
xmake test -v -y --junit
+ - name: Kill test processes
+ if: ${{ always() && matrix.config == 'debug' }}
+ shell: bash
+ run: |
+ bash scripts/test_scripts/kill-test-processes.sh leftover "${{ github.workspace }}/build"
+
- name: Upload report
if: ${{ (failure() || success()) && (matrix.config == 'debug') }}
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v3-node20
with:
name: reports-macos
path: build/reports/*.xml
@@ -243,7 +361,58 @@ jobs:
- name: Upload zenserver-macos
if: ${{ github.ref_name == 'main' && matrix.config == 'release' }}
- uses: actions/upload-artifact@v3
+ uses: actions/upload-artifact@v3-node20
with:
name: zenserver-macos
path: build/zenserver-macos.zip
+
+ docker-build:
+ name: Build Docker Images
+ if: github.ref_name == 'main'
+ runs-on: [linux, x64, zen]
+ timeout-minutes: 15
+ needs: [linux-build, windows-build]
+
+ steps:
+ - uses: actions/checkout@v4
+
+ - name: Download Linux bundle
+ uses: actions/download-artifact@v3-node20
+ with:
+ name: zenserver-linux
+ path: artifacts/linux
+
+ - name: Download Windows bundle
+ uses: actions/download-artifact@v3-node20
+ with:
+ name: zenserver-win64
+ path: artifacts/win64
+
+ - name: Extract binaries
+ run: |
+ mkdir -p build/linux/x86_64/release
+ unzip artifacts/linux/zenserver-linux.zip -d artifacts/linux-extracted
+ cp artifacts/linux-extracted/zenserver build/linux/x86_64/release/
+ mkdir -p build/win-binary-staging
+ unzip artifacts/win64/zenserver-win64.zip -d artifacts/win-extracted
+ cp artifacts/win-extracted/zenserver.exe build/win-binary-staging/
+
+ - name: Login to Amazon ECR
+ run: |
+ aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 728559092788.dkr.ecr.us-east-1.amazonaws.com
+
+ - name: Build and push Docker image (with Wine + Windows binary)
+ run: |
+ docker build \
+ -t 728559092788.dkr.ecr.us-east-1.amazonaws.com/zenserver:latest-wine \
+ --build-arg WIN_BINARY_DIR=build/win-binary-staging \
+ -f docker/Dockerfile .
+ docker push 728559092788.dkr.ecr.us-east-1.amazonaws.com/zenserver:latest-wine
+
+ - name: Build and push Docker image (Linux only, no Wine)
+ run: |
+ docker build \
+ -t 728559092788.dkr.ecr.us-east-1.amazonaws.com/zenserver:latest-linux \
+ --build-arg INSTALL_WINE=false \
+ -f docker/Dockerfile .
+ docker push 728559092788.dkr.ecr.us-east-1.amazonaws.com/zenserver:latest-linux