diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 62a2f934..a8cf3ce6 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,13 +15,44 @@ env: CARGO_TERM_COLOR: always jobs: + lock: + name: Cargo.lock + runs-on: ubuntu-latest + + steps: + - name: Checkout the Repository + uses: actions/checkout@v2 + + - name: Install the Rust toolchain + uses: actions-rs/toolchain@v1 + with: + toolchain: nightly + profile: minimal + override: true + + - name: Generate the minimum version lockfile + run: | + cargo update -Z minimal-versions + mv Cargo.lock Cargo.lock.min + + - name: Generate the current version lockfile + run: cargo update + + - name: Upload the Cargo lockfiles + uses: actions/upload-artifact@v4 + with: + name: Cargo.lock + path: | + Cargo.lock + Cargo.lock.min + check: name: Check - runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] rust: ["1.76", stable, nightly] + lock: ["Cargo.lock", "Cargo.lock.min"] include: - rust: "1.76" wasm32-wasip1: wasm32-wasi @@ -29,6 +60,8 @@ jobs: wasm32-wasip1: wasm32-wasip1 - rust: nightly wasm32-wasip1: wasm32-wasip1 + runs-on: ${{ matrix.os }} + needs: lock steps: - name: Checkout the Repository @@ -44,7 +77,16 @@ jobs: - name: Install power tools uses: taiki-e/install-action@cargo-hack - + + - name: Download the Cargo lockfiles + uses: actions/download-artifact@v4 + with: + name: Cargo.lock + + - name: Rename ${{ matrix.lock }} to Cargo.lock + run: mv ${{ matrix.lock }} Cargo.lock + if: ${{ matrix.lock != 'Cargo.lock' }} + - name: Check the powerset run: | cargo hack check --all \ @@ -62,12 +104,14 @@ jobs: test: name: Test Suite - runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] rust: ["1.76", stable, nightly] + lock: ["Cargo.lock", "Cargo.lock.min"] python: ["3.10", "3.11", "3.12"] + runs-on: ${{ matrix.os }} + needs: lock steps: - name: Checkout the Repository @@ -90,7 +134,16 @@ jobs: - name: Install numcodecs run: pip install numcodecs - + + - name: Download the Cargo lockfiles + uses: actions/download-artifact@v4 + with: + name: Cargo.lock + + - name: Rename ${{ matrix.lock }} to Cargo.lock + run: mv ${{ matrix.lock }} Cargo.lock + if: ${{ matrix.lock != 'Cargo.lock' }} + - name: Run the test-suite powerset run: | cargo hack test --workspace \ @@ -118,16 +171,18 @@ jobs: clippy: name: Clippy - runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-latest] rust: ["1.76", stable] + lock: ["Cargo.lock", "Cargo.lock.min"] include: - rust: "1.76" wasm32-wasip1: wasm32-wasi - rust: stable wasm32-wasip1: wasm32-wasip1 + runs-on: ${{ matrix.os }} + needs: lock steps: - name: Checkout the Repository @@ -145,6 +200,15 @@ jobs: - name: Install power tools uses: taiki-e/install-action@cargo-hack + - name: Download the Cargo lockfiles + uses: actions/download-artifact@v4 + with: + name: Cargo.lock + + - name: Rename ${{ matrix.lock }} to Cargo.lock + run: mv ${{ matrix.lock }} Cargo.lock + if: ${{ matrix.lock != 'Cargo.lock' }} + - name: Check the code style powerset if: ${{ matrix.rust == 'stable' }} run: |