From 81da13b9e296cb0a84cc648e3d26b8f0139461d1 Mon Sep 17 00:00:00 2001 From: Giovanni Mascellani Date: Thu, 21 Sep 2023 15:35:11 +0200 Subject: [PATCH] ci: Build crosstests in a dedicated CI job. Mostly to avoid polluting other logs and artifacts, and also to avoid recompiling crosstests over and over. Eventually the artifacts produced at this stage should be run on native Windows. --- gitlab/build-crosstest | 19 +++++++++++++++++++ gitlab/build-linux | 4 ++-- gitlab/build-mac | 4 ++-- gitlab/build.yml | 26 ++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 4 deletions(-) create mode 100755 gitlab/build-crosstest diff --git a/gitlab/build-crosstest b/gitlab/build-crosstest new file mode 100755 index 00000000..99997ffa --- /dev/null +++ b/gitlab/build-crosstest @@ -0,0 +1,19 @@ +#!/bin/bash + +echo "Building $(git log -1)" +echo "---" + +COMMIT=$(git rev-parse --short HEAD) + +set -Eeuxo pipefail + +./autogen.sh +rm -fr build +mkdir build +cd build +../configure && make -j$(nproc) crosstest || touch ../pipeline_failed + +mkdir -p ../artifacts/$COMMIT +rsync -Rr tests/*.exe ../artifacts/$COMMIT + +git reset --hard diff --git a/gitlab/build-linux b/gitlab/build-linux index 4162442d..b6071ef9 100755 --- a/gitlab/build-linux +++ b/gitlab/build-linux @@ -11,9 +11,9 @@ set -Eeuxo pipefail rm -fr build mkdir build cd build -../configure --enable-demos && make -j$(nproc) && make -j$(nproc) crosstest && make -j$(nproc) check || touch ../pipeline_failed +../configure --enable-demos && make -j$(nproc) && make -j$(nproc) check || touch ../pipeline_failed mkdir -p ../artifacts/$COMMIT -rsync -Rr doc/* tests/*.exe test-suite.log tests/*.log tests/*/*.log ../artifacts/$COMMIT +rsync -Rr doc/* test-suite.log tests/*.log tests/*/*.log ../artifacts/$COMMIT git reset --hard diff --git a/gitlab/build-mac b/gitlab/build-mac index e423330e..401bdc5a 100755 --- a/gitlab/build-mac +++ b/gitlab/build-mac @@ -11,9 +11,9 @@ set -Eeuxo pipefail rm -fr build mkdir build cd build -../configure && make -j$(sysctl -n hw.ncpu) && make -j$(sysctl -n hw.ncpu) crosstest && make -j$(sysctl -n hw.ncpu) check || touch ../pipeline_failed +../configure && make -j$(sysctl -n hw.ncpu) && make -j$(sysctl -n hw.ncpu) check || touch ../pipeline_failed mkdir -p ../artifacts/$COMMIT -rsync -Rr tests/*.exe test-suite.log tests/*.log tests/*/*.log ../artifacts/$COMMIT +rsync -Rr test-suite.log tests/*.log tests/*/*.log ../artifacts/$COMMIT git reset --hard diff --git a/gitlab/build.yml b/gitlab/build.yml index 7cc88f1f..e78e7081 100644 --- a/gitlab/build.yml +++ b/gitlab/build.yml @@ -56,6 +56,32 @@ build-llvmpipe-32: CC: 'gcc -m32' VKD3D_SHADER_CONFIG: 'force_validation' +build-crosstest: + stage: build + rules: + - if: $CI_PIPELINE_SOURCE == 'merge_request_event' + image: $CI_REGISTRY/wine/vkd3d:debian-bookworm + interruptible: true + needs: + - job: build-image + optional: true + dependencies: [] + script: + - git config --global --add safe.directory $CI_PROJECT_DIR + - git clean -fdx + - git reset --hard + - rm -fr .git/rebase-merge + - mkdir artifacts + - cat /proc/cpuinfo > artifacts/cpuinfo.txt + - cat /proc/meminfo > artifacts/meminfo.txt + - vulkaninfo > artifacts/vulkaninfo.txt + - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./gitlab/build-crosstest + - if [ -f pipeline_failed ] ; then exit 1 ; fi + artifacts: + when: always + paths: + - artifacts + build-mac: stage: build rules: