name: CI on: push: branches: [ main ] pull_request: branches: [ main ] schedule: - cron: "50 6 * * *" workflow_dispatch: env: RUST_TOOLCHAIN: nightly GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} CARGO_TERM_COLOR: always jobs: build_and_test: runs-on: ubuntu-latest strategy: matrix: crypto-backend: ['rustcrypto', 'mbedtls', 'openssl'] features: ['', 'alloc', 'os'] toolchain: ['stable', 'nightly'] steps: - name: Rust if: matrix.toolchain == 'nightly' uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ env.RUST_TOOLCHAIN }} components: rustfmt, clippy, rust-src - name: Checkout uses: actions/checkout@v3 - name: Fmt run: cargo +${{ matrix.toolchain == 'nightly' && env.RUST_TOOLCHAIN || 'stable'}} fmt -- --check - name: Clippy run: cargo +${{ matrix.toolchain == 'nightly' && env.RUST_TOOLCHAIN || 'stable'}} clippy --no-deps --no-default-features --features ${{matrix.crypto-backend}},${{matrix.features}},${{ matrix.toolchain == 'nightly' && 'nightly' || ''}} -- -Dwarnings - name: Build run: cargo +${{ matrix.toolchain == 'nightly' && env.RUST_TOOLCHAIN || 'stable'}} build --no-default-features --features ${{matrix.crypto-backend}},${{matrix.features}},${{ matrix.toolchain == 'nightly' && 'nightly' || ''}} - name: Test if: matrix.features == 'os' run: cargo +${{ matrix.toolchain == 'nightly' && env.RUST_TOOLCHAIN || 'stable'}} test --no-default-features --features ${{matrix.crypto-backend}},${{matrix.features}},${{ matrix.toolchain == 'nightly' && 'nightly' || ''}} -- --test-threads=1