diff options
Diffstat (limited to '.github/workflows/validate.yml')
| -rw-r--r-- | .github/workflows/validate.yml | 193 |
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 |