Reduce dynamics per-step cost in NDOF back-substitution and the integrator state container #4089
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: "Pull Request" | |
| on: | |
| pull_request: | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| # One full job per platform publishes Conan dependencies. Other jobs restore only. | |
| pre-commit: | |
| runs-on: ubuntu-24.04 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: ./.github/actions/pre-commit | |
| build-linux: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 90 | |
| needs: pre-commit | |
| name: Linux (MAX Python) | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: ./.github/actions/data-cache | |
| - uses: ./.github/actions/build | |
| with: | |
| python-version: 3.14 | |
| conan-args: --opNav True --mujoco True | |
| save-conan-cache: true | |
| - name: Pytest | |
| working-directory: src | |
| run: | | |
| pip install pytest-error-for-skips pytest-timeout | |
| pytest -n auto -m "not ciSkip" -rs --error-for-skips --timeout=300 --timeout-method=thread --durations=25 -v | |
| - name: CTest | |
| if: ${{ always() && hashFiles('dist3/CTestTestfile.cmake') != '' }} | |
| working-directory: dist3 | |
| run: ctest --output-on-failure | |
| build-windows: | |
| runs-on: windows-2025-vs2026 | |
| timeout-minutes: 105 | |
| needs: pre-commit | |
| name: Windows (MAX Python) | |
| env: | |
| MPLBACKEND: agg | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: ./.github/actions/data-cache | |
| - uses: ./.github/actions/build | |
| with: | |
| python-version: 3.14 | |
| conan-args: --opNav True --mujoco True --generator Ninja | |
| save-conan-cache: true | |
| - name: Pytest | |
| shell: pwsh | |
| working-directory: src | |
| run: | | |
| pip install pytest-error-for-skips pytest-timeout | |
| pytest -n auto -m "not ciSkip" -rs --error-for-skips --timeout=300 --timeout-method=thread --durations=25 -v | |
| if(($LastExitCode -ne 0) -and ($LastExitCode -ne 5)) {exit 1} | |
| - name: CTest | |
| if: ${{ always() && hashFiles('dist3/CTestTestfile.cmake') != '' }} | |
| shell: pwsh | |
| working-directory: dist3 | |
| run: | | |
| ctest --output-on-failure | |
| if(($LastExitCode -ne 0) -and ($LastExitCode -ne 5)) { exit 1 } | |
| build-macos: | |
| runs-on: macos-26 | |
| timeout-minutes: 90 | |
| needs: pre-commit | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| job_suffix: [""] | |
| python_label: ["MIN Python"] | |
| python: ["3.9"] | |
| pytest_flags: | |
| [ | |
| '-n auto -m "not ciSkip" -rs --error-for-skips --timeout=300 --timeout-method=thread --durations=25 -v', | |
| ] | |
| conan_args: ["--opNav True --mujoco True"] | |
| include: | |
| # An extra plain Basilisk build without optional opNav, MuJoCo, or visualization support | |
| - python: "3.14" | |
| python_label: "MAX Python" | |
| pytest_flags: -n auto -m "not ciSkip" -rs --timeout=300 --timeout-method=thread --durations=25 -v | |
| conan_args: --opNav False --mujoco False --vizInterface False | |
| job_suffix: "--vizInterface False" | |
| name: macOS (${{ matrix.python_label }}) ${{ matrix.job_suffix }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: ./.github/actions/data-cache | |
| - uses: ./.github/actions/build | |
| with: | |
| python-version: ${{ matrix.python }} | |
| conan-args: ${{ matrix.conan_args }} | |
| - name: Pytest | |
| working-directory: src | |
| run: | | |
| pip install pytest-error-for-skips pytest-timeout | |
| pytest ${{ matrix.pytest_flags }} | |
| - name: CTest | |
| if: ${{ always() && hashFiles('dist3/CTestTestfile.cmake') != '' }} | |
| working-directory: dist3 | |
| run: ctest -C Release --output-on-failure | |
| docs: | |
| runs-on: macos-26 | |
| steps: | |
| - uses: actions/checkout@v5 | |
| - uses: ./.github/actions/data-cache | |
| - name: Build Basilisk | |
| uses: ./.github/actions/build | |
| with: | |
| python-version: 3.14 | |
| conan-args: --opNav True --allOptPkg --mujoco True | |
| save-conan-cache: true | |
| - name: Build docs | |
| uses: ./.github/actions/docs |