name: CI
on:
pull_request:
branches:
- main
push:
schedule:
- cron: "0 12 * * 5"
workflow_dispatch:
jobs:
fmt:
runs-on: ubuntu-latest
steps:
- name: Fmt | checkout
uses: actions/checkout@v6
- name: Fmt | install toolchain
uses: dtolnay/rust-toolchain@stable
with:
toolchain: stable
components: clippy, rustfmt
- name: Fmt | rust-cache
uses: Swatinem/rust-cache@v2
- name: Fmt | check formatting
run: cargo fmt -- --check
clippy:
runs-on: ubuntu-latest
env:
RUSTFLAGS: -Dwarnings
strategy:
matrix:
target:
- aarch64-apple-darwin
- arm-linux-androideabi
- x86_64-pc-windows-msvc
- x86_64-unknown-freebsd
- x86_64-unknown-linux-gnu
- x86_64-unknown-netbsd
fail-fast: false
steps:
- run: |
sudo sed -i 's/azure.archive.ubuntu.com/archive.ubuntu.com/' /etc/apt/sources.list
sudo apt-get -qq update
sudo apt install -qq -y libudev-dev
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
target: ${{ matrix.target }}
- uses: swatinem/rust-cache@v2
- run: cargo clippy --target ${{ matrix.target }}
- run: cargo clippy --target ${{ matrix.target }} --all-features
doc:
name: documentation
runs-on: ubuntu-latest
env:
RUSTDOCFLAGS: -Dwarnings
steps:
- name: documentation | install dependencies
run: |
sudo sed -i 's/azure.archive.ubuntu.com/archive.ubuntu.com/' /etc/apt/sources.list
sudo apt-get -qq update
sudo apt install -qq -y libudev-dev
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@nightly
- uses: dtolnay/install@cargo-docs-rs
- run: cargo docs-rs
links:
runs-on: ubuntu-latest
steps:
- name: Links | checkout
uses: actions/checkout@v6
- name: Links | check
id: lychee
uses: lycheeverse/lychee-action@v2
with:
fail: true
msrv-aarch64-apple-darwin:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
target: aarch64-apple-darwin
toolchain: "1.59.0"
pin-incompatible-msrv-bump-dependencies: true
msrv-arm-linux-androideabi:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
target: arm-linux-androideabi
toolchain: "1.59.0"
pin-incompatible-msrv-bump-dependencies: true
msrv-x86_64-unknown-freebsd:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
target: x86_64-unknown-freebsd
toolchain: "1.59.0"
pin-incompatible-msrv-bump-dependencies: true
msrv-x86_64-unknown-linux-gnu:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
extra_packages: libudev-dev
target: x86_64-unknown-linux-gnu
toolchain: "1.59.0"
pin-incompatible-msrv-bump-dependencies: true
msrv-x86_64-unknown-linux-musl:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
extra_packages: gcc-aarch64-linux-gnu
target: aarch64-unknown-linux-musl
toolchain: "1.59.0"
pin-incompatible-msrv-bump-dependencies: true
msrv-x86_64-pc-windows-msvc:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
runs_on: windows-2025
target: x86_64-pc-windows-msvc
toolchain: "1.59.0"
pin-incompatible-msrv-bump-dependencies: true
msrv-x86_64-unknown-netbsd:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
target: x86_64-unknown-netbsd
toolchain: "1.59.0"
pin-incompatible-msrv-bump-dependencies: true
semver:
runs-on: ubuntu-latest
strategy:
matrix:
target:
- aarch64-apple-darwin
- arm-linux-androideabi
- x86_64-pc-windows-msvc
- x86_64-unknown-freebsd
- x86_64-unknown-linux-gnu
- x86_64-unknown-netbsd
feature-group:
- "only-explicit-features"
- "all-features"
steps:
- run: |
sudo sed -i 's/azure.archive.ubuntu.com/archive.ubuntu.com/' /etc/apt/sources.list
sudo apt-get -qq update
sudo apt-get -qq -y install build-essential curl git pkg-config libudev-dev
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
with:
target: ${{ matrix.target }}
- uses: Swatinem/rust-cache@v2
- uses: obi1kenobi/cargo-semver-checks-action@v2
with:
rust-target: ${{ matrix.target }}
feature-group: ${{ matrix.feature-group }}
cargo-deny:
runs-on: ubuntu-latest
strategy:
matrix:
checks:
- advisories
- bans licenses sources
continue-on-error: ${{ matrix.checks == 'advisories' }}
steps:
- uses: actions/checkout@v6
- uses: EmbarkStudios/cargo-deny-action@v2
with:
command: check ${{ matrix.checks }}
aarch64-apple-darwin:
uses: ./.github/workflows/build.yaml
with:
disable_tests: true
runs_on: macos-latest
target: aarch64-apple-darwin
aarch64-apple-ios:
uses: ./.github/workflows/build.yaml
with:
disable_tests: true
runs_on: macos-latest
target: aarch64-apple-ios
aarch64-unknown-linux-gnu:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
extra_packages: libudev-dev gcc-aarch64-linux-gnu libc6-dev-arm64-cross
target: aarch64-unknown-linux-gnu
aarch64-unknown-linux-musl:
uses: ./.github/workflows/build.yaml
with:
disable_tests: true
extra_packages: gcc-aarch64-linux-gnu
target: aarch64-unknown-linux-musl
arm-linux-androideabi:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
target: arm-linux-androideabi
armv7-linux-androideabi:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
target: armv7-linux-androideabi
i686-pc-windows-msvc:
uses: ./.github/workflows/build.yaml
with:
runs_on: windows-2025
target: i686-pc-windows-msvc
i686-unknown-linux-gnu:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
extra_packages: libudev-dev gcc-multilib
target: i686-unknown-linux-gnu
i686-unknown-linux-musl:
uses: ./.github/workflows/build.yaml
with:
extra_packages: libudev-dev gcc-multilib
target: i686-unknown-linux-musl
x86_64-apple-darwin:
uses: ./.github/workflows/build.yaml
with:
runs_on: macos-latest
target: x86_64-apple-darwin
x86_64-pc-windows-gnu:
uses: ./.github/workflows/build.yaml
with:
runs_on: windows-2025
target: x86_64-pc-windows-gnu
x86_64-pc-windows-msvc:
uses: ./.github/workflows/build.yaml
with:
runs_on: windows-2025
target: x86_64-pc-windows-msvc
x86_64-unknown-freebsd:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
target: x86_64-unknown-freebsd
x86_64-unknown-linux-gnu:
uses: ./.github/workflows/build.yaml
with:
extra_packages: libudev-dev
target: x86_64-unknown-linux-gnu
x86_64-unknown-linux-musl:
uses: ./.github/workflows/build.yaml
with:
target: x86_64-unknown-linux-musl
x86_64-unknown-netbsd:
uses: ./.github/workflows/build.yaml
with:
disable_extra_builds: true
disable_tests: true
target: x86_64-unknown-netbsd
aarch64-apple-darwin-nightly:
uses: ./.github/workflows/build.yaml
with:
continue-on-error: true
disable_tests: true
runs_on: macos-latest
target: aarch64-apple-darwin
toolchain: nightly
x86_64-pc-windows-msvc-nightly:
uses: ./.github/workflows/build.yaml
with:
continue-on-error: true
runs_on: windows-2025
target: x86_64-pc-windows-msvc
toolchain: nightly
x86_64-unknown-linux-gnu-nightly:
uses: ./.github/workflows/build.yaml
with:
continue-on-error: true
extra_packages: libudev-dev
target: x86_64-unknown-linux-gnu
toolchain: nightly