Skip to content

nucypher-core

nucypher-core #426

Workflow file for this run

name: nucypher-core
on:
pull_request:
paths:
- "nucypher-core/**"
- "nucypher-core-python/**"
- "nucypher-core-wasm/**"
- "Cargo.*"
push:
branches:
- main
tags:
- v*
defaults:
run:
working-directory: nucypher-core
env:
CARGO_INCREMENTAL: 0
RUSTFLAGS: "-Dwarnings"
jobs:
test:
runs-on: ubuntu-latest
strategy:
matrix:
include:
- target: x86_64-unknown-linux-gnu
rust: 1.67 # MSRV
- target: x86_64-unknown-linux-gnu
rust: stable
steps:
- uses: actions/checkout@v1
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
override: true
- run: ${{ matrix.deps }}
- run: cargo check --all-features
- run: cargo test --release --all-features
wasm-test:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- 1.67 # MSRV
- stable
target:
- wasm32-unknown-unknown
steps:
- uses: actions/checkout@v1
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
override: true
- run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- run: cd ../nucypher-core-wasm && wasm-pack test --node
yarn-test:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- stable
target:
- wasm32-unknown-unknown
steps:
- uses: actions/checkout@v1
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
override: true
- run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- run: make
working-directory: nucypher-core-wasm
- uses: borales/actions-yarn@v3.0.0
with:
cmd: --cwd nucypher-core-wasm/examples/node install
- uses: borales/actions-yarn@v3.0.0
with:
cmd: --cwd nucypher-core-wasm/examples/node build
- uses: borales/actions-yarn@v3.0.0
with:
cmd: --cwd nucypher-core-wasm/examples/node test
rebundle-wasm:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- stable
target:
- wasm32-unknown-unknown
steps:
- uses: actions/checkout@v1
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
target: ${{ matrix.target }}
override: true
- run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- uses: bahmutov/npm-install@v1
with:
working-directory: nucypher-core-wasm-bundler
node-version: '16.x'
- run: npm run build
working-directory: nucypher-core-wasm-bundler
python-test:
runs-on: ubuntu-latest
strategy:
matrix:
rust:
- stable
python:
- "3.12"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python }}
- name: Install Rust toolchain
uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: ${{ matrix.rust }}
override: true
- name: Install nucypher-core Python package
run: pip install -e .
working-directory: nucypher-core-python
- name: Install pip dependencies
run: pip install mypy ruff
- name: Run mypy.stubtest
run: python -m mypy.stubtest nucypher_core --allowlist stubtest-allowlist.txt
working-directory: nucypher-core-python
- name: Run ruff
run: ruff check nucypher_core
working-directory: nucypher-core-python
trigger-wheels:
runs-on: ubuntu-latest
needs: test
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: benc-uk/workflow-dispatch@v1
with:
workflow: Wheels
token: ${{ secrets.PERSONAL_TOKEN }}
codecov:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions-rs/toolchain@v1
with:
profile: minimal
toolchain: stable
target: x86_64-unknown-linux-gnu
override: true
- name: Install cargo-llvm-cov
uses: taiki-e/install-action@cargo-llvm-cov
# Only checking the coverage of the main library,
# bindings are covered by their language's tests.
- name: Generate code coverage
run: cargo llvm-cov --workspace --lcov --output-path lcov.info --all-features
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v3
with:
files: lcov.info
fail_ci_if_error: true