name: Continuous integration on: push: branches: - master pull_request: branches: - master env: RUSTFLAGS: -Dwarnings RUST_BACKTRACE: short CARGO_INCREMENTAL: 0 CARGO_NET_RETRY: 10 RUSTUP_MAX_RETRIES: 10 rust_nightly: nightly-2022-01-17 # When updating this, also update: # - README.md # - src/lib.rs # - down below in a matrix rust_msrv: 1.58.0 jobs: # Depends on all action that are required for a "successful" CI run. ci-pass: name: CI succeeded runs-on: ubuntu-latest needs: - fmt - test - check-examples - clippy steps: - run: exit 0 fmt: name: fmt runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install Rust ${{ env.rust_nightly }} uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ env.rust_nightly }} override: true components: rustfmt - name: Cache Dependencies uses: Swatinem/rust-cache@v1 - name: Check formatting uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check test: name: Test runs-on: ubuntu-latest strategy: matrix: rust: - stable - beta - nightly - msrv include: - rust: stable toolchain: stable features: "--features full" - rust: beta toolchain: beta features: "--features full" - rust: nightly toolchain: nightly-2022-01-17 features: "--all-features" - rust: msrv toolchain: 1.58.0 features: "--features full" steps: - name: Checkout uses: actions/checkout@v3 - name: Install Rust ${{ matrix.toolchain }} uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ matrix.toolchain }} override: true - name: Cache Dependencies uses: Swatinem/rust-cache@v1 - name: Compile uses: actions-rs/cargo@v1 with: command: test args: --no-run --verbose ${{ matrix.features }} - name: Test uses: actions-rs/cargo@v1 with: command: test args: --verbose ${{ matrix.features }} check-examples: runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install Rust stable uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: stable override: true - name: Cache Dependencies uses: Swatinem/rust-cache@v1 - name: Check examples uses: actions-rs/cargo@v1 with: command: check args: --examples --features full clippy: name: Run linter runs-on: ubuntu-latest steps: - name: Checkout uses: actions/checkout@v3 - name: Install Rust ${{ env.rust_nightly }} uses: actions-rs/toolchain@v1 with: profile: minimal toolchain: ${{ env.rust_nightly }} override: true components: clippy - name: Cache Dependencies uses: Swatinem/rust-cache@v1 - name: clippy uses: actions-rs/cargo@v1 with: command: clippy args: --all-targets --all-features