mirror of
https://github.com/niri-wm/niri.git
synced 2026-06-21 02:01:55 +07:00
3b76cb7b3d
* feat(ci): add FreeBSD job * Update .github/workflows/ci.yml * fix(workflow): remove 10m timeout for freebsd job, put it back later if there is an actual reason * feat(workflow): enable cache on freebsd job * feat(workflow): add custom CARGO_HOME for freebsd job * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * wip * clean-up * test cache --------- Co-authored-by: Ivan Molodetskikh <yalterz@gmail.com>
343 lines
9.0 KiB
YAML
343 lines
9.0 KiB
YAML
name: CI
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
workflow_dispatch:
|
|
schedule:
|
|
- cron: '0 0 1 * *' # Monthly
|
|
|
|
env:
|
|
RUN_SLOW_TESTS: 1
|
|
DEPS_APT: curl gcc clang libudev-dev libgbm-dev libxkbcommon-dev libegl1-mesa-dev libwayland-dev libinput-dev libdbus-1-dev libsystemd-dev libseat-dev libpipewire-0.3-dev libpango1.0-dev libdisplay-info-dev
|
|
DEPS_DNF: cargo gcc clang libudev-devel libgbm-devel libxkbcommon-devel wayland-devel libinput-devel dbus-devel systemd-devel libseat-devel pipewire-devel pango-devel cairo-gobject-devel libdisplay-info-devel
|
|
DEPS_APK: cargo clang-libclang eudev-dev glib-dev libdisplay-info-dev libinput-dev libseat-dev libxkbcommon-dev mesa-dev pango-dev pipewire-dev tar
|
|
DEPS_PKG: git curl rust llvm pkgconf pixman libudev-devd libdisplay-info seatd libinput libxkbcommon pipewire mesa-libs cairo devel/glib20 gettext-runtime harfbuzz pango
|
|
|
|
jobs:
|
|
build:
|
|
strategy:
|
|
fail-fast: false
|
|
|
|
matrix:
|
|
configuration: [debug, release]
|
|
|
|
include:
|
|
- configuration: release
|
|
release-flag: '--release'
|
|
|
|
name: test - ${{ matrix.configuration }}
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -y
|
|
sudo apt-get install -y ${{ env.DEPS_APT }}
|
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
key: ${{ matrix.configuration }}
|
|
|
|
- name: Check (no default features)
|
|
run: cargo check ${{ matrix.release-flag }} --no-default-features
|
|
|
|
- name: Check (just dbus)
|
|
run: cargo check ${{ matrix.release-flag }} --no-default-features --features dbus
|
|
|
|
- name: Check (just systemd)
|
|
run: cargo check ${{ matrix.release-flag }} --no-default-features --features systemd
|
|
|
|
- name: Check (just dinit)
|
|
run: cargo check ${{ matrix.release-flag }} --no-default-features --features dinit
|
|
|
|
- name: Check (just xdp-gnome-screencast)
|
|
run: cargo check ${{ matrix.release-flag }} --no-default-features --features xdp-gnome-screencast
|
|
|
|
- name: Check
|
|
run: cargo check ${{ matrix.release-flag }}
|
|
|
|
- name: Build (with profiling)
|
|
run: cargo build ${{ matrix.release-flag }} --features profile-with-tracy
|
|
|
|
- name: Build tests
|
|
run: cargo test --no-run --all --exclude niri-visual-tests ${{ matrix.release-flag }}
|
|
|
|
- name: Test
|
|
run: cargo test --all --exclude niri-visual-tests ${{ matrix.release-flag }} -- --nocapture
|
|
|
|
build-musl:
|
|
strategy:
|
|
fail-fast: false
|
|
|
|
name: alpine musl
|
|
runs-on: ubuntu-24.04
|
|
container: alpine:3
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
|
|
- name: Install Deps
|
|
run: apk add --no-cache ${{ env.DEPS_APK }}
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Build
|
|
run: cargo build --no-default-features --features dbus,xdp-gnome-screencast
|
|
|
|
# Job that runs randomized tests for a longer period of time.
|
|
randomized-tests:
|
|
strategy:
|
|
fail-fast: false
|
|
|
|
name: randomized tests
|
|
runs-on: ubuntu-24.04
|
|
|
|
env:
|
|
RUST_BACKTRACE: 1
|
|
PROPTEST_CASES: 200000
|
|
PROPTEST_MAX_LOCAL_REJECTS: 200000
|
|
PROPTEST_MAX_GLOBAL_REJECTS: 200000
|
|
PROPTEST_MAX_SHRINK_ITERS: 200000
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -y
|
|
sudo apt-get install -y ${{ env.DEPS_APT }}
|
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Build tests
|
|
run: cargo test --no-run --all --exclude niri-visual-tests --release
|
|
|
|
- name: Test
|
|
run: cargo test --all --exclude niri-visual-tests --release
|
|
|
|
visual-tests:
|
|
strategy:
|
|
fail-fast: false
|
|
|
|
name: visual tests
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -y
|
|
sudo apt-get install -y ${{ env.DEPS_APT }} libadwaita-1-dev
|
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Build
|
|
run: cargo build --package niri-visual-tests
|
|
|
|
msrv:
|
|
strategy:
|
|
fail-fast: false
|
|
|
|
name: msrv
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -y
|
|
sudo apt-get install -y ${{ env.DEPS_APT }} libadwaita-1-dev
|
|
|
|
- uses: dtolnay/rust-toolchain@1.80.1
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
- run: cargo check --all-targets
|
|
|
|
clippy:
|
|
strategy:
|
|
fail-fast: false
|
|
|
|
name: clippy
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo apt-get update -y
|
|
sudo apt-get install -y ${{ env.DEPS_APT }} libadwaita-1-dev
|
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
with:
|
|
components: clippy
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
|
|
- name: Run clippy
|
|
run: cargo clippy --all --all-targets
|
|
|
|
rustfmt:
|
|
runs-on: ubuntu-24.04
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
|
|
- uses: dtolnay/rust-toolchain@nightly
|
|
with:
|
|
components: rustfmt
|
|
|
|
- name: Run rustfmt
|
|
run: cargo fmt --all -- --check
|
|
|
|
fedora:
|
|
runs-on: ubuntu-24.04
|
|
container: fedora:41
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
|
|
- name: Install dependencies
|
|
run: |
|
|
sudo dnf update -y
|
|
sudo dnf install -y ${{ env.DEPS_DNF }} libadwaita-devel
|
|
|
|
- uses: Swatinem/rust-cache@v2
|
|
- run: cargo build --all
|
|
|
|
freebsd:
|
|
runs-on: ubuntu-24.04
|
|
env:
|
|
CARGO_HOME: /home/runner/work/niri/niri/cargo-home
|
|
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
|
|
# Required for the rust-cache action to work.
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
|
|
# FIXME: doesn't seem to cache the builds, only the downloads for some unknown reason.
|
|
- uses: Swatinem/rust-cache@v2
|
|
with:
|
|
cache-all-crates: true
|
|
|
|
# Remove man-db triggers to speed up Ubuntu upgrade by a minute or two during vmactions/freebsd-vm action run.
|
|
- run: |
|
|
sudo rm /var/lib/dpkg/info/man-db.*
|
|
|
|
- name: Build
|
|
uses: vmactions/freebsd-vm@966989c456d41351f095a421f60e71342d3bce41 # v1.2.1
|
|
with:
|
|
prepare: |
|
|
pkg update -f
|
|
pkg install -y ${{ env.DEPS_PKG }}
|
|
run: |
|
|
curl -o patch-pipewire_init 'https://cgit.freebsd.org/ports/plain/x11-wm/niri/files/patch-pipewire_init?id=f3f7e555b06d9a87d63c047ce3e82e936a11f2fe'
|
|
|
|
export CARGO_HOME="$PWD/cargo-home"
|
|
|
|
cargo fetch
|
|
|
|
( cd $CARGO_HOME/git/checkouts/pipewire-rs-*/*/; patch -p2 < $CARGO_HOME/../patch-pipewire_init; )
|
|
|
|
cargo build \
|
|
--offline \
|
|
--no-default-features --features dbus,xdp-gnome-screencast
|
|
|
|
nix:
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
|
|
- name: Check flake inputs
|
|
uses: DeterminateSystems/flake-checker-action@v4
|
|
continue-on-error: true
|
|
|
|
- name: Install Nix
|
|
uses: DeterminateSystems/nix-installer-action@v3
|
|
continue-on-error: true
|
|
|
|
- run: nix flake check
|
|
continue-on-error: true
|
|
|
|
check-links:
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
- uses: lycheeverse/lychee-action@v2.0.2 # later versions break fragment checks. don't bump until this is fixed: https://github.com/lycheeverse/lychee/issues/1574
|
|
with:
|
|
args: --offline --include-fragments 'wiki/*.md'
|
|
|
|
publish-wiki:
|
|
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
|
|
needs:
|
|
- build
|
|
- check-links
|
|
permissions:
|
|
contents: write
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
lfs: true
|
|
show-progress: false
|
|
- uses: Andrew-Chen-Wang/github-wiki-action@b7e552d7cb0fa7f83e459012ffc6840fd87bcb83
|
|
|
|
rustdoc:
|
|
needs: build
|
|
permissions:
|
|
contents: write
|
|
runs-on: ubuntu-24.04
|
|
steps:
|
|
- uses: actions/checkout@v4
|
|
with:
|
|
show-progress: false
|
|
|
|
- uses: dtolnay/rust-toolchain@stable
|
|
|
|
- name: Generate documentation
|
|
run: cargo doc --no-deps -p niri-ipc
|
|
|
|
- run: cp ./resources/rustdoc-index.html ./target/doc/index.html
|
|
|
|
- name: Deploy documentation
|
|
if: github.ref == 'refs/heads/main'
|
|
uses: peaceiris/actions-gh-pages@v4
|
|
with:
|
|
github_token: ${{ secrets.GITHUB_TOKEN }}
|
|
publish_dir: ./target/doc
|
|
force_orphan: true
|