Files
feresaria/.github/workflows/workspace-checks.yml
T
Samuel Onoja 4fb383eaa3 Clear Background portal state when compositor IPC disconnects
Notify consumers when cached apps disappear and repopulate state from the next compositor snapshot. Cover disconnects, reconnects and duplicate signals on a private D-Bus session, and run the regression in CI.

Fixes #56
2026-10-20 15:36:45 +01:00

124 lines
5.6 KiB
YAML

name: Workspace and native stability checks
on:
workflow_dispatch:
permissions:
contents: read
concurrency:
group: workspace-checks-${{ github.ref }}
cancel-in-progress: true
jobs:
workspace:
runs-on: ubuntu-24.04
timeout-minutes: 60
env:
CARGO_BUILD_JOBS: "2"
CARGO_INCREMENTAL: "0"
CARGO_PROFILE_DEV_DEBUG: "0"
CARGO_PROFILE_TEST_DEBUG: "0"
XDG_RUNTIME_DIR: /tmp/ferese-workspace-runtime
steps:
- uses: actions/checkout@v6
- name: Install workspace build and test dependencies
run: |
sudo apt-get update
sudo apt-get install -y build-essential pkg-config dbus-daemon libwayland-dev \
libxkbcommon-dev xkb-data libinput-dev libudev-dev libseat-dev libgbm-dev \
python3-gi python3-pil libegl-dev libegl-mesa0 libgl1-mesa-dri mesa-vulkan-drivers libdrm-dev libfontconfig1-dev libfreetype-dev libexpat1-dev xauth \
clang libclang-dev libpipewire-0.3-dev libspa-0.2-dev libglib2.0-dev libgstreamer1.0-dev libpam-modules
- name: Create private test runtime directory
run: install -d -m 0700 "$XDG_RUNTIME_DIR"
- name: Install Rust
run: rustup toolchain install 1.95.0 --profile minimal --component rustfmt --component clippy
- name: Check formatting and all workspace lints
run: |
cargo +1.95.0 fmt --all --check
cargo +1.95.0 clippy --locked --workspace --all-targets -- -D warnings
- name: Build desktop binaries
run: cargo +1.95.0 build --locked --workspace
- name: Test every workspace package
run: cargo +1.95.0 test --locked --workspace --no-fail-fast -- --nocapture
- name: Validate every Settings control against the compositor
env:
FERESE_TEST_BINARY: ${{ github.workspace }}/target/debug/ferese
run: cargo +1.95.0 test --locked -p ferese-settings all_gui_controls_and_presets_pass_compositor_validation -- --ignored --nocapture
- name: Fetch pinned upstream portal contracts
uses: actions/checkout@v6
with:
repository: flatpak/xdg-desktop-portal
ref: 23a76c392170dbbd26230f85ef56c3a57e52b857 # 1.20.3
path: build/portal-contracts
- name: Test installer, session recovery and private portal contracts
env:
FERESE_TEST_PORTAL_INTERFACES: ${{ github.workspace }}/build/portal-contracts/data
FERESE_TEST_PORTAL_BACKGROUND: "1"
run: python3 -m unittest discover -s scripts/tests -v
- name: Test capture privacy, resize dependencies and cursor composition
env:
LIBGL_ALWAYS_SOFTWARE: "1"
EGL_PLATFORM: surfaceless
run: |
cargo +1.95.0 test --locked -p ferese state::capture_privacy::tests -- --ignored --nocapture
cargo +1.95.0 test --locked -p ferese backends::direct::capture::tests::capture_recomposes_cursor_without_touching_the_display_target -- --ignored --nocapture
cargo +1.95.0 test --locked -p ferese winit::tests::capture_failure_restores_display_target_and_subsequent_frames_render -- --ignored --nocapture
- name: Share desktop binaries with native checks
uses: actions/upload-artifact@v7
with:
name: native-check-binaries
path: |
target/debug/ferese
target/debug/ferese-shell
target/debug/feresectl
if-no-files-found: error
retention-days: 1
native:
name: Native panel and XWayland checks
needs: workspace
runs-on: ubuntu-24.04
timeout-minutes: 20
env:
CARGO_BUILD_JOBS: "2"
CARGO_PROFILE_DEV_DEBUG: "0"
LIBGL_ALWAYS_SOFTWARE: "1"
steps:
- uses: actions/checkout@v6
- name: Install native test dependencies
run: |
sudo apt-get update
sudo apt-get install -y weston xwayland x11-utils xauth dbus-daemon \
build-essential pkg-config clang libclang-dev libxcb1-dev libxcb-cursor-dev libxkbcommon-dev \
libwayland-dev libgbm1 libseat1 libinput10 libpipewire-0.3-0t64 \
libegl1 libegl-mesa0 libgl1-mesa-dri fonts-dejavu-core
- name: Create the shared X11 socket directory
run: sudo install -d -m 1777 -o root -g root /tmp/.X11-unix
- uses: actions/download-artifact@v8
with:
name: native-check-binaries
path: target/debug
- name: Restore executable permissions
run: chmod +x target/debug/ferese target/debug/ferese-shell target/debug/feresectl
- name: Install pinned Rust
run: rustup toolchain install 1.95.0 --profile minimal
- name: Build pinned XWayland Satellite with readiness support
uses: actions/checkout@v6
with:
repository: Supreeeme/xwayland-satellite
ref: b83eab900644e4c7c77982ce3d44cb490f0c5e1d # v0.8.3
path: build/xwayland-satellite
- name: Build XWayland Satellite
run: cargo +1.95.0 build --manifest-path build/xwayland-satellite/Cargo.toml --locked --features systemd
- name: Run isolated native checks on a headless Wayland host
env:
FERESE_TEST_BINARY: target/debug/ferese
FERESE_TEST_SHELL: target/debug/ferese-shell
FERESE_TEST_CTL: target/debug/feresectl
FERESE_TEST_SATELLITE: build/xwayland-satellite/target/debug/xwayland-satellite
run: python3 scripts/ci/run-native-checks.py --log-dir build/native-check-logs
- name: Save native test logs
if: always()
uses: actions/upload-artifact@v7
with:
name: native-check-logs
path: build/native-check-logs
if-no-files-found: warn
retention-days: 7