name: Build Bonsai Viewer Autodesk Connector on: workflow_dispatch: push: paths: - 'src/bonsaiviewer-autodesk/**' - '.github/workflows/build-bonsaiviewer-autodesk.yml' pull_request: paths: - 'src/bonsaiviewer-autodesk/**' - '.github/workflows/build-bonsaiviewer-autodesk.yml' jobs: test: name: cargo-test runs-on: ubuntu-latest defaults: run: working-directory: src/bonsaiviewer-autodesk steps: - uses: actions/checkout@v6 - uses: dtolnay/rust-toolchain@stable # cargo-target reuse across runs. Massive cold-build speedup, # cheap on the GitHub Actions cache budget. - uses: Swatinem/rust-cache@v2 with: workspaces: src/bonsaiviewer-autodesk - name: cargo fmt --check run: cargo fmt --all -- --check - name: cargo clippy run: cargo clippy --all-targets --all-features -- -D warnings - name: cargo test run: cargo test --all-features build: name: ${{ matrix.os_label }}-${{ matrix.arch }} needs: test runs-on: ${{ matrix.runner }} strategy: fail-fast: false matrix: include: # Linux: build on the oldest reasonable glibc (Ubuntu 22.04 / glibc # 2.35) so the bundle runs on older distributions. - os_label: linux arch: x86_64 runner: ubuntu-22.04 # macOS Apple Silicon. - os_label: macos arch: arm64 runner: macos-14 # macOS Intel. macos-13 is the last Intel runner GitHub provides. - os_label: macos arch: x86_64 runner: macos-13 # Windows x86_64. - os_label: windows arch: x86_64 runner: windows-latest defaults: run: working-directory: src/bonsaiviewer-autodesk steps: - uses: actions/checkout@v6 - uses: dtolnay/rust-toolchain@stable - uses: Swatinem/rust-cache@v2 with: workspaces: src/bonsaiviewer-autodesk # python3 is the runner default on all four hosts; packaging/build.py # only uses stdlib (subprocess, shutil, zipfile, pathlib, platform), # no pip-installable deps. - name: Build connector bundle run: python3 packaging/build.py - name: Upload connector zip uses: actions/upload-artifact@v7 with: name: autodesk-${{ matrix.os_label }}-${{ matrix.arch }} path: src/bonsaiviewer-autodesk/dist/autodesk-${{ matrix.os_label }}-${{ matrix.arch }}.zip if-no-files-found: error