1name: CI
2
3on:
4  push:
5  pull_request:
6  schedule: [cron: "40 1 * * *"]
7
8env:
9  RUSTFLAGS: '-Dwarnings'
10
11jobs:
12  test:
13    name: Rust ${{matrix.rust}}
14    runs-on: ubuntu-latest
15    strategy:
16      fail-fast: false
17      matrix:
18        rust: [stable, beta, 1.36.0]
19    steps:
20      - uses: actions/checkout@v2
21      - uses: dtolnay/rust-toolchain@master
22        with:
23          toolchain: ${{matrix.rust}}
24      - run: cargo test
25
26  nightly:
27    name: Rust nightly
28    runs-on: ubuntu-latest
29    steps:
30      - uses: actions/checkout@v2
31      - uses: dtolnay/rust-toolchain@nightly
32        with:
33          components: rust-src
34      - run: cargo test
35      - run: cargo update -Z minimal-versions
36      - run: cargo build
37
38  msrv:
39    name: Rust 1.31.0
40    runs-on: ubuntu-latest
41    steps:
42      - uses: actions/checkout@v2
43      - uses: dtolnay/rust-toolchain@1.31.0
44      - run: cargo check
45
46  clippy:
47    name: Clippy
48    runs-on: ubuntu-latest
49    if: github.event_name != 'pull_request'
50    steps:
51      - uses: actions/checkout@v2
52      - uses: dtolnay/rust-toolchain@clippy
53      - run: cargo clippy --tests -- -Dclippy::all -Dclippy::pedantic
54
55  outdated:
56    name: Outdated
57    runs-on: ubuntu-latest
58    if: github.event_name != 'pull_request'
59    steps:
60      - uses: actions/checkout@v2
61      - uses: dtolnay/install@cargo-outdated
62      - run: cargo outdated --exit-code 1
63