Files
feresaria/.github/workflows/release-checks.yml
T
Samuel Onoja 1b9fabbbe4 Add Fedora and Arch package recipes (#24)
* Package Ferese for Fedora and Arch releases

* Build release packages alongside workspace checks

* Include dependency licenses and software GPU test drivers

* Limit package checks to release PRs and fix Arch Cargo dependency

* Prepare Ferese 0.1.0-beta

* Release config locks before closing inherited file descriptions

* Install the lock PAM policy for native release checks

* Include xauth in distribution package test dependencies

* Regenerate Arch Git package metadata

* Run package checks with an explicit UTC timezone

* Remove unused bundled fonts and accept installed license receipts

* Format the system font test helper

* Load an installed font for headless text rendering checks

* Isolate package test runtimes and reap container child processes
2026-10-11 14:16:00 +01:00

84 lines
3.7 KiB
YAML

name: Workspace release checks
on:
pull_request:
push:
branches: [main]
workflow_dispatch:
workflow_call:
permissions:
contents: read
concurrency:
group: release-checks-${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: false
jobs:
workspace:
runs-on: ubuntu-24.04
container:
image: fedora:44
options: --init
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-release-runtime
steps:
- name: Install desktop build and test dependencies
run: |
dnf install -y --allowerasing python3 python3-gobject python3-pillow git curl gcc gcc-c++ make cmake pkgconf-pkg-config \
wayland-devel wayland-protocols-devel libxkbcommon-devel libinput-devel systemd-devel libseat-devel \
mesa-libgbm-devel mesa-libEGL-devel mesa-dri-drivers mesa-vulkan-drivers libdrm-devel fontconfig-devel \
freetype-devel expat-devel dbus-daemon dbus-tools desktop-file-utils foot pam xorg-x11-xauth \
clang clang-devel pipewire-devel pipewire wireplumber polkit polkit-libs libei \
xdg-desktop-portal xdg-desktop-portal-gtk weston \
gstreamer1-devel gstreamer1-plugins-base gstreamer1-plugins-good pipewire-gstreamer
- name: Create private test runtime directory
run: install -d -m 0700 "$XDG_RUNTIME_DIR"
- uses: actions/checkout@v6
- name: Install pinned Rust and checks
run: |
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs -o /tmp/rustup.sh
sh /tmp/rustup.sh -y --profile minimal --default-toolchain 1.95.0 --component rustfmt --component clippy
echo "$HOME/.cargo/bin" >> "$GITHUB_PATH"
- name: Check formatting and all workspace lints
run: |
cargo fmt --all --check
cargo clippy --locked --workspace --all-targets -- -D warnings
- name: Build desktop binaries and test the complete workspace
run: |
cargo build --locked --workspace
cargo test --locked --workspace --no-fail-fast
- name: Check release tag matches the workspace version
if: startsWith(github.ref, 'refs/tags/')
env:
RELEASE_TAG: ${{ github.ref_name }}
run: |
python3 - <<'PYTHON'
import os, tomllib
with open("Cargo.toml", "rb") as source:
version = tomllib.load(source)["workspace"]["package"]["version"]
assert os.environ["RELEASE_TAG"] == "v" + version, "Tag must match workspace.package.version"
PYTHON
- name: Test capture privacy and failure recovery
env:
LIBGL_ALWAYS_SOFTWARE: "1"
EGL_PLATFORM: surfaceless
run: |
cargo test --locked -p ferese state::capture_privacy::tests -- --ignored
cargo test --locked -p ferese backends::direct::capture::tests::capture_recomposes_cursor_without_touching_the_display_target -- --ignored
cargo test --locked -p ferese winit::tests::capture_failure_restores_display_target_and_subsequent_frames_render -- --ignored
- name: Test native shell, visibility and resize behavior
run: |
install -m 0644 packaging/pam.d/ferese-lock.fedora /etc/pam.d/ferese-lock
python3 scripts/ci/run-native-checks.py --suite desktop --log-dir native-logs
- name: Upload native test logs
if: always()
uses: actions/upload-artifact@v4
with:
name: native-test-logs
path: native-logs
if-no-files-found: ignore
- name: Test installer, session recovery and private portal contracts
run: python3 -m unittest discover -s scripts/tests -v