on: push: branches: - main pull_request: merge_group: env: RUSTFLAGS: -D warnings CARGO_TERM_COLOR: always concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} cancel-in-progress: true name: ci jobs: lint: name: code lint runs-on: ubuntu-latest steps: - name: Checkout sources uses: actions/checkout@v3 - name: Install toolchain uses: dtolnay/rust-toolchain@nightly with: components: rustfmt, clippy - uses: Swatinem/rust-cache@v2 with: cache-on-failure: true - name: cargo fmt uses: actions-rs/cargo@v1 with: command: fmt args: --all --check - name: cargo clippy uses: actions-rs/clippy-check@v1 with: args: --all --all-features token: ${{ secrets.GITHUB_TOKEN }} doc-lint: name: doc lint runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install toolchain uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 - name: Check if documentation builds run: RUSTDOCFLAGS="-D warnings" cargo doc --all --no-deps --all-features --document-private-items lint-success: if: always() name: lint success runs-on: ubuntu-latest needs: [lint, doc-lint] steps: - name: Decide whether the needed jobs succeeded or failed uses: re-actors/alls-green@release/v1 with: jobs: ${{ toJSON(needs) }}