Skip to content

CI

CI #172

Workflow file for this run

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