name: Rust on: push: branches: - main pull_request: paths: - Cargo.toml - rust/** - .github/workflows/rust.yml concurrency: group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true env: # This env var is used by Swatinem/rust-cache@v2 for the cache # key, so we set it to make sure it is always consistent. CARGO_TERM_COLOR: always # Disable full debug symbol generation to speed up CI build and keep memory down # "1" means line tables only, which is useful for panic tracebacks. RUSTFLAGS: "-C debuginfo=1" RUST_BACKTRACE: "1" jobs: lint: timeout-minutes: 30 runs-on: ubuntu-22.04 defaults: run: shell: bash working-directory: rust env: # Need up-to-date compilers for kernels CC: gcc-12 CXX: g++-12 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 lfs: true - uses: Swatinem/rust-cache@v2 with: workspaces: rust - name: Install dependencies run: | sudo apt update sudo apt install -y protobuf-compiler libssl-dev - name: Run format run: cargo fmt --all -- --check - name: Run clippy run: cargo clippy --all --all-features -- -D warnings linux: timeout-minutes: 30 runs-on: ubuntu-22.04 defaults: run: shell: bash working-directory: rust env: # Need up-to-date compilers for kernels CC: gcc-12 CXX: g++-12 steps: - uses: actions/checkout@v4 with: fetch-depth: 0 lfs: true - uses: Swatinem/rust-cache@v2 with: workspaces: rust - name: Install dependencies run: | sudo apt update sudo apt install -y protobuf-compiler libssl-dev - name: Start S3 integration test environment working-directory: . run: docker compose up --detach --wait - name: Build run: cargo build --all-features - name: Run tests run: cargo test --all-features - name: Run examples run: cargo run --example simple macos: timeout-minutes: 30 strategy: matrix: mac-runner: [ "macos-13", "macos-14" ] runs-on: "${{ matrix.mac-runner }}" defaults: run: shell: bash working-directory: rust steps: - uses: actions/checkout@v4 with: fetch-depth: 0 lfs: true - name: CPU features run: sysctl -a | grep cpu - uses: Swatinem/rust-cache@v2 with: workspaces: rust - name: Install dependencies run: brew install protobuf - name: Build run: cargo build --all-features - name: Run tests # Run with everything except the integration tests. run: cargo test --features remote,fp16kernels windows: runs-on: windows-2022 steps: - uses: actions/checkout@v4 - uses: Swatinem/rust-cache@v2 with: workspaces: rust - name: Install Protoc v21.12 working-directory: C:\ run: | New-Item -Path 'C:\protoc' -ItemType Directory Set-Location C:\protoc Invoke-WebRequest https://github.com/protocolbuffers/protobuf/releases/download/v21.12/protoc-21.12-win64.zip -OutFile C:\protoc\protoc.zip 7z x protoc.zip Add-Content $env:GITHUB_PATH "C:\protoc\bin" shell: powershell - name: Run tests run: | $env:VCPKG_ROOT = $env:VCPKG_INSTALLATION_ROOT cargo build cargo test