name: Rust on: [pull_request] env: CARGO_TERM_COLOR: always RUST_LOG: onnxruntime=debug,onnxruntime-sys=debug RUST_BACKTRACE: 1 MANIFEST_PATH: ${{ github.workspace }}/rust/Cargo.toml jobs: fmt: name: Rustfmt runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./.github/actions/rust-toolchain-setup - name: vendor onnxruntime source run: just vendor - name: fmt run: cargo fmt --all -- --check download: name: Download prebuilt ONNX Runtime archive from build.rs runs-on: ubuntu-latest env: ORT_RUST_STRATEGY: download steps: - uses: actions/checkout@v4 - uses: ./.github/actions/rust-toolchain-setup - run: rustup target install x86_64-unknown-linux-gnu - run: rustup target install x86_64-apple-darwin - run: rustup target install i686-pc-windows-msvc - run: rustup target install x86_64-pc-windows-msvc # ****************************************************************** - name: Download prebuilt archive (CPU, x86_64-unknown-linux-gnu) run: cargo build --target x86_64-unknown-linux-gnu --manifest-path ${{ env.MANIFEST_PATH }} - name: Verify prebuilt archive downloaded (CPU, x86_64-unknown-linux-gnu) run: ls -lh target/x86_64-unknown-linux-gnu/debug/build/onnxruntime-sys-*/out/onnxruntime-linux-x64-1.*.tgz # ****************************************************************** - name: Download prebuilt archive (CPU, x86_64-apple-darwin) run: cargo build --target x86_64-apple-darwin --manifest-path ${{ env.MANIFEST_PATH }} - name: Verify prebuilt archive downloaded (CPU, x86_64-apple-darwin) run: ls -lh target/x86_64-apple-darwin/debug/build/onnxruntime-sys-*/out/onnxruntime-osx-x64-1.*.tgz # ****************************************************************** - name: Download prebuilt archive (CPU, i686-pc-windows-msvc) run: cargo build --target i686-pc-windows-msvc --manifest-path ${{ env.MANIFEST_PATH }} - name: Verify prebuilt archive downloaded (CPU, i686-pc-windows-msvc) run: ls -lh target/i686-pc-windows-msvc/debug/build/onnxruntime-sys-*/out/onnxruntime-win-x86-1.*.zip # ****************************************************************** - name: Download prebuilt archive (CPU, x86_64-pc-windows-msvc) run: cargo build --target x86_64-pc-windows-msvc --manifest-path ${{ env.MANIFEST_PATH }} - name: Verify prebuilt archive downloaded (CPU, x86_64-pc-windows-msvc) run: ls -lh target/x86_64-pc-windows-msvc/debug/build/onnxruntime-sys-*/out/onnxruntime-win-x64-1.*.zip # ****************************************************************** - name: Download prebuilt archive (GPU, x86_64-unknown-linux-gnu) env: ORT_USE_CUDA: "yes" run: cargo build --target x86_64-unknown-linux-gnu --manifest-path ${{ env.MANIFEST_PATH }} - name: Verify prebuilt archive downloaded (GPU, x86_64-unknown-linux-gnu) run: ls -lh target/x86_64-unknown-linux-gnu/debug/build/onnxruntime-sys-*/out/onnxruntime-linux-x64-gpu-1.*.tgz # ****************************************************************** - name: Download prebuilt archive (GPU, x86_64-pc-windows-msvc) env: ORT_USE_CUDA: "yes" run: cargo build --target x86_64-pc-windows-msvc --manifest-path ${{ env.MANIFEST_PATH }} - name: Verify prebuilt archive downloaded (GPU, x86_64-pc-windows-msvc) run: ls -lh target/x86_64-pc-windows-msvc/debug/build/onnxruntime-sys-*/out/onnxruntime-win-gpu-x64-1.*.zip test: name: Test Suite runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: target: [ x86_64-unknown-linux-gnu, x86_64-apple-darwin, x86_64-pc-windows-msvc, i686-pc-windows-msvc, ] include: - target: x86_64-unknown-linux-gnu os: ubuntu-latest - target: x86_64-apple-darwin os: macos-latest - target: x86_64-pc-windows-msvc os: windows-latest - target: i686-pc-windows-msvc os: windows-latest env: CARGO_BUILD_TARGET: ${{ matrix.target }} steps: - uses: actions/checkout@v4 - uses: ./.github/actions/rust-toolchain-setup - name: vendor onnxruntime source run: just vendor - run: rustup target install ${{ matrix.target }} - name: Install additional packages (macOS) if: contains(matrix.target, 'x86_64-apple-darwin') run: brew install libomp - name: Build (cargo build) run: cargo build --all --manifest-path ${{ env.MANIFEST_PATH }} - name: Build tests (cargo test) run: cargo test --no-run --manifest-path ${{ env.MANIFEST_PATH }} - name: Build onnxruntime with 'model-fetching' feature run: cargo build --manifest-path ${{ env.MANIFEST_PATH }} --features model-fetching - name: Test onnxruntime-sys run: cargo build --package onnxruntime-sys -- --test-threads=1 --nocapture - name: Test onnxruntime run: cargo test --manifest-path ${{ env.MANIFEST_PATH }} --features model-fetching -- --test-threads=1 --nocapture clippy: name: Clippy runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./.github/actions/rust-toolchain-setup - name: vendor onnxruntime source run: just vendor - run: clippy --all-features --manifest-path ${{ env.MANIFEST_PATH }} -- -D warnings package-sys: name: Package onnxruntime-sys runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: ./.github/actions/rust-toolchain-setup - name: vendor onnxruntime source run: just vendor - run: cargo package --allow-dirty --package onnxruntime-sys