From c7e0efb9c12f4607d4bc6a844a3e5bd3272bd839 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Sat, 28 Feb 2026 15:36:13 +0100 Subject: test running / reporting improvements (#797) **CI/CD improvements (validate.yml):** - Add test reporter (`ue-foundation/test-reporter@v2`) for all three platforms, rendering JUnit test results directly in PR check runs - Add "Trust workspace" step on Windows to fix git safe.directory ownership issue with self-hosted runners - Clean stale report files before each test run to prevent false failures from leftover XML - Broaden `paths-ignore` to skip builds for non-code changes (`*.md`, `LICENSE`, `.gitignore`, `docs/**`) **Test improvements:** - Convert `CHECK` to `REQUIRE` in several test suites (projectstore, integration, http) for fail-fast behavior - Mark some tests with `doctest::skip()` for selective execution - Skip httpclient transport tests pending investigation - Add `--noskip` option to `xmake test` task - Add `--repeat=` option to `xmake test` task, to run tests repeatedly N times or until there is a failure **xmake test output improvements:** - Add totals row to test summary table - Right-justify numeric columns in summary table --- .github/workflows/create_release.yml | 8 ++-- .github/workflows/validate.yml | 85 ++++++++++++++++++++++++++---------- 2 files changed, 66 insertions(+), 27 deletions(-) (limited to '.github') diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index f095f3d21..203588d24 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -15,7 +15,7 @@ jobs: timeout-minutes: 25 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup xmake uses: ue-foundation/github-action-setup-xmake@v1.1.1 @@ -46,7 +46,7 @@ jobs: timeout-minutes: 25 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Install UE Toolchain run: | @@ -89,7 +89,7 @@ jobs: timeout-minutes: 25 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Setup xmake uses: ue-foundation/github-action-setup-xmake@v1.1.1 @@ -133,7 +133,7 @@ jobs: needs: [bundle-linux, bundle-macos, bundle-windows] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: Read VERSION.txt id: read_version diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 17e031ba0..bf7b1c853 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -4,6 +4,10 @@ env: WINDOWS_SDK_VERSION: 22621 XMAKE_GLOBALDIR: ${{ github.workspace }}/../.xmake_shared +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ github.ref_name != 'main' }} + on: pull_request: types: @@ -13,8 +17,11 @@ on: branches: - 'main' paths-ignore: + - '*.md' + - 'LICENSE' + - '.gitignore' + - 'docs/**' - 'VERSION.txt' - - 'CHANGELOG.md' - '.github/workflows/create_release.yml' - '.github/workflows/mirror_releases.yml' - '.github/workflows/mirror.yml' @@ -22,31 +29,22 @@ on: branches: - 'main' paths-ignore: + - '*.md' + - 'LICENSE' + - '.gitignore' + - 'docs/**' - 'VERSION.txt' - - 'CHANGELOG.md' - '.github/workflows/create_release.yml' - '.github/workflows/mirror_releases.yml' - '.github/workflows/mirror.yml' jobs: - cancel-old-build: - name: Cancel previous builds - runs-on: [linux, x64, zen] - - steps: - - name: Cancel Previous Runs - if: ${{ github.ref_name != 'main'}} - uses: ue-foundation/cancel-workflow-action@0.11.0 - with: - access_token: ${{ github.token }} - clang-format: - needs: cancel-old-build name: Check clang-format runs-on: [linux, x64, zen] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: clang-format uses: ue-foundation/clang-format-action@epic-batching-v1 @@ -55,7 +53,6 @@ jobs: check-path: 'src' windows-build: - needs: cancel-old-build name: Build & Test Windows runs-on: [windows, x64, zen] timeout-minutes: 25 @@ -69,7 +66,10 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 + + - name: Trust workspace + run: git config --global --add safe.directory "${{ github.workspace }}" - name: Setup xmake uses: ue-foundation/github-action-setup-xmake@v1.1.1 @@ -80,6 +80,10 @@ jobs: run: | xmake config -vD -y -m ${{ matrix.config }} --arch=${{ matrix.arch }} --zensentry=yes + - name: Clean reports + if: ${{ matrix.config == 'debug' }} + run: if (Test-Path build/reports) { Remove-Item -Recurse -Force build/reports } + - name: Build & Test if: ${{ matrix.config == 'debug' }} run: | @@ -92,9 +96,18 @@ jobs: name: reports-win64 path: build/reports/*.xml + - name: Test Report + if: ${{ (failure() || success()) && (matrix.config == 'debug') }} + uses: ue-foundation/test-reporter@v2 + with: + name: Test Results (win64) + path: build/reports/*.xml + reporter: java-junit + list-tests: 'failed' + - name: Bundle if: ${{ matrix.config == 'release' }} - run: | + run: | xmake bundle -v -y --codesignidentity="Epic Games" - name: Upload zenserver-win64 @@ -105,7 +118,6 @@ jobs: path: build/zenserver-win64.zip linux-build: - needs: cancel-old-build name: Build & Test Linux runs-on: [linux, x64, zen] timeout-minutes: 25 @@ -119,7 +131,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Install UE Toolchain run: | @@ -135,6 +147,11 @@ jobs: run: | ./scripts/ue_build_linux/ue_build.sh ./.tmp-ue-toolchain xmake config -v -y -m ${{ matrix.config }} --arch=${{ matrix.arch }} --zensentry=yes + - name: Clean reports + if: ${{ matrix.config == 'debug' }} + shell: bash + run: rm -rf build/reports + - name: Build & Test if: ${{ matrix.config == 'debug' }} run: | @@ -147,6 +164,15 @@ jobs: name: reports-linux path: build/reports/*.xml + - name: Test Report + if: ${{ (failure() || success()) && (matrix.config == 'debug') }} + uses: ue-foundation/test-reporter@v2 + with: + name: Test Results (linux) + path: build/reports/*.xml + reporter: java-junit + list-tests: 'failed' + - name: Bundle if: ${{ matrix.config == 'release' }} run: | @@ -160,7 +186,6 @@ jobs: path: build/zenserver-linux.zip macos-build: - needs: cancel-old-build name: Build & Test MacOS runs-on: [macos, x64, zen] timeout-minutes: 25 @@ -174,7 +199,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup xmake uses: ue-foundation/github-action-setup-xmake@v1.1.1 @@ -185,6 +210,11 @@ jobs: run: | xmake config -v -y -m ${{ matrix.config }} --arch=${{ matrix.arch }} --zensentry=yes + - name: Clean reports + if: ${{ matrix.config == 'debug' }} + shell: bash + run: rm -rf build/reports + - name: Build & Test if: ${{ matrix.config == 'debug' }} run: | @@ -197,9 +227,18 @@ jobs: name: reports-macos path: build/reports/*.xml + - name: Test Report + if: ${{ (failure() || success()) && (matrix.config == 'debug') }} + uses: ue-foundation/test-reporter@v2 + with: + name: Test Results (macos) + path: build/reports/*.xml + reporter: java-junit + list-tests: 'failed' + - name: Bundle if: ${{ matrix.config == 'release' }} - run: | + run: | xmake bundle -v -y --codesignidentity="Developer ID Application" - name: Upload zenserver-macos -- cgit v1.2.3 From 4d01aaee0a45f4c9f96e8a4925eff696be98de8d Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Sun, 1 Mar 2026 12:40:20 +0100 Subject: added `--verbose` option to zenserver-test and `xmake test` (#798) * when `--verbose` is specified to zenserver-test, all child process output (typically, zenserver instances) is piped through to stdout. you can also pass `--verbose` to `xmake test` to accomplish the same thing. * this PR also consolidates all test runner `main` function logic (such as from zencore-test, zenhttp-test etc) into central implementation in zencore for consistency and ease of maintenance * also added extended utf8-tests including a fix to `Utf8ToWide()` --- .github/workflows/create_release.yml | 6 +++--- .github/workflows/validate.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to '.github') diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index 203588d24..163c0cf85 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -18,7 +18,7 @@ jobs: - uses: actions/checkout@v4 - name: Setup xmake - uses: ue-foundation/github-action-setup-xmake@v1.1.1 + uses: ue-foundation/github-action-setup-xmake@v1.2.2 with: xmake-version: ${{env.XMAKE_VERSION}} @@ -54,7 +54,7 @@ jobs: ./scripts/ue_build_linux/get_ue_toolchain.sh ./.tmp-ue-toolchain - name: Setup xmake - uses: ue-foundation/github-action-setup-xmake@v1.1.1 + uses: ue-foundation/github-action-setup-xmake@v1.2.2 with: xmake-version: ${{env.XMAKE_VERSION}} @@ -92,7 +92,7 @@ jobs: - uses: actions/checkout@v4 - name: Setup xmake - uses: ue-foundation/github-action-setup-xmake@v1.1.1 + uses: ue-foundation/github-action-setup-xmake@v1.2.2 with: xmake-version: ${{env.XMAKE_VERSION}} diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index bf7b1c853..32b75fe5e 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -72,7 +72,7 @@ jobs: run: git config --global --add safe.directory "${{ github.workspace }}" - name: Setup xmake - uses: ue-foundation/github-action-setup-xmake@v1.1.1 + uses: ue-foundation/github-action-setup-xmake@v1.2.2 with: xmake-version: ${{env.XMAKE_VERSION}} @@ -139,7 +139,7 @@ jobs: ./scripts/ue_build_linux/get_ue_toolchain.sh ./.tmp-ue-toolchain - name: Setup xmake - uses: ue-foundation/github-action-setup-xmake@v1.1.1 + uses: ue-foundation/github-action-setup-xmake@v1.2.2 with: xmake-version: ${{env.XMAKE_VERSION}} @@ -202,7 +202,7 @@ jobs: uses: actions/checkout@v4 - name: Setup xmake - uses: ue-foundation/github-action-setup-xmake@v1.1.1 + uses: ue-foundation/github-action-setup-xmake@v1.2.2 with: xmake-version: ${{env.XMAKE_VERSION}} -- cgit v1.2.3 From 794f093057c58c4909a0653edb54fdf869560596 Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Wed, 4 Mar 2026 14:00:34 +0100 Subject: native xmake toolchain definition for UE-clang (#805) This change is meant to provide a smoother experience when working on Linux. After this change, the toolchain setup process is now simply ```bash $ scripts/ue_build_linux/get_ue_toolchain.sh ``` and then at config time the toolchain is automatically detected if you downloaded it to the default location or have the `UE_TOOLCHAIN_DIR` environment variable set ```bash xmake config --mode=debug ``` Compared to the old script-based approach this configures the toolchain more precisely, avoiding leakage into unrelated build processes such as when a package manager decides to build something like Ninja locally etc. --- .github/workflows/create_release.yml | 4 ++-- .github/workflows/validate.yml | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to '.github') diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index 163c0cf85..2eeedc0c2 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -60,11 +60,11 @@ jobs: - name: Config run: | - ./scripts/ue_build_linux/ue_build.sh ./.tmp-ue-toolchain xmake config -v -y -m release --zensentry=yes + xmake config -v -y -m release --zensentry=yes --toolchain=ue-clang --sdk=${{ github.workspace }}/.tmp-ue-toolchain - name: Bundle run: | - ./scripts/ue_build_linux/ue_build.sh ./.tmp-ue-toolchain xmake bundle -v -y + xmake bundle -v -y - name: Get Sentry CLI run: | diff --git a/.github/workflows/validate.yml b/.github/workflows/validate.yml index 32b75fe5e..d96645ac9 100644 --- a/.github/workflows/validate.yml +++ b/.github/workflows/validate.yml @@ -145,7 +145,7 @@ jobs: - 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' }} @@ -155,7 +155,7 @@ jobs: - name: Build & Test if: ${{ matrix.config == 'debug' }} run: | - ./scripts/ue_build_linux/ue_build.sh ./.tmp-ue-toolchain xmake test -v -y --junit + xmake test -v -y --junit - name: Upload report if: ${{ (failure() || success()) && (matrix.config == 'debug') }} @@ -176,7 +176,7 @@ 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: Upload zenserver-linux if: ${{ github.ref_name == 'main' && matrix.config == 'release' }} -- cgit v1.2.3 From 2f0d60cb431ffefecf3e0a383528691be74af21b Mon Sep 17 00:00:00 2001 From: Stefan Boberg Date: Thu, 5 Mar 2026 14:31:27 +0100 Subject: oidctoken tool package (#810) * added OidcToken binary to the build process. The binary is mirrored from p4 and is placed next to the output of the build process. It is also placed in the release zip archives. * also fixed issue with Linux symbol stripping which was introduced in toolchain changes yesterday --- .github/workflows/create_release.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to '.github') diff --git a/.github/workflows/create_release.yml b/.github/workflows/create_release.yml index 2eeedc0c2..3345573c0 100644 --- a/.github/workflows/create_release.yml +++ b/.github/workflows/create_release.yml @@ -26,7 +26,7 @@ jobs: run: | xmake config -v -y -m release --zensentry=yes - - name: Bundle + - name: Build and Bundle run: | xmake bundle -v -y --codesignidentity="Epic Games" @@ -62,13 +62,13 @@ jobs: run: | xmake config -v -y -m release --zensentry=yes --toolchain=ue-clang --sdk=${{ github.workspace }}/.tmp-ue-toolchain - - name: Bundle + - name: Build and Bundle run: | xmake bundle -v -y - name: Get Sentry CLI run: | - curl -sL https://sentry.io/get-cli/ | bash + curl -sL https://sentry.io/get-cli/ | SENTRY_CLI_VERSION="3.2.0" bash ls -la ./scripts env: INSTALL_DIR: ./scripts @@ -100,13 +100,13 @@ jobs: run: | xmake config -v -y -m release --zensentry=yes - - name: Bundle + - name: Build and Bundle run: | xmake bundle -v -y --codesignidentity="Developer ID Application" - name: Get Sentry CLI run: | - curl -sL https://sentry.io/get-cli/ | bash + curl -sL https://sentry.io/get-cli/ | SENTRY_CLI_VERSION="3.2.0" bash ls -la ./scripts env: INSTALL_DIR: ./scripts -- cgit v1.2.3