name: CI
on:
pull_request:
types: [opened, synchronize, reopened]
push:
branches: [main]
schedule:
- cron: 0 0 * * 0
jobs:
build-and-test:
strategy:
fail-fast: false
matrix:
version:
- stable
- 1.61.0
name: ${{ matrix.version }}
runs-on: ubuntu-latest
steps:
- name: checkout source
uses: actions/checkout@v3
- name: install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1.3.5
with:
toolchain: ${{ matrix.version }}
- name: install cargo-hack
uses: taiki-e/install-action@cargo-hack
- name: install cargo-nextest
uses: taiki-e/install-action@cargo-nextest
- name: test
run: cargo hack --feature-powerset nextest run --workspace
linting:
if: ${{ github.ref != 'main' }}
runs-on: ubuntu-latest
steps:
- name: checkout source
uses: actions/checkout@v3
- name: install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1.3.5
with: { components: rustfmt, clippy }
- name: format
run: cargo fmt --all -- --check
- name: clippy
uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: -- -D warnings
minimal-versions:
runs-on: ubuntu-latest
steps:
- name: checkout source
uses: actions/checkout@v3
- name: install Rust
uses: actions-rust-lang/setup-rust-toolchain@v1.3.5
with: { toolchain: nightly }
- name: install cargo-hack
uses: taiki-e/install-action@cargo-hack
- name: install cargo-minimal-versions
uses: taiki-e/install-action@cargo-minimal-versions
- name: minimal version check
run: cargo minimal-versions check --workspace