682bf063ca
Prepare the first patch release after v1.0.0 by finalizing the outstanding release, packaging, and workflow fixes. This release keeps PyPI and crates.io publishing anchored to CI.yml, splits the large CI workflow into focused rust/python/wasm/docs suites, fixes the ci-complete gate, and updates the release SBOM action pin. It also switches the npm publish workflow to GitHub OIDC, installs the wasm32 target required for packaging, ensures the WASM npm tarball includes pkg/ artifacts during prepack, and adds a dedicated README plus docs.rs metadata for ferro_ta_core. Finally, bump all published package versions to 1.0.1 and record the patch release notes in CHANGELOG.md.
111 lines
3.0 KiB
YAML
111 lines
3.0 KiB
YAML
name: CI Rust
|
|
|
|
on:
|
|
workflow_call:
|
|
|
|
permissions:
|
|
contents: read
|
|
|
|
jobs:
|
|
audit:
|
|
name: Dependency audit (cargo + pip)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
|
|
- name: Install cargo-audit and run cargo audit
|
|
run: |
|
|
cargo install cargo-audit
|
|
cargo audit
|
|
|
|
- name: Install cargo-deny and run cargo deny check
|
|
run: |
|
|
cargo install cargo-deny --locked
|
|
cargo deny check
|
|
|
|
- name: Set up Python 3.12
|
|
uses: actions/setup-python@v6
|
|
with:
|
|
python-version: "3.12"
|
|
|
|
- name: Install uv
|
|
run: pip install uv
|
|
|
|
- name: Install pip-audit via uv and run pip-audit
|
|
run: uv run --with pip-audit pip-audit
|
|
|
|
- name: Verify uv.lock is up-to-date
|
|
run: uv lock --check
|
|
|
|
rust:
|
|
name: Rust (fmt + clippy)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
components: rustfmt, clippy
|
|
- run: cargo fmt --all -- --check
|
|
- run: cargo clippy --release -- -D warnings
|
|
- name: Verify benchmarks compile (ferro_ta_core)
|
|
run: cargo bench -p ferro_ta_core --no-run
|
|
|
|
rust-core:
|
|
name: Rust core library (ferro_ta_core)
|
|
runs-on: ubuntu-latest
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
- name: Build core crate
|
|
run: cargo build -p ferro_ta_core
|
|
- name: Test core crate
|
|
run: cargo test -p ferro_ta_core
|
|
|
|
rust-coverage:
|
|
name: Rust coverage (tarpaulin, optional)
|
|
runs-on: ubuntu-latest
|
|
continue-on-error: true
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
toolchain: stable
|
|
- name: Install cargo-tarpaulin
|
|
run: cargo install cargo-tarpaulin --locked
|
|
- name: Collect Rust coverage (ferro_ta_core)
|
|
run: cargo tarpaulin -p ferro_ta_core --out Xml --output-dir coverage/
|
|
- name: Upload Rust coverage artifact
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: rust-coverage
|
|
path: coverage/
|
|
if-no-files-found: ignore
|
|
|
|
fuzz:
|
|
name: Fuzz targets (short CI run, optional)
|
|
runs-on: ubuntu-latest
|
|
continue-on-error: true
|
|
steps:
|
|
- uses: actions/checkout@v6
|
|
- uses: dtolnay/rust-toolchain@v1
|
|
with:
|
|
toolchain: nightly
|
|
- name: Install cargo-fuzz
|
|
run: cargo install cargo-fuzz --locked
|
|
- name: Run fuzz_sma (10000 iterations)
|
|
working-directory: fuzz
|
|
run: cargo fuzz run fuzz_sma -- -runs=10000 -max_len=512
|
|
- name: Run fuzz_rsi (10000 iterations)
|
|
working-directory: fuzz
|
|
run: cargo fuzz run fuzz_rsi -- -runs=10000 -max_len=512
|
|
- name: Upload fuzz artifacts on crash
|
|
uses: actions/upload-artifact@v7
|
|
if: always()
|
|
with:
|
|
name: fuzz-artifacts
|
|
path: fuzz/artifacts/
|
|
if-no-files-found: ignore
|