name: CI on: push: branches: - main tags-ignore: - v* paths-ignore: - 'LICENSE' - '**.md' pull_request: paths-ignore: - 'LICENSE' - '**.md' jobs: format: name: Format runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Cargo fmt run: cargo fmt --all -- --check check: name: Check runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Cargo check run: cargo check lint: name: Lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - name: Cache cargo registry uses: actions/cache@v1 with: path: ~/.cargo/registry key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo index uses: actions/cache@v1 with: path: ~/.cargo/git key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo build uses: actions/cache@v1 with: path: target key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - name: Add clippy run: rustup component add clippy - name: Run lint run: cargo clippy unit_tests: name: Unit Tests strategy: fail-fast: false matrix: os: [ubuntu-latest, macos-latest, windows-latest] runs-on: ${{ matrix.os }} needs: check steps: - uses: actions/checkout@v2 - name: Cache cargo registry if: runner.os != 'macOS' uses: actions/cache@v1 with: path: ~/.cargo/registry key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo index uses: actions/cache@v1 with: path: ~/.cargo/git key: ${{ runner.os }}-cargo-index-${{ hashFiles('**/Cargo.lock') }} - name: Cache cargo build if: runner.os != 'macOS' uses: actions/cache@v1 with: path: target key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }} - name: Run Tests run: cargo test --workspace -- --skip=e2e --color always