1on: 2 push: 3 branches: [ master ] 4 pull_request: 5 branches: [ master ] 6 7name: CI 8 9jobs: 10 ci: 11 runs-on: ubuntu-latest 12 strategy: 13 fail-fast: false 14 matrix: 15 rust: 16 - 1.36.0 # MSRV 17 - stable 18 - beta 19 - nightly 20 features: 21 - "" 22 - "serde" 23 24 steps: 25 - name: Checkout 26 uses: actions/checkout@v3 27 28 - name: Set up Rust 29 uses: dtolnay/rust-toolchain@master 30 with: 31 toolchain: ${{ matrix.rust }} 32 33 - name: MSRV dependencies 34 if: matrix.rust == '1.36.0' 35 run: | 36 cargo generate-lockfile 37 cargo update -p serde_json --precise 1.0.99 38 cargo update -p serde --precise 1.0.156 39 cargo update -p quote --precise 1.0.30 40 cargo update -p proc-macro2 --precise 1.0.65 41 42 - name: Build (no_std) 43 run: cargo build --no-default-features 44 45 - name: Build 46 run: cargo build --features "${{ matrix.features }}" 47 48 - name: Test 49 run: cargo test --features "${{ matrix.features }}" 50 51 - name: Doc 52 run: cargo doc --features "${{ matrix.features }}" 53 54 clippy: 55 name: Rustfmt and Clippy 56 runs-on: ubuntu-latest 57 steps: 58 - name: Checkout 59 uses: actions/checkout@v3 60 61 - name: Set up nightly Rust 62 uses: dtolnay/rust-toolchain@nightly 63 with: 64 components: rustfmt, clippy 65 66 - name: Rustfmt 67 run: cargo fmt --all -- --check 68 69 - name: Clippy 70 run: cargo clippy # -- -D warnings 71