name: Rust on: push: branches: - main pull_request: branches: [ "*" ] schedule: - cron: '13 3 * * 0' env: CARGO_TERM_COLOR: always RUSTFLAGS: "-Dwarnings" jobs: commitlint: runs-on: ubuntu-latest name: Commitlint steps: - name: Conventional Commitlint uses: opensource-nepal/commitlint@v1 fmt: name: Rustfmt runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v5 - name: Install Rust nightly toolchain with clippy uses: dtolnay/rust-toolchain@nightly with: components: rustfmt - name: Run Rustfmt run: cargo fmt -- --check clippy: name: Clippy runs-on: ubuntu-latest steps: - name: Checkout repo uses: actions/checkout@v5 - name: Install Rust nightly toolchain with clippy uses: dtolnay/rust-toolchain@nightly with: components: clippy - name: Run Clippy run: | cargo clippy --all-targets --features tokio cargo clippy --all-targets --features async-process build: name: Rust Build & Test runs-on: ubuntu-latest strategy: fail-fast: false matrix: rust_version: - { name: msrv, version: "1.76" } - { name: stable, version: stable } steps: - name: Checkout repo uses: actions/checkout@v5 - name: Install Rust ${{ matrix.rust_version.name }} (${{ matrix.rust_version.version }}) uses: dtolnay/rust-toolchain@stable with: toolchain: ${{ matrix.rust_version.version }} - name: Build run: cargo build --verbose - name: Run tests run: cargo test --verbose - name: Run tests (with netns) run: | # enable user network ns on runner sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0 nft --version cargo --config \ "target.'cfg(target_os = \"linux\")'.runner = 'unshare -rn'" \ test --verbose -- --ignored