Skip to content

ci: throwaway EEVEE runner probe for #201 (not for merge) #1

ci: throwaway EEVEE runner probe for #201 (not for merge)

ci: throwaway EEVEE runner probe for #201 (not for merge) #1

Workflow file for this run

name: Probe EEVEE on runners (#201, throwaway)
# Measures whether an EEVEE render works on today's ubuntu-latest, for issue #201
# option 3. Lives only on the probe branch; never merged.
on:
push:
branches: [probe/eevee-runner-201]
permissions:
contents: read
jobs:
probe:
name: EEVEE probe ${{ matrix.series }}
runs-on: ubuntu-latest
timeout-minutes: 30
strategy:
fail-fast: false
matrix:
series: ["5.2", "4.5"]
steps:
- uses: actions/checkout@v7
- name: Install the smoke workflow's runtime libraries (unchanged)
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
xvfb libgl1 libegl1 libxrender1 libxxf86vm1 libxfixes3 libxi6 \
libxkbcommon0 libsm6 libice6
- name: Download Blender ${{ matrix.series }}
run: |
set -euo pipefail
series="${{ matrix.series }}"
base="https://download.blender.org/release/Blender${series}/"
file=$(curl -fsSL "$base" | grep -oE "blender-${series}\.[0-9]+-linux-x64\.tar\.xz" | sort -V | uniq | tail -1)
mkdir -p "$RUNNER_TEMP/bl"
curl -fSL --retry 3 -o "$RUNNER_TEMP/bl.tar.xz" "${base}${file}"
tar -xf "$RUNNER_TEMP/bl.tar.xz" -C "$RUNNER_TEMP/bl"
bl=$(find "$RUNNER_TEMP/bl" -maxdepth 2 -type f -name blender | head -1)
echo "BLENDER=$bl" >> "$GITHUB_ENV"
"$bl" --version | head -1
- name: Probe renders
run: |
set +e
mkdir -p "$RUNNER_TEMP/out"
script=showcase/shipping-crate/shipping_crate.py
probe() { # label, needs_mesa, use_xvfb, engine
local out="$RUNNER_TEMP/out/$1.png" pre=""
[ "$3" = yes ] && pre="xvfb-run -a"
local t0=$(date +%s.%N)
$pre "$BLENDER" --background --factory-startup --python "$script" -- \
--output "$out" --engine "$4" > "$RUNNER_TEMP/out/$1.log" 2>&1
local rc=$? t1=$(date +%s.%N)
local size=$(stat -c %s "$out" 2>/dev/null || echo 0)
local secs=$(python3 -c "print(round($t1 - $t0, 1))")
echo "| $1 | ${{ matrix.series }} | $4 | xvfb=$3 | exit $rc | ${secs}s | ${size} B |" | tee -a "$RUNNER_TEMP/out/table.md"
grep -iE "EGL|GPU|OpenGL|backend|Error|abort" "$RUNNER_TEMP/out/$1.log" | head -8
}
echo "| probe | series | engine | display | result | wall | png |" > "$RUNNER_TEMP/out/table.md"
echo "| --- | --- | --- | --- | --- | --- | --- |" >> "$RUNNER_TEMP/out/table.md"
"$BLENDER" --background --factory-startup --python "$script" > /dev/null 2>&1; echo "check-only exit $?"
probe A-eevee-headless no no eevee
probe A-eevee-xvfb no yes eevee
probe A-cycles-headless no no cycles
sudo apt-get install -y --no-install-recommends libgl1-mesa-dri libegl-mesa0 libglx-mesa0 > /dev/null 2>&1
probe B-eevee-mesa-headless yes no eevee
probe B-eevee-mesa-xvfb yes yes eevee
cat "$RUNNER_TEMP/out/table.md" >> "$GITHUB_STEP_SUMMARY"
exit 0
- uses: actions/upload-artifact@v4
if: always()
with:
name: eevee-probe-${{ matrix.series }}
path: ${{ runner.temp }}/out/