name: Coverage
on:
push:
branches: [ main, devel ]
paths-ignore:
- "**.md"
- "docs/**"
pull_request:
branches: [ main, devel ]
paths-ignore:
- "**.md"
- "docs/**"
workflow_dispatch:
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
coverage:
name: Coverage
runs-on: [self-hosted, linux]
steps:
- uses: actions/checkout@v6
with:
submodules: recursive
- name: Install clang and build tools
run: |
sudo apt-get update
sudo apt-get install -y clang libclang-dev pkg-config
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
targets: wasm32-unknown-unknown
- name: Setup cache
uses: Swatinem/rust-cache@v2
- name: Install wasm32 target
run: |
rustup target add wasm32-unknown-unknown
rustup +nightly-2025-09-20 target add wasm32-unknown-unknown
- name: Run cargo check
run: cargo check
- name: Generate code coverage
run: |
cargo install cargo-llvm-cov grcov
make coverage
- name: Upload to codecov.io
uses: codecov/codecov-action@v5.5.3
with:
files: ./lcov.info
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
- name: Archive code coverage results
uses: actions/upload-artifact@v7
with:
name: code-coverage-report
path: cobertura.xml