aboutsummaryrefslogtreecommitdiff
path: root/.github/workflows/validate.yml
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2026-02-28 15:36:13 +0100
committerGitHub Enterprise <[email protected]>2026-02-28 15:36:13 +0100
commitc7e0efb9c12f4607d4bc6a844a3e5bd3272bd839 (patch)
tree47c7edc37dcd54f06be04b40f96e6edc24d7f4ab /.github/workflows/validate.yml
parentadd multirange requests to blob store (#795) (diff)
downloadzen-c7e0efb9c12f4607d4bc6a844a3e5bd3272bd839.tar.xz
zen-c7e0efb9c12f4607d4bc6a844a3e5bd3272bd839.zip
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=<N>` 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
Diffstat (limited to '.github/workflows/validate.yml')
-rw-r--r--.github/workflows/validate.yml85
1 files changed, 62 insertions, 23 deletions
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/[email protected]
- 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/[email protected]
@@ -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/[email protected]
@@ -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