linux: implement close surface, set_title, and pwd callbacks (#237) #150
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: 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 |