diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index eda93f2a..e2fff7c3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -25,49 +25,45 @@ env: # formatting, typos, and missing tests as early as possible. This allows us to fix these and # resubmit the PR without having to wait for the comprehensive matrix of tests to complete. jobs: - lint: + rustfmt: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Install Rust nightly uses: dtolnay/rust-toolchain@nightly with: components: rustfmt - - name: Install cargo-make - uses: taiki-e/install-action@cargo-make - - name: Cache Cargo dependencies - uses: Swatinem/rust-cache@v2 - - name: Check formatting - run: cargo make lint-format - - name: Check documentation - run: cargo make lint-docs - - name: Check typos - uses: crate-ci/typos@master - - name: Lint dependencies - uses: EmbarkStudios/cargo-deny-action@v1 + - run: cargo +nightly fmt --all --check + + typos: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: crate-ci/typos@master + + dependencies: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: EmbarkStudios/cargo-deny-action@v1 clippy: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Install Rust stable uses: dtolnay/rust-toolchain@stable with: components: clippy - name: Install cargo-make uses: taiki-e/install-action@cargo-make - - name: Cache Cargo dependencies - uses: Swatinem/rust-cache@v2 - - name: Run cargo make clippy-all - run: cargo make clippy + - uses: Swatinem/rust-cache@v2 + - run: cargo make clippy coverage: runs-on: ubuntu-latest steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Install Rust stable uses: dtolnay/rust-toolchain@stable with: @@ -76,8 +72,7 @@ jobs: uses: taiki-e/install-action@v2 with: tool: cargo-llvm-cov,cargo-make - - name: Cache Cargo dependencies - uses: Swatinem/rust-cache@v2 + - uses: Swatinem/rust-cache@v2 - name: Generate coverage run: cargo make coverage - name: Upload to codecov.io @@ -94,21 +89,29 @@ jobs: toolchain: ["1.74.0", "stable"] runs-on: ${{ matrix.os }} steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Install Rust {{ matrix.toolchain }} uses: dtolnay/rust-toolchain@master with: toolchain: ${{ matrix.toolchain }} - name: Install cargo-make uses: taiki-e/install-action@cargo-make - - name: Cache Cargo dependencies - uses: Swatinem/rust-cache@v2 - - name: Run cargo make check - run: cargo make check + - uses: Swatinem/rust-cache@v2 + - run: cargo make check env: RUST_BACKTRACE: full + lint-docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Install Rust nightly + uses: dtolnay/rust-toolchain@nightly + - name: Install cargo-make + uses: taiki-e/install-action@cargo-make + - uses: Swatinem/rust-cache@v2 + - run: cargo make lint-docs + test-doc: strategy: fail-fast: false @@ -116,14 +119,12 @@ jobs: os: [ubuntu-latest, windows-latest, macos-latest] runs-on: ${{ matrix.os }} steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Install Rust stable uses: dtolnay/rust-toolchain@stable - name: Install cargo-make uses: taiki-e/install-action@cargo-make - - name: Cache Cargo dependencies - uses: Swatinem/rust-cache@v2 + - uses: Swatinem/rust-cache@v2 - name: Test docs run: cargo make test-doc env: @@ -142,8 +143,7 @@ jobs: backend: termion runs-on: ${{ matrix.os }} steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 - name: Install Rust ${{ matrix.toolchain }}} uses: dtolnay/rust-toolchain@master with: @@ -152,9 +152,7 @@ jobs: uses: taiki-e/install-action@cargo-make - name: Install cargo-nextest uses: taiki-e/install-action@nextest - - name: Cache Cargo dependencies - uses: Swatinem/rust-cache@v2 - - name: Test ${{ matrix.backend }} - run: cargo make test-backend ${{ matrix.backend }} + - uses: Swatinem/rust-cache@v2 + - run: cargo make test-backend ${{ matrix.backend }} env: RUST_BACKTRACE: full