name: 📋 Code Quality on: push: paths: - '.github/workflows/code-quality.yml' - 'src/**/*.rs' - 'Cargo.toml' - 'tests/**/*' - 'codecov.yml' - 'ort-sys/build/**/*.rs' - 'ort-sys/src/**/*.rs' - 'ort-sys/Cargo.toml' pull_request: types: [ opened, synchronize, reopened ] paths: - '.github/workflows/code-quality.yml' - 'src/**/*.rs' - 'Cargo.toml' - 'tests/**/*' - 'codecov.yml' - 'ort-sys/build/**/*.rs' - 'ort-sys/src/**/*.rs' - 'ort-sys/Cargo.toml' permissions: contents: read concurrency: group: '${{ github.workflow }} @ ${{ github.event.pull_request.head.label || github.head_ref || github.ref }}' cancel-in-progress: true env: RUST_BACKTRACE: 1 jobs: lint-and-fmt: name: Lint & format runs-on: ubuntu-24.04 if: github.event.pull_request.draft == false steps: - name: Checkout sources uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@nightly with: toolchain: nightly-2025-09-28 components: rustfmt, clippy - name: Check fmt run: cargo fmt --all -- --check - name: Run clippy run: cargo clippy -p ort --all-targets --features fetch-models coverage: name: Code coverage runs-on: ubuntu-24.04 if: github.event.pull_request.draft == false steps: - name: Checkout sources uses: actions/checkout@v4 - name: Install Rust uses: dtolnay/rust-toolchain@nightly with: toolchain: nightly-2025-09-28 - name: Get Rust version id: rust-version run: echo "::set-output name=version::$(cargo --version | cut -d ' ' -f 2)" shell: bash - uses: actions/cache@v4 id: tarpaulin-cache with: path: ~/.cargo/bin/cargo-tarpaulin key: ${{ runner.os }}-cargo-${{ steps.rust-version.outputs.version }}-0.32.8 - name: Install tarpaulin if: steps.tarpaulin-cache.outputs.cache-hit != 'true' run: cargo install cargo-tarpaulin --version 0.32.8 - name: Generate code coverage run: | cargo tarpaulin -p ort --features fetch-models,tls-rustls --verbose --timeout 120 --out xml --engine llvm --doc --lib --tests -- --test-threads 1 - name: Upload to codecov.io uses: codecov/codecov-action@v4 with: token: ${{ secrets.CODECOV_TOKEN }} fail_ci_if_error: false