name: CI on: push: branches: - main pull_request: jobs: rustfmt: name: Rustfmt runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal components: rustfmt - name: Check formatting uses: actions-rs/cargo@v1 with: command: fmt args: --all -- --check build: name: Build runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal - uses: Swatinem/rust-cache@v1 with: sharedKey: ci - uses: actions-rs/cargo@v1 with: command: check args: --all-features --workspace test: needs: build name: Test Suite runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal - uses: Swatinem/rust-cache@v1 with: sharedKey: ci - uses: actions-rs/cargo@v1 with: command: test args: --all-features --workspace clippy: needs: build name: Clippy runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal components: clippy - uses: Swatinem/rust-cache@v1 with: sharedKey: ci - name: Clippy check uses: actions-rs/cargo@v1 with: command: clippy args: --all-targets --all-features --workspace -- -D warnings coverage: name: Code coverage runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v3 - name: Install Rust toolchain uses: actions-rs/toolchain@v1 with: toolchain: stable profile: minimal - uses: Swatinem/rust-cache@v1 - name: Run cargo-tarpaulin uses: actions-rs/tarpaulin@v0.1 with: args: '--all-features --workspace --ignore-tests --out Lcov' - name: Upload to Coveralls # upload only if push if: ${{ github.event_name == 'push' }} uses: coverallsapp/github-action@master with: github-token: ${{ secrets.GITHUB_TOKEN }} path-to-lcov: './lcov.info'