Skip to content

linux: implement close surface, set_title, and pwd callbacks (#237) #150

linux: implement close surface, set_title, and pwd callbacks (#237)

linux: implement close surface, set_title, and pwd callbacks (#237) #150

Workflow file for this run

name: GPU Smoke Test (Self-Hosted)
on:
# SECURITY: Only trigger on direct pushes and manual dispatch.
# Never run on pull_request — fork PRs could execute arbitrary code
# on the self-hosted runner with GPU access.
push:
branches: [main, 'sid/**']
paths:
- 'cmux-linux/**'
- 'ghostty'
- '.github/workflows/test-gpu.yml'
workflow_dispatch:
inputs:
ref:
description: Branch or SHA to test
required: false
default: ""
test_timeout:
description: "Smoke test timeout in seconds"
required: false
default: "15"
concurrency:
group: test-gpu-${{ github.ref }}
cancel-in-progress: true
jobs:
gpu-smoke:
name: GPU smoke test (honey)
runs-on: [self-hosted, linux, gpu, cmux-test]
# Require approval via GitHub Environment protection rules.
environment: gpu-tests
timeout-minutes: 30
steps:
- uses: actions/checkout@v5
with:
ref: ${{ inputs.ref || github.ref }}
submodules: recursive
- name: Strip non-version tags from ghostty
run: git -C ghostty tag -l 'xcframework-*' | xargs git -C ghostty tag -d 2>/dev/null || true
- name: GPU info
run: |
echo "=== GPU devices ==="
ls -la /dev/dri/ || echo "No DRI devices"
echo "=== Vulkan info ==="
vulkaninfo --summary 2>/dev/null | head -20 || echo "vulkaninfo not available"
- name: Build libghostty (Nix)
run: |
nix develop --command bash -c 'cd ghostty && zig build -Dapp-runtime=none -Drenderer=opengl -Doptimize=ReleaseFast'
bash scripts/ghostty-compat-symlinks.sh
ls -lh ghostty/zig-out/lib/libghostty.*
- name: Build cmux-linux (Nix)
run: nix develop --command bash -c 'cd cmux-linux && zig build -Doptimize=ReleaseFast && ls -lh zig-out/bin/cmux'
- name: Test config parser (Nix)
run: nix develop --command bash -c 'cd cmux-linux && zig build test'
- name: GPU smoke test
env:
SMOKE_TIMEOUT: ${{ inputs.test_timeout || '15' }}
run: nix develop --command bash scripts/smoke-test-gpu.sh "$SMOKE_TIMEOUT"
- name: Upload crash logs
if: failure()
uses: actions/upload-artifact@v4
with:
name: gpu-crash-logs
path: |
/tmp/cmux-gpu-stderr.log
/tmp/core.*
retention-days: 7