name: CI on: push: branches: - master pull_request: workflow_dispatch: jobs: build-and-test: runs-on: ubuntu-latest timeout-minutes: 30 steps: - name: Check out source uses: actions/checkout@v4 - name: Install Rust toolchain run: | curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | \ sh -s -- -y --profile minimal echo "$HOME/.cargo/bin" >> "$GITHUB_PATH" "$HOME/.cargo/bin/rustup" toolchain install nightly-2026-09-14 --profile minimal - name: Cache Rust dependencies and build artifacts uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5 # v2.8.2 with: shared-key: linux-nightly cache-bin: false - name: Install Linux dependencies run: | sudo apt-get update sudo apt-get install --no-install-recommends -y \ clang \ libasound2-dev \ libudev-dev \ libusb-1.0-0-dev \ libwayland-dev \ libx11-dev \ libxkbcommon-dev \ libxkbcommon-x11-0 \ mesa-vulkan-drivers \ mold \ pkg-config - name: Build run: RUSTFLAGS="-D warnings" cargo build --locked -j 4 - name: Run unit tests run: cargo test --locked --lib -j 4