[Fix] (ci): restore isolated retrace job

This commit is contained in:
2026-06-16 09:14:53 +08:00
parent fe1b6db653
commit d335131f52
+80 -33
View File
@@ -65,7 +65,7 @@ jobs:
-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
-DMOBILEGL_BUILD_TEST=ON \
-DMOBILEGL_BUILD_BENCHMARK=ON \
-DMOBILEGL_BUILD_TRACE_REPLAY=ON \
-DMOBILEGL_BUILD_TRACE_REPLAY=OFF \
-DBENCHMARK_DOWNLOAD_DEPENDENCIES=ON \
-DBENCHMARK_ENABLE_TESTING=OFF \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
@@ -88,9 +88,7 @@ jobs:
"${BUILD_DIR}/CTestTestfile.cmake" \
"${BUILD_DIR}/MobileGL/MG_Test" \
"${BUILD_DIR}/MobileGL/MG_Benchmark" \
"${BUILD_DIR}/tools/trace_replay" \
"${SHARED_LIBS[@]}" \
tools/trace_replay/fixtures
"${SHARED_LIBS[@]}"
- name: Upload Linux runtime
uses: actions/upload-artifact@v4
@@ -192,9 +190,15 @@ jobs:
retrace:
runs-on: ubuntu-latest
needs: build-linux
env:
BUILD_DIR: build-retrace
steps:
- name: Set Swap Space
uses: pierotofy/set-swap-space@master
with:
swap-size-gb: 32
- name: Checkout repo
uses: actions/checkout@v4
with:
@@ -203,39 +207,68 @@ jobs:
- name: Get CMake
uses: lukka/get-cmake@latest
- name: Install runtime dependencies
- name: Prepare Vulkan SDK
uses: humbletim/setup-vulkan-sdk@v1.2.1
with:
vulkan-query-version: 1.4.304.1
vulkan-components: Vulkan-Headers, Vulkan-Loader
vulkan-use-cache: true
- name: Update glslang external sources
working-directory: 3rdparty/glslang
run: python update_glslang_sources.py
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y libvulkan1 libegl1 libgles2 libgl1-mesa-dri mesa-vulkan-drivers
sudo apt-get install -y clang-20 clang++-20 lld-20 libc++-20-dev libc++abi-20-dev libvulkan-dev libegl1-mesa-dev libgles2-mesa-dev libgl1-mesa-dri mesa-vulkan-drivers ninja-build
- name: Download Linux runtime
uses: actions/download-artifact@v4
with:
name: mobilegl-linux-runtime
path: .
- name: Unpack Linux runtime
run: tar -xzf mobilegl-linux-runtime.tgz
- name: Normalize CTest command paths
- name: Show installed toolchain
run: |
python - <<'PY'
from pathlib import Path
import re
clang-20 --version
clang++-20 --version
ld.lld-20 --version || ld.lld --version || true
dpkg -l 'libc++*' 'libegl*' 'libgles*' 'mesa*' 'vulkan*' || true
for path in Path('build-linux').rglob('CTestTestfile.cmake'):
text = path.read_text()
text = re.sub(r'"[^"]*/cmake-[^"]*/bin/cmake"', '"cmake"', text)
path.write_text(text)
PY
- name: Configure CMake
run: |
if [ "${{ secrets.ACTIONS_STEP_DEBUG }}" = "true" ]; then
BUILD_TYPE=Debug
else
BUILD_TYPE=Release
fi
cmake -S . -B "${BUILD_DIR}" -G Ninja \
-DCMAKE_C_COMPILER=clang-20 \
-DCMAKE_CXX_COMPILER=clang++-20 \
-DCMAKE_BUILD_TYPE="${BUILD_TYPE}" \
-DMOBILEGL_BUILD_TEST=OFF \
-DMOBILEGL_BUILD_BENCHMARK=OFF \
-DMOBILEGL_BUILD_TRACE_REPLAY=ON \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5
- name: Build trace replay
run: cmake --build "${BUILD_DIR}" --target mobilegl_trace_replay --parallel "$(nproc)"
- name: Retrace and validate Espryt (DirectGLES)
working-directory: build-linux/tools/trace_replay
run: ctest -V -R MobileGLTraceReplay.OpenRA.DirectGLES
working-directory: build-retrace
run: |
set +e
ctest -V -R MobileGLTraceReplay.OpenRA.DirectGLES
status=$?
mkdir -p tools/trace_replay/openra
echo "${status}" > tools/trace_replay/openra/DirectGLES.status
exit 0
- name: Retrace and validate Magma (DirectVulkan)
working-directory: build-linux/tools/trace_replay
run: ctest -V -R MobileGLTraceReplay.OpenRA.DirectVulkan
working-directory: build-retrace
run: |
set +e
ctest -V -R MobileGLTraceReplay.OpenRA.DirectVulkan
status=$?
mkdir -p tools/trace_replay/openra
echo "${status}" > tools/trace_replay/openra/DirectVulkan.status
exit 0
- name: Upload actual image
if: always()
@@ -243,8 +276,22 @@ jobs:
with:
name: OpenRA-retrace-actual
path: |
build-linux/tools/trace_replay/openra/actual-images/openra-DirectGLES-actual.png
build-linux/tools/trace_replay/openra/actual-images/openra-DirectVulkan-actual.png
build-linux/tools/trace_replay/openra/actual-images/*.json
build-linux/tools/trace_replay/openra/actual-images/*.log
build-retrace/tools/trace_replay/openra/actual-images/openra-DirectGLES-actual.png
build-retrace/tools/trace_replay/openra/actual-images/openra-DirectVulkan-actual.png
build-retrace/tools/trace_replay/openra/actual-images/*.json
build-retrace/tools/trace_replay/openra/actual-images/*.log
build-retrace/tools/trace_replay/openra/*.status
build-retrace/tools/trace_replay/openra/*/output/**
if-no-files-found: warn
- name: Check retrace results
if: always()
working-directory: build-retrace
run: |
direct_gles_status="$(cat tools/trace_replay/openra/DirectGLES.status 2>/dev/null || echo 1)"
direct_vulkan_status="$(cat tools/trace_replay/openra/DirectVulkan.status 2>/dev/null || echo 1)"
echo "DirectGLES status: ${direct_gles_status}"
echo "DirectVulkan status: ${direct_vulkan_status}"
if [ "${direct_gles_status}" -ne 0 ] || [ "${direct_vulkan_status}" -ne 0 ]; then
exit 1
fi