diff --git a/Jenkinsfile b/Jenkinsfile index 81d8130..162a05c 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -90,6 +90,9 @@ spec: DOCKER_BUILDKIT = '1' LESAVKA_CI_PROFILE = "${params.LESAVKA_CI_PROFILE}" LESAVKA_COVERAGE_ENFORCE = "${params.ENFORCE_COVERAGE_GATE}" + LESAVKA_CI_HEADLESS_GTK = '1' + GDK_BACKEND = 'x11' + NO_AT_BRIDGE = '1' QUALITY_GATE_PUSHGATEWAY_URL = "${params.QUALITY_GATE_PUSHGATEWAY_URL}" } @@ -101,14 +104,16 @@ spec: } stage('Bootstrap CI Toolchain') { - when { - expression { return params.LESAVKA_CI_PROFILE != 'safe' } - } steps { container('rust-ci') { sh ''' set -eu git config --global --add safe.directory "$WORKSPACE" + if [ -z "${DISPLAY:-}" ] && ! command -v xvfb-run >/dev/null 2>&1; then + apt-get update + DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends xvfb xauth dbus-x11 + rm -rf /var/lib/apt/lists/* + fi ''' } } diff --git a/scripts/ci/test_gate.sh b/scripts/ci/test_gate.sh index 5efd83e..e83f1cc 100755 --- a/scripts/ci/test_gate.sh +++ b/scripts/ci/test_gate.sh @@ -27,7 +27,14 @@ build_url=${BUILD_URL:-} start_seconds=$(date +%s) status=0 set +e -RUST_TEST_THREADS="${RUST_TEST_THREADS:-1}" cargo test --workspace --all-targets --no-fail-fast --color never 2>&1 | tee "${TEST_LOG}" +cargo_test_cmd=(cargo test --workspace --all-targets --no-fail-fast --color never) +if [[ -z "${DISPLAY:-}" && "${LESAVKA_CI_HEADLESS_GTK:-1}" != "0" ]] && command -v xvfb-run >/dev/null 2>&1; then + cargo_test_cmd=(xvfb-run -a -s "-screen 0 1920x1080x24" "${cargo_test_cmd[@]}") +fi +if command -v dbus-run-session >/dev/null 2>&1; then + cargo_test_cmd=(dbus-run-session -- "${cargo_test_cmd[@]}") +fi +RUST_TEST_THREADS="${RUST_TEST_THREADS:-1}" "${cargo_test_cmd[@]}" 2>&1 | tee "${TEST_LOG}" status=${PIPESTATUS[0]} set -e end_seconds=$(date +%s)