Files
rustytorch/.gitea/workflows/ci.yml
T
osobhandClaude Opus 4.8 e8a2036db4
CI / Build (macos-latest) (push) Failing after 26s
CI / Format Check (push) Failing after 10s
CI / Clippy Check (push) Failing after 19s
Performance Benchmarks / Run Benchmarks (push) Successful in 28s
CI / Build (ubuntu-latest) (push) Failing after 15s
CI / Test (macos-latest) (push) Has been skipped
CI / Test (ubuntu-latest) (push) Has been skipped
CI / Python Bindings (maturin) (macos-latest) (push) Has been skipped
CI / Python Bindings (maturin) (ubuntu-latest) (push) Has been skipped
CI / WASM Build + Size Check (push) Has been skipped
CI / Distributed Training Tests (push) Has been skipped
GPU Tests / Check GPU Availability (push) Successful in 1s
GPU Tests / CUDA Tests (11.8) (push) Has been skipped
GPU Tests / CUDA Tests (12.1) (push) Has been skipped
GPU Tests / Metal Tests (push) Has been skipped
Documentation / Build User Guide (push) Successful in 6s
Documentation / Build API Documentation (push) Failing after 50s
CI / Build CPU-Only (Explicit) (push) Failing after 1m0s
CI / CI Success (push) Failing after 0s
fix(ci,rtx-tensor): resolve clippy --all-features intel-mkl conflict; gate MKL to x86_64-linux
clippy --all-features enabled both rtx-tensor/mkl (intel-mkl-src mkl-static-lp64-seq)
and rtx-csm/candle mkl (mkl-static-lp64-iomp) -> two conflicting intel-mkl-src link
configs -> E0428 'MKL_CONFIG defined multiple times'.

- clippy: drop --all-features (lint default features; --all-features is unsound for a
  multi-platform, mutually-exclusive-backend workspace).
- rtx-tensor: gate intel-mkl-src to cfg(all(target_os=linux, target_arch=x86_64)) so
  mkl is never pulled on macOS/arm.

Co-Authored-By: Claude Opus 4.8 <[email protected]>
2026-06-27 08:12:27 -07:00

173 lines
5.1 KiB
YAML

name: CI
on:
push:
branches: [ main, develop ]
pull_request:
branches: [ main ]
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
jobs:
format:
name: Format Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- run: cargo fmt --all -- --check
clippy:
name: Clippy Check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- name: Run Clippy
run: |
cargo clippy --workspace -- \
-W clippy::all \
-W clippy::pedantic \
-A clippy::module_name_repetitions \
-A clippy::similar_names \
-A clippy::too_many_lines \
-A clippy::too_many_arguments \
-A clippy::must_use_candidate \
-A clippy::missing_errors_doc \
-A clippy::missing_panics_doc \
-A clippy::doc_markdown \
-A clippy::cast_possible_truncation \
-A clippy::cast_sign_loss \
-A clippy::cast_precision_loss
build:
name: Build (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Build workspace
run: cargo build --workspace
test:
name: Test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
needs: [build]
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Run tests
run: cargo test --workspace
env:
RUST_BACKTRACE: 1
build-cpu-explicit:
name: Build CPU-Only (Explicit)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Build (CPU features only)
run: cargo build --workspace --no-default-features --features cpu
- name: Test (CPU features only)
run: cargo test --workspace --no-default-features --features cpu
env:
RUST_BACKTRACE: 1
python-bindings:
name: Python Bindings (maturin)
runs-on: ${{ matrix.os }}
needs: [build]
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly-2025-10-25
- uses: Swatinem/rust-cache@v2
- uses: actions/setup-python@v5
with:
python-version: '3.12'
- name: Install maturin
run: pip install maturin
- name: Build Python bindings
run: cd crates/core/rtx-bindings && maturin develop --features python
- name: Smoke-test import
run: python -c "import rtx_bindings; print('rtx_bindings import OK')" || true
wasm-build:
name: WASM Build + Size Check
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly-2025-10-25
targets: wasm32-unknown-unknown
- uses: Swatinem/rust-cache@v2
- name: Build WASM inference bundle
run: cargo build -p rtx-wasm-inference --target wasm32-unknown-unknown --release
- name: Check WASM bundle size (<5MB)
run: |
SIZE=$(find target/wasm32-unknown-unknown/release -name "*.wasm" -not -name "*.d" | head -1 | xargs wc -c 2>/dev/null | awk '{print $1}' || echo 0)
echo "WASM bundle size: $((SIZE/1024))KB"
[ "$SIZE" -eq 0 ] || [ "$SIZE" -lt 5242880 ] || (echo "ERROR: WASM bundle exceeds 5MB limit" && exit 1)
distributed-tests:
name: Distributed Training Tests
runs-on: ubuntu-latest
needs: [build]
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
toolchain: nightly-2025-10-25
- uses: Swatinem/rust-cache@v2
- name: Run rtx-distributed tests
run: cargo test -p rtx-distributed
env:
RUST_BACKTRACE: 1
ci-success:
name: CI Success
runs-on: ubuntu-latest
needs: [format, clippy, build, test, build-cpu-explicit, python-bindings, wasm-build, distributed-tests]
if: always()
steps:
- name: Check all jobs passed
run: |
if [ "${{ needs.format.result }}" != "success" ] || \
[ "${{ needs.clippy.result }}" != "success" ] || \
[ "${{ needs.build.result }}" != "success" ] || \
[ "${{ needs.test.result }}" != "success" ] || \
[ "${{ needs.build-cpu-explicit.result }}" != "success" ] || \
[ "${{ needs.python-bindings.result }}" != "success" ] || \
[ "${{ needs.wasm-build.result }}" != "success" ] || \
[ "${{ needs.distributed-tests.result }}" != "success" ]; then
echo "One or more required jobs failed"
exit 1
fi
echo "All required CI checks passed!"