ci: throwaway EEVEE runner probe for #201 (not for merge) #1
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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/ |