| name: CI |
| |
| on: |
| push: |
| pull_request: |
| workflow_dispatch: |
| schedule: [cron: "40 1 * * *"] |
| |
| permissions: |
| contents: read |
| |
| env: |
| RUSTFLAGS: -Dwarnings |
| |
| jobs: |
| pre_ci: |
| uses: dtolnay/.github/.github/workflows/pre_ci.yml@master |
| |
| test: |
| name: Rust ${{matrix.rust}} |
| needs: pre_ci |
| if: needs.pre_ci.outputs.continue |
| runs-on: ubuntu-latest |
| strategy: |
| fail-fast: false |
| matrix: |
| rust: [nightly, beta, stable, 1.56.0] |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: dtolnay/rust-toolchain@master |
| with: |
| toolchain: ${{matrix.rust}} |
| - name: Enable type layout randomization |
| run: echo RUSTFLAGS=${RUSTFLAGS}\ -Zrandomize-layout >> $GITHUB_ENV |
| if: matrix.rust == 'nightly' |
| - name: Enable nightly-only tests |
| run: echo RUSTFLAGS=${RUSTFLAGS}\ --cfg=async_trait_nightly_testing >> $GITHUB_ENV |
| if: matrix.rust == 'nightly' |
| - run: cargo test |
| |
| minimal: |
| name: Minimal versions |
| needs: pre_ci |
| if: needs.pre_ci.outputs.continue |
| runs-on: ubuntu-latest |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: dtolnay/rust-toolchain@nightly |
| - run: cargo generate-lockfile -Z minimal-versions |
| - run: cargo check --locked |
| |
| doc: |
| name: Documentation |
| needs: pre_ci |
| if: needs.pre_ci.outputs.continue |
| runs-on: ubuntu-latest |
| timeout-minutes: 45 |
| env: |
| RUSTDOCFLAGS: -Dwarnings |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: dtolnay/rust-toolchain@nightly |
| - uses: dtolnay/install@cargo-docs-rs |
| - run: cargo docs-rs |
| |
| clippy: |
| name: Clippy |
| runs-on: ubuntu-latest |
| if: github.event_name != 'pull_request' |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: dtolnay/rust-toolchain@clippy |
| - run: cargo clippy --tests -- -Dclippy::all -Dclippy::pedantic |
| |
| miri: |
| name: Miri |
| needs: pre_ci |
| if: needs.pre_ci.outputs.continue |
| runs-on: ubuntu-latest |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: dtolnay/rust-toolchain@miri |
| - run: cargo miri setup |
| - run: cargo miri test |
| env: |
| MIRIFLAGS: -Zmiri-strict-provenance |
| |
| outdated: |
| name: Outdated |
| runs-on: ubuntu-latest |
| if: github.event_name != 'pull_request' |
| timeout-minutes: 45 |
| steps: |
| - uses: actions/checkout@v4 |
| - uses: dtolnay/install@cargo-outdated |
| - run: cargo outdated --workspace --exit-code 1 |