name: CI on: push: branches: - main - "v*.x" pull_request: schedule: - cron: '30 3 * * 2' workflow_dispatch: jobs: test: name: run tests strategy: matrix: platform: [ubuntu-latest, ubuntu-24.04-arm, macos-latest, windows-latest] toolchain: [stable, 1.75.0] runs-on: ${{ matrix.platform }} steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.toolchain }} - name: Build with default features run: cargo build - name: Build with logging and Rustls with webpki roots run: cargo build --features logging,rustls-with-webpki-roots --no-default-features - name: Build with native TLS backend # expects runners have the proper Native SSL library run: cargo build --features native-tls --no-default-features - name: Run tests run: cargo test -- --test-threads 1 clippy: name: run clippy lints runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master with: toolchain: stable components: clippy - name: run clippy lints run: cargo clippy --features logging fmt: name: run rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: dtolnay/rust-toolchain@master with: toolchain: stable components: rustfmt - name: run rustfmt run: cargo fmt --all -- --check docs: name: build docs runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Setup mdBook uses: peaceiris/actions-mdbook@v2 with: mdbook-version: '0.4.4' - name: Setup toolchain uses: dtolnay/rust-toolchain@master with: toolchain: stable - name: Build run: cargo build - name: Ensure that docs can be built run: cd docs && mdbook build - name: Generate usage string run: cargo run -- --help > docs/src/usage-actual.txt - name: Ensure that usage string is up to date run: diff docs/src/usage{,-actual}.txt