Skip to content

Build Workstation (Ubuntu, CUDA 12.8) #21

Build Workstation (Ubuntu, CUDA 12.8)

Build Workstation (Ubuntu, CUDA 12.8) #21

name: Build Workstation (Ubuntu, CUDA 12.8)
on:
workflow_dispatch:
inputs:
variant:
description: "GPU variant to build"
required: true
default: "rtx50"
type: choice
options:
- rtx50
- broad
- both
env:
ACTIONS_RUNNER_DEBUG: "true"
ACTIONS_STEP_DEBUG: "true"
jobs:
build-ubuntu-cuda128:
runs-on: ubuntu-24.04
timeout-minutes: 180
strategy:
fail-fast: false
matrix:
variant: ${{ github.event.inputs.variant == 'both' && fromJSON('["rtx50","broad"]') || fromJSON(format('["{0}"]', github.event.inputs.variant)) }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Python
id: setup-python
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Show Python paths
shell: bash
run: |
set -euxo pipefail
echo "setup-python.outputs.python-path=${{ steps.setup-python.outputs.python-path }}"
which python || true
python --version || true
which python3 || true
python3 --version || true
which python3.11 || true
python3.11 --version || true
- name: Free disk space
shell: bash
run: |
set -euxo pipefail
df -h
sudo rm -rf /usr/share/dotnet || true
sudo rm -rf /usr/local/lib/android || true
sudo rm -rf /usr/local/share/boost || true
sudo rm -rf /usr/share/swift || true
df -h
- name: System deps (Qt + runtime libs)
shell: bash
run: |
set -euxo pipefail
sudo apt-get update
sudo apt-get install -y \
build-essential \
patchelf \
libgl1 \
libglib2.0-0 \
libxkbcommon-x11-0 \
libxcb-xinerama0 \
libxrender1 \
libxext6 \
libx11-6 \
libfuse2
- name: Build Workstation (Ubuntu CUDA128 - ${{ matrix.variant }})
shell: bash
env:
PYTHON: ${{ steps.setup-python.outputs.python-path }}
run: |
set -euxo pipefail
# heartbeat in background (keeps logs flowing)
(while true; do echo "heartbeat $(date -Is)"; sleep 10; done) &
HB_PID=$!
trap 'kill $HB_PID 2>/dev/null || true' EXIT
chmod +x build_workstation_ubuntu_cuda128.sh
./build_workstation_ubuntu_cuda128.sh ${{ matrix.variant }}
echo "=== POST-BUILD STATE (inside build step) ==="
ls -lah painter/dist || true
du -sh painter/dist/* 2>/dev/null || true
df -h || true
free -h || true
- name: Inspect dist output
shell: bash
run: |
set -euxo pipefail
ls -lah painter/dist || true
du -sh painter/dist/* 2>/dev/null || true
df -h
free -h
- name: Sanity check
shell: bash
run: |
set -euxo pipefail
APPIMAGE=$(ls painter/dist/RootPainterWorkstation_*.AppImage 2>/dev/null | head -1)
test -n "$APPIMAGE"
test -f "$APPIMAGE"
ls -lh "$APPIMAGE"
- name: Upload AppImage
uses: actions/upload-artifact@v4
with:
name: RootPainter-Workstation-Ubuntu-CUDA128-${{ matrix.variant }}
path: painter/dist/RootPainterWorkstation_*.AppImage