CI #172
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: CI | |
on: | |
push: | |
branches: | |
- main | |
- '*.*' | |
pull_request: | |
branches: | |
- '*' | |
schedule: | |
- cron: '0 0 * * MON' | |
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 | |
cargo update -Z direct-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 | |
strategy: | |
matrix: | |
os: [ubuntu-latest] | |
rust: ["1.76", stable, nightly] | |
lock: ["Cargo.lock", "Cargo.lock.min"] | |
include: | |
- rust: "1.76" | |
wasm32-wasip1: wasm32-wasi | |
- rust: stable | |
wasm32-wasip1: wasm32-wasip1 | |
- rust: nightly | |
wasm32-wasip1: wasm32-wasip1 | |
runs-on: ${{ matrix.os }} | |
needs: lock | |
steps: | |
- name: Checkout the Repository | |
uses: actions/checkout@v2 | |
- name: Install the Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ matrix.rust }} | |
profile: minimal | |
target: ${{ matrix.wasm32-wasip1 }} | |
override: true | |
- 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 \ | |
--feature-powerset --keep-going | |
- name: Check the powerset on ${{ matrix.wasm32-wasip1 }} | |
run: | | |
cargo hack check --all \ | |
--exclude numcodecs-python \ | |
--exclude numcodecs-sz3 \ | |
--exclude numcodecs-zfp \ | |
--exclude numcodecs-zstd \ | |
--feature-powerset --keep-going \ | |
--target ${{ matrix.wasm32-wasip1 }} | |
test: | |
name: Test Suite | |
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 | |
uses: actions/checkout@v2 | |
- name: Install the Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ matrix.rust }} | |
profile: minimal | |
override: true | |
- name: Set up Python | |
uses: actions/setup-python@v2 | |
with: | |
python-version: ${{ matrix.python }} | |
- name: Install power tools | |
uses: taiki-e/install-action@cargo-hack | |
- 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 \ | |
--no-fail-fast --feature-powerset --keep-going \ | |
--release | |
fmt: | |
name: Rustfmt | |
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 | |
components: rustfmt | |
override: true | |
- name: Check the code formatting | |
run: cargo fmt --all -- --check | |
clippy: | |
name: Clippy | |
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 | |
uses: actions/checkout@v2 | |
- name: Install the Rust toolchain | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: ${{ matrix.rust }} | |
profile: minimal | |
target: ${{ matrix.wasm32-wasip1 }} | |
components: clippy | |
override: true | |
- 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' && matrix.lock == 'Cargo.lock' }} | |
run: | | |
cargo hack clippy --all \ | |
--feature-powerset --keep-going \ | |
-- -D warnings | |
- name: Check the code style powerset | |
if: ${{ matrix.rust != 'stable' || matrix.lock != 'Cargo.lock' }} | |
run: | | |
cargo hack clippy --all \ | |
--feature-powerset --keep-going \ | |
-- -D warnings -A unknown-lints -A clippy::multiple-crate-versions | |
- name: Check the code style powerset on ${{ matrix.wasm32-wasip1 }} | |
if: ${{ matrix.rust == 'stable' && matrix.lock == 'Cargo.lock' }} | |
run: | | |
cargo hack clippy --all \ | |
--exclude numcodecs-python \ | |
--exclude numcodecs-sz3 \ | |
--exclude numcodecs-zfp \ | |
--exclude numcodecs-zstd \ | |
--feature-powerset --keep-going \ | |
--target ${{ matrix.wasm32-wasip1 }} \ | |
-- -D warnings | |
- name: Check the code style powerset on ${{ matrix.wasm32-wasip1 }} | |
if: ${{ matrix.rust != 'stable' || matrix.lock != 'Cargo.lock' }} | |
run: | | |
cargo hack clippy --all \ | |
--exclude numcodecs-python \ | |
--exclude numcodecs-sz3 \ | |
--exclude numcodecs-zfp \ | |
--exclude numcodecs-zstd \ | |
--feature-powerset --keep-going \ | |
--target ${{ matrix.wasm32-wasip1 }} \ | |
-- -D warnings -A unknown-lints -A clippy::multiple-crate-versions |