CI #2953
Workflow file for this run
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: | |
merge_group: | |
pull_request: | |
push: | |
branches: | |
- master | |
env: | |
RUST_BACKTRACE: 1 | |
jobs: | |
style: | |
name: Check Style | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rustfmt | |
- name: Algebra - format | |
run: cargo fmt --all -- --check | |
- name: Curves - format | |
run: cargo fmt --all -- --check | |
working-directory: ./curves | |
docs: | |
name: Check Documentation | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: stable | |
override: true | |
components: rustfmt | |
- name: Algebra - doc | |
run: cargo doc --all --no-deps --document-private-items --all-features | |
- name: Curves - doc | |
run: cargo doc --all --no-deps --document-private-items --all-features | |
working-directory: ./curves | |
check: | |
name: Check | |
runs-on: ubuntu-latest | |
env: | |
RUSTFLAGS: -Dwarnings | |
strategy: | |
matrix: | |
rust: | |
- stable | |
- nightly | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust (${{ matrix.rust }}) | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ matrix.rust }} | |
override: true | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Algebra - Check examples | |
run: cargo check --examples --all | |
- name: Curves - Check examples | |
run: cargo check --examples --all | |
working-directory: ./curves | |
- name: Algebra - Check examples with all features on stable | |
run: cargo check --examples --all-features --all | |
if: matrix.rust == 'stable' | |
- name: Curves - Check examples with all features on stable | |
run: cargo check --examples --all-features --all | |
working-directory: ./curves | |
if: matrix.rust == 'stable' | |
- name: Algebra - Check benchmarks on nightly | |
run: cargo check --all-features --examples --workspace --benches | |
if: matrix.rust == 'nightly' | |
- name: Curves - Check benchmarks on nightly | |
run: cargo check --all-features --examples --workspace --benches | |
working-directory: ./curves | |
if: matrix.rust == 'nightly' | |
test: | |
name: Test | |
runs-on: ubuntu-latest | |
env: | |
RUSTFLAGS: -Dwarnings | |
strategy: | |
matrix: | |
rust: | |
- stable | |
- nightly | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust (${{ matrix.rust }}) | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: ${{ matrix.rust }} | |
override: true | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Check examples | |
uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: --examples --all | |
- name: Check examples with all features on stable | |
uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: --examples --all-features --all | |
if: matrix.rust == 'stable' | |
- name: Check benchmarks on nightly | |
uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: --all-features --examples --workspace --benches | |
if: matrix.rust == 'nightly' | |
- name: Test | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: "--workspace \ | |
--all-features \ | |
--exclude ark-poly-benches \ | |
--exclude ark-algebra-test-templates" | |
- name: Test assembly on nightly | |
env: | |
RUSTFLAGS: -C target-cpu=native -Z macro-backtrace | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: "--workspace \ | |
--package ark-test-curves \ | |
--all-features | |
" | |
if: matrix.rust == 'nightly' | |
directories: # Job that list subdirectories | |
name: List directories for parallelizing tests | |
runs-on: ubuntu-latest | |
outputs: | |
dir: ${{ steps.set-dirs.outputs.dir }} # generate output name dir by using inner step output | |
steps: | |
- uses: actions/checkout@v4 | |
- id: set-dirs # Give it an id to handle to get step outputs in the outputs key above | |
run: | | |
# shellcheck disable=SC2086 | |
echo "dir=$(find . -mindepth 1 -maxdepth 1 -type d | jq -R -s -c 'split("\n")[:-1]')" >> $GITHUB_OUTPUT | |
working-directory: ./curves | |
# Define step output named dir base on ls command transformed to JSON thanks to jq | |
test-curves: | |
name: Test | |
runs-on: ubuntu-latest | |
needs: [directories] # Depends on previous job | |
strategy: | |
matrix: | |
dir: ${{fromJson(needs.directories.outputs.dir)}} # List matrix strategy from directories dynamically | |
exclude: | |
- dir: ./scripts | |
- dir: ./curve-constraint-tests | |
- dir: ./mnt4_753 | |
- dir: ./mnt6_753 | |
- dir: ./cp6_782 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Run tests | |
run: | | |
cd ${{matrix.dir}} | |
cargo test --all-features | |
working-directory: ./curves | |
test-mnt4-753: | |
name: Test (mnt4_753/) | |
runs-on: macos-latest | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Check if source code updated | |
uses: dorny/[email protected] | |
id: check-diff | |
with: | |
filters: | | |
mnt4_753_is_updated: | |
- 'curves/mnt4_753/**' | |
- name: Generate lockfile | |
run: cargo generate-lockfile | |
working-directory: ./curves | |
- name: Check if deps updated | |
id: deps-updated | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/curves/Cargo.lock') }} | |
- name: Conditionally run the tests | |
# if source code updated OR dependencies updated | |
if: ${{ steps.check-diff.outputs.mnt4_753_is_updated == 'true' || steps.deps-updated.outputs.cache-hit != 'true' }} | |
run: | | |
cd mnt4_753/ | |
cargo test --all-features | |
working-directory: ./curves | |
test-mnt6-753: | |
name: Test (mnt6_753/) | |
runs-on: macos-latest | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Check if source code updated | |
uses: dorny/[email protected] | |
id: check-diff | |
with: | |
filters: | | |
mnt6_753_is_updated: | |
- 'mnt6_753/**' | |
- name: Generate lockfile | |
run: cargo generate-lockfile | |
- name: Check if deps updated | |
id: deps-updated | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/curves/Cargo.lock') }} | |
- name: Conditionally run the tests | |
# if source code updated OR dependencies updated | |
if: ${{ steps.check-diff.outputs.mnt6_753_is_updated == 'true' || steps.deps-updated.outputs.cache-hit != 'true' }} | |
run: | | |
cd mnt6_753/ | |
cargo test --all-features | |
working-directory: ./curves | |
test-cp6_782: | |
name: Test (cp6_782/) | |
runs-on: ubuntu-latest | |
timeout-minutes: 60 | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Check if source code updated | |
uses: dorny/[email protected] | |
id: check-diff | |
with: | |
filters: | | |
cp6_782_is_updated: | |
- 'cp6_782/**' | |
- name: Generate lockfile | |
run: cargo generate-lockfile | |
- name: Check if deps updated | |
id: deps-updated | |
uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/curves/Cargo.lock') }} | |
- name: Conditionally run the tests | |
# if source code updated OR dependencies updated | |
if: ${{ steps.check-diff.outputs.cp6_782_is_updated == 'true' || steps.deps-updated.outputs.cache-hit != 'true' }} | |
run: | | |
cd cp6_782/ | |
cargo test --all-features | |
working-directory: ./curves | |
test_assembly: | |
name: Test assembly | |
runs-on: ubuntu-latest | |
env: | |
RUSTFLAGS: -Dwarnings | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust nightly | |
uses: actions-rs/toolchain@v1 | |
with: | |
profile: minimal | |
toolchain: nightly | |
override: true | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: Test assembly on nightly | |
env: | |
RUSTFLAGS: -C target-cpu=native | |
uses: actions-rs/cargo@v1 | |
with: | |
command: test | |
args: "--workspace \ | |
--package ark-test-curves \ | |
--all-features" | |
check_no_std: | |
name: Check no_std | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout | |
uses: actions/checkout@v4 | |
- name: Install Rust | |
uses: actions-rs/toolchain@v1 | |
with: | |
toolchain: stable | |
target: aarch64-unknown-none | |
override: true | |
- uses: actions/cache@v3 | |
with: | |
path: | | |
~/.cargo/registry | |
~/.cargo/git | |
target | |
key: ${{ runner.os }}-cargo-${{ hashFiles('**/Cargo.lock') }} | |
- name: check | |
uses: actions-rs/cargo@v1 | |
with: | |
command: check | |
args: "--examples --workspace \ | |
--exclude ark-algebra-test-templates \ | |
--exclude ark-algebra-bench-templates \ | |
--exclude ark-poly-benches \ | |
--target aarch64-unknown-none" | |
- name: build | |
uses: actions-rs/cargo@v1 | |
with: | |
command: build | |
args: "--workspace \ | |
--exclude ark-algebra-test-templates \ | |
--exclude ark-algebra-bench-templates \ | |
--exclude ark-poly-benches \ | |
--target aarch64-unknown-none" |