1name: CI 2 3on: 4 push: 5 pull_request: 6 schedule: [cron: "40 1 * * *"] 7 8permissions: 9 contents: read 10 11env: 12 RUSTFLAGS: -Dwarnings 13 14jobs: 15 test: 16 name: Rust ${{matrix.rust}} 17 runs-on: ubuntu-latest 18 strategy: 19 fail-fast: false 20 matrix: 21 rust: [stable, beta, 1.56.0] 22 timeout-minutes: 45 23 steps: 24 - uses: actions/checkout@v3 25 - uses: dtolnay/rust-toolchain@master 26 with: 27 toolchain: ${{matrix.rust}} 28 components: rust-src 29 - run: cargo test 30 31 nightly: 32 name: Rust nightly 33 runs-on: ubuntu-latest 34 timeout-minutes: 45 35 steps: 36 - uses: actions/checkout@v3 37 - uses: dtolnay/rust-toolchain@nightly 38 with: 39 components: rust-src 40 - run: cargo test 41 - run: cargo update -Z minimal-versions 42 - run: cargo build 43 44 msrv: 45 name: Rust 1.31.0 46 runs-on: ubuntu-latest 47 timeout-minutes: 45 48 steps: 49 - uses: actions/checkout@v3 50 - uses: dtolnay/rust-toolchain@1.31.0 51 with: 52 components: rust-src 53 - run: cargo check 54 55 clippy: 56 name: Clippy 57 runs-on: ubuntu-latest 58 if: github.event_name != 'pull_request' 59 timeout-minutes: 45 60 steps: 61 - uses: actions/checkout@v3 62 - uses: dtolnay/rust-toolchain@nightly 63 with: 64 components: clippy, rust-src 65 - run: cargo clippy --tests -- -Dclippy::all -Dclippy::pedantic 66 67 miri: 68 name: Miri 69 runs-on: ubuntu-latest 70 timeout-minutes: 45 71 steps: 72 - uses: actions/checkout@v3 73 - uses: dtolnay/rust-toolchain@miri 74 - run: cargo miri test 75 env: 76 MIRIFLAGS: -Zmiri-strict-provenance 77 78 outdated: 79 name: Outdated 80 runs-on: ubuntu-latest 81 if: github.event_name != 'pull_request' 82 timeout-minutes: 45 83 steps: 84 - uses: actions/checkout@v3 85 - uses: dtolnay/install@cargo-outdated 86 - run: cargo outdated --workspace --exit-code 1 87