aboutsummaryrefslogtreecommitdiff
path: root/.github
diff options
context:
space:
mode:
Diffstat (limited to '.github')
-rw-r--r--.github/workflows/create_release_impl.yml41
-rw-r--r--.github/workflows/test_manual.yml254
-rw-r--r--.github/workflows/validate.yml112
3 files changed, 403 insertions, 4 deletions
diff --git a/.github/workflows/create_release_impl.yml b/.github/workflows/create_release_impl.yml
index 0f0bab9da..9a062a292 100644
--- a/.github/workflows/create_release_impl.yml
+++ b/.github/workflows/create_release_impl.yml
@@ -163,21 +163,54 @@ jobs:
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: Docker network diagnostics
+ run: |
+ echo "--- Runner: $(hostname) ---"
+ echo "--- DNS resolution ---"
+ dig +short us-east-1.ec2.archive.ubuntu.com || true
+ dig +short dl.winehq.org || true
+ echo "--- Download speed test (us-east-1.ec2.archive.ubuntu.com) ---"
+ curl -so /dev/null -w "HTTP %{http_code} | %{size_download} bytes | %{speed_download} bytes/sec | connect=%{time_connect}s total=%{time_total}s\n" \
+ http://us-east-1.ec2.archive.ubuntu.com/ubuntu/dists/noble/Release || true
+ echo "--- Download speed test (dl.winehq.org) ---"
+ curl -so /dev/null -w "HTTP %{http_code} | %{size_download} bytes | %{speed_download} bytes/sec | connect=%{time_connect}s total=%{time_total}s\n" \
+ https://dl.winehq.org/wine-builds/winehq.key || true
+
- name: Build and push Docker image (with Wine + Windows binary)
run: |
+ ECR=728559092788.dkr.ecr.us-east-1.amazonaws.com/zenserver
+ VERSION=${{ steps.read_version.outputs.content }}
+ docker pull $ECR:latest-wine || true
docker build \
- -t 728559092788.dkr.ecr.us-east-1.amazonaws.com/zenserver:${{ steps.read_version.outputs.content }}-wine \
+ --progress=plain \
+ --build-arg BUILDKIT_INLINE_CACHE=1 \
+ --cache-from $ECR:latest-wine \
+ -t $ECR:${VERSION}-wine \
+ -t $ECR: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:${{ steps.read_version.outputs.content }}-wine
+ docker push $ECR:${VERSION}-wine
+ docker push $ECR:latest-wine
+ env:
+ DOCKER_BUILDKIT: 1
- name: Build and push Docker image (Linux only, no Wine)
run: |
+ ECR=728559092788.dkr.ecr.us-east-1.amazonaws.com/zenserver
+ VERSION=${{ steps.read_version.outputs.content }}
+ docker pull $ECR:latest-linux || true
docker build \
- -t 728559092788.dkr.ecr.us-east-1.amazonaws.com/zenserver:${{ steps.read_version.outputs.content }}-linux \
+ --progress=plain \
+ --build-arg BUILDKIT_INLINE_CACHE=1 \
+ --cache-from $ECR:latest-linux \
--build-arg INSTALL_WINE=false \
+ -t $ECR:${VERSION}-linux \
+ -t $ECR:latest-linux \
-f docker/Dockerfile .
- docker push 728559092788.dkr.ecr.us-east-1.amazonaws.com/zenserver:${{ steps.read_version.outputs.content }}-linux
+ docker push $ECR:${VERSION}-linux
+ docker push $ECR:latest-linux
+ env:
+ DOCKER_BUILDKIT: 1
create-release:
runs-on: [linux, x64, zen]
diff --git a/.github/workflows/test_manual.yml b/.github/workflows/test_manual.yml
new file mode 100644
index 000000000..dd27f0260
--- /dev/null
+++ b/.github/workflows/test_manual.yml
@@ -0,0 +1,254 @@
+name: Manual Test Run
+env:
+ XMAKE_VERSION: 2.9.9
+ WINDOWS_SDK_VERSION: 22621
+ XMAKE_GLOBALDIR: ${{ github.workspace }}/../.xmake_shared
+
+on:
+ workflow_dispatch:
+ inputs:
+ platform:
+ description: 'Platform to test on'
+ required: true
+ type: choice
+ options:
+ - windows
+ - linux
+ - macos
+ - all
+ default: 'windows'
+ malloc:
+ description: 'Memory allocator override (runtime --malloc flag passed to test binaries)'
+ type: choice
+ options:
+ - default
+ - stomp
+ - mimalloc
+ - rpmalloc
+ default: 'default'
+ sanitizer:
+ description: 'Sanitizer to enable (triggers full rebuild)'
+ type: choice
+ options:
+ - none
+ - asan
+ - tsan
+ - msan
+ default: 'none'
+ test_suite:
+ description: 'Test suite to run (core, store, server, integration, http, util, remotestore, all)'
+ type: string
+ default: 'all'
+ extra_args:
+ description: 'Extra arguments passed to test runners (after --)'
+ type: string
+ default: ''
+
+jobs:
+ windows-test:
+ name: Test Windows
+ if: ${{ inputs.platform == 'windows' || inputs.platform == 'all' }}
+ runs-on: [windows, x64, zen]
+ timeout-minutes: 40
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Trust workspace
+ run: git config --global --add safe.directory "${{ github.workspace }}"
+
+ - name: Setup xmake
+ uses: ue-foundation/[email protected]
+ with:
+ xmake-version: ${{ env.XMAKE_VERSION }}
+
+ - name: Config
+ run: |
+ $SanitizerFlag = ""
+ if ("${{ inputs.sanitizer }}" -ne "none") {
+ $SanitizerFlag = "--${{ inputs.sanitizer }}=y"
+ }
+ xmake config -vD -y -m debug --arch=x64 --zensentry=no $SanitizerFlag
+
+ - name: Clean reports
+ run: if (Test-Path build/reports) { Remove-Item -Recurse -Force build/reports }
+
+ - name: Kill stale test processes
+ shell: powershell
+ run: |
+ scripts\test_scripts\kill-test-processes.ps1 -Label stale -BuildDir "${{ github.workspace }}\build"
+
+ - name: Build & Test
+ run: |
+ $ExtraArgs = @()
+ if ("${{ inputs.malloc }}" -ne "default") {
+ $ExtraArgs += "--malloc=${{ inputs.malloc }}"
+ }
+ $UserArgs = "${{ inputs.extra_args }}"
+ if ($UserArgs) {
+ $ExtraArgs += $UserArgs -split ' '
+ }
+ $Cmd = "xmake test -v -y --run=${{ inputs.test_suite }} --junit"
+ if ($ExtraArgs.Count -gt 0) {
+ $Cmd += " -- " + ($ExtraArgs -join ' ')
+ }
+ Write-Host "Running: $Cmd"
+ Invoke-Expression $Cmd
+
+ - name: Kill test processes
+ if: always()
+ shell: powershell
+ run: |
+ scripts\test_scripts\kill-test-processes.ps1 -Label leftover -BuildDir "${{ github.workspace }}\build"
+
+ - name: Upload report
+ if: failure() || success()
+ uses: actions/upload-artifact@v3-node20
+ with:
+ name: reports-win64-${{ inputs.sanitizer }}-${{ inputs.malloc }}
+ path: build/reports/*.xml
+
+ - name: Test Report
+ if: failure() || success()
+ uses: ue-foundation/test-reporter@v2
+ with:
+ name: Test Results (win64, ${{ inputs.sanitizer }}, malloc=${{ inputs.malloc }})
+ path: build/reports/*.xml
+ reporter: java-junit
+ list-tests: 'failed'
+
+ linux-test:
+ name: Test Linux
+ if: ${{ inputs.platform == 'linux' || inputs.platform == 'all' }}
+ runs-on: [linux, x64, zen]
+ timeout-minutes: 40
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - 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]
+ with:
+ xmake-version: ${{ env.XMAKE_VERSION }}
+
+ - name: Config
+ run: |
+ SANITIZER_FLAG=""
+ if [ "${{ inputs.sanitizer }}" != "none" ]; then
+ SANITIZER_FLAG="--${{ inputs.sanitizer }}=y"
+ fi
+ xmake config -v -y -m debug --arch=x86_64 --zensentry=no --toolchain=ue-clang --sdk=${{ github.workspace }}/.tmp-ue-toolchain $SANITIZER_FLAG
+
+ - name: Clean reports
+ run: rm -rf build/reports
+
+ - name: Kill stale test processes
+ run: |
+ bash scripts/test_scripts/kill-test-processes.sh stale "${{ github.workspace }}/build"
+
+ - name: Build & Test
+ run: |
+ set -x
+ EXTRA_ARGS=""
+ MALLOC_ARG=""
+ if [ "${{ inputs.malloc }}" != "default" ]; then
+ MALLOC_ARG="--malloc=${{ inputs.malloc }}"
+ fi
+ USER_ARGS="${{ inputs.extra_args }}"
+ if [ -n "$MALLOC_ARG" ] || [ -n "$USER_ARGS" ]; then
+ EXTRA_ARGS="-- $MALLOC_ARG $USER_ARGS"
+ fi
+ xmake test -v -y --run=${{ inputs.test_suite }} --junit $EXTRA_ARGS
+
+ - name: Kill test processes
+ if: always()
+ run: |
+ bash scripts/test_scripts/kill-test-processes.sh leftover "${{ github.workspace }}/build"
+
+ - name: Upload report
+ if: failure() || success()
+ uses: actions/upload-artifact@v3-node20
+ with:
+ name: reports-linux-${{ inputs.sanitizer }}-${{ inputs.malloc }}
+ path: build/reports/*.xml
+
+ - name: Test Report
+ if: failure() || success()
+ uses: ue-foundation/test-reporter@v2
+ with:
+ name: Test Results (linux, ${{ inputs.sanitizer }}, malloc=${{ inputs.malloc }})
+ path: build/reports/*.xml
+ reporter: java-junit
+ list-tests: 'failed'
+
+ macos-test:
+ name: Test macOS
+ if: ${{ inputs.platform == 'macos' || inputs.platform == 'all' }}
+ runs-on: [macos, x64, zen]
+ timeout-minutes: 40
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v4
+
+ - name: Setup xmake
+ uses: ue-foundation/[email protected]
+ with:
+ xmake-version: ${{ env.XMAKE_VERSION }}
+
+ - name: Config
+ run: |
+ SANITIZER_FLAG=""
+ if [ "${{ inputs.sanitizer }}" != "none" ]; then
+ SANITIZER_FLAG="--${{ inputs.sanitizer }}=y"
+ fi
+ xmake config -v -y -m debug --arch=x86_64 --zensentry=no $SANITIZER_FLAG
+
+ - name: Clean reports
+ run: rm -rf build/reports
+
+ - name: Kill stale test processes
+ run: |
+ bash scripts/test_scripts/kill-test-processes.sh stale "${{ github.workspace }}/build"
+
+ - name: Build & Test
+ run: |
+ set -x
+ EXTRA_ARGS=""
+ MALLOC_ARG=""
+ if [ "${{ inputs.malloc }}" != "default" ]; then
+ MALLOC_ARG="--malloc=${{ inputs.malloc }}"
+ fi
+ USER_ARGS="${{ inputs.extra_args }}"
+ if [ -n "$MALLOC_ARG" ] || [ -n "$USER_ARGS" ]; then
+ EXTRA_ARGS="-- $MALLOC_ARG $USER_ARGS"
+ fi
+ xmake test -v -y --run=${{ inputs.test_suite }} --junit $EXTRA_ARGS
+
+ - name: Kill test processes
+ if: always()
+ run: |
+ bash scripts/test_scripts/kill-test-processes.sh leftover "${{ github.workspace }}/build"
+
+ - name: Upload report
+ if: failure() || success()
+ uses: actions/upload-artifact@v3-node20
+ with:
+ name: reports-macos-${{ inputs.sanitizer }}-${{ inputs.malloc }}
+ path: build/reports/*.xml
+
+ - name: Test Report
+ if: failure() || success()
+ uses: ue-foundation/test-reporter@v2
+ with:
+ name: Test Results (macos, ${{ inputs.sanitizer }}, malloc=${{ inputs.malloc }})
+ path: build/reports/*.xml
+ reporter: java-junit
+ list-tests: 'failed'
diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml
index 601f000fe..fb87ecb6b 100644
--- a/.github/workflows/validate.yml
+++ b/.github/workflows/validate.yml
@@ -71,6 +71,31 @@ 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]
with:
@@ -84,11 +109,26 @@ 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-node20
@@ -133,6 +173,27 @@ 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
@@ -152,11 +213,26 @@ 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-node20
@@ -207,6 +283,27 @@ 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]
with:
@@ -221,11 +318,26 @@ 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-node20