diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml index 1d88754..692141c 100644 --- a/.github/workflows/rust.yml +++ b/.github/workflows/rust.yml @@ -5,179 +5,88 @@ name: Rust CI jobs: # if this fails we don't try anything else on stable # - # we use multiple jobs so no single check prevents others from being run; - # but use a cache to speedup steps after build # (if initial build fails nothing else is checked) + # + # TODO: unclear how to setup cache with dtolnay/rust-toolchain build: name: Build runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Cache stable - uses: actions/cache@v2 - with: - key: build-stable-${{ github.run_id }} - path: | - /usr/share/rust/.cargo/ - target/ - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - - name: Build - uses: actions-rs/cargo@v1 - with: - command: build + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable + - name: Build default features + run: cargo build - name: Build with all features - uses: actions-rs/cargo@v1 - with: - command: build - args: --all-features + run: cargo build --all-features check: name: Check runs-on: ubuntu-latest needs: build steps: - - uses: actions/checkout@v2 - - name: Cache stable - uses: actions/cache@v2 - with: - key: build-stable-${{ github.run_id }} - path: | - /usr/share/rust/.cargo/ - target/ - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable - name: Check - uses: actions-rs/cargo@v1 - with: - command: check - args: --all-features + run: cargo check --all-features test: name: Test Suite runs-on: ubuntu-latest needs: build steps: - - uses: actions/checkout@v2 - - name: Cache stable - uses: actions/cache@v2 - with: - key: build-stable-${{ github.run_id }} - path: | - /usr/share/rust/.cargo/ - target/ - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable - name: Test - uses: actions-rs/cargo@v1 - with: - command: test - args: --all-features + run: cargo test --all-features clippy: name: Clippy runs-on: ubuntu-latest needs: build steps: - - uses: actions/checkout@v2 - - name: Cache stable - uses: actions/cache@v2 - with: - key: build-stable-${{ github.run_id }} - path: | - /usr/share/rust/.cargo/ - target/ - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true - components: clippy + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable - name: Clippy - uses: actions-rs/cargo@v1 - with: - command: clippy - args: -- -D warnings + run: cargo clippy -- -D warnings doc: name: Rustdoc runs-on: ubuntu-latest needs: build steps: - - uses: actions/checkout@v2 - - name: Cache stable - uses: actions/cache@v2 - with: - key: build-stable-${{ github.run_id }} - path: | - /usr/share/rust/.cargo/ - target/ - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: stable - override: true + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@stable - name: Rustdoc - uses: actions-rs/cargo@v1 - with: - command: doc - args: --all-features + run: cargo doc --all-features # no cache for nightly, run all steps in same job - if one fails, the others won't be tried build-nightly: name: Build [nightly] runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - uses: actions-rs/toolchain@v1 - with: - profile: minimal - toolchain: nightly - override: true - components: rustfmt + - uses: actions/checkout@v4 + - uses: dtolnay/rust-toolchain@nightly + components: rustfmt # nightly fmt - name: Rustfmt [nightly] - uses: actions-rs/cargo@v1 - with: - command: fmt - args: --all -- --check + run: cargo fmt --all -- --check # nightly build - name: Build [nightly] - uses: actions-rs/cargo@v1 - with: - command: build + run: cargo build # nightly build all features - name: Build with all features [nightly] - uses: actions-rs/cargo@v1 - with: - command: build - args: --all-features + run: cargo build --all-features # check - name: Check [nightly] - uses: actions-rs/cargo@v1 - with: - command: check - args: --all-features + run: cargo check --all-features # doc_cfg not stable yet # https://doc.rust-lang.org/unstable-book/language-features/doc-cfg.html # https://github.com/rust-lang/rust/issues/43781 - name: Rustdoc [nightly] - uses: actions-rs/cargo@v1 env: # this should need nightly RUSTDOCFLAGS: "--cfg doc_cfg" - with: - command: doc - args: --all-features + run: cargo doc --all-features # deploy docs from nightly for doc_cfg feature # (for stable we'd create a new job and use the cache) - name: Deploy docs