Skip to content

Expand CI coverage across platforms#298

Merged
mattalvarado merged 37 commits into
carnegierobotics:masterfrom
ethanmusser:ethanmusser/more-comprehensive-ci-builds
Jun 4, 2026
Merged

Expand CI coverage across platforms#298
mattalvarado merged 37 commits into
carnegierobotics:masterfrom
ethanmusser:ethanmusser/more-comprehensive-ci-builds

Conversation

@ethanmusser
Copy link
Copy Markdown
Contributor

@ethanmusser ethanmusser commented May 16, 2026

Make some improvements to CI:

  • Update the build workflows to exercise the newer BUILD_OPENCV flag (which breaks some things).
  • Parameterize the CI build workflows and build for a more comprehensive list of platforms, compilers, linkages, build types, configurations, etc.
  • Add a consumer test to the build workflows to ensure that the library can be properly consumed.
  • Bump the vcpkg baseline version to the recent 2026.04.27 release.

Implementation Details

All Workflows

The OS-specific build is broken out to a distinct workflow with parameters dictating the build configuration. See the .github/workflows/build-*.yml files.

Windows Workflows

The dependencies for these are built with vcpkg, and that build can take a long time. There is an additional build-windows-vcpkg-dependencies.yml which performs a single, common build of the dependencies then caches them. These cached dependencies are then downloaded to each Windows runner. The cached dependencies are only rebuilt when either of the vcpkg.json or the vcpkg-configuration.json files are modified.

As a result, the first-time the CI runs there will be an hour-long run to build these dependencies, but all subsequent builds should be much faster.

Comprehensive List of Checks

Build/Install/Consume

These check whether the software builds on this OS/compiler/build configuration, runs the unit test suite, and then attempts to build a toy project that depends on the

Build OS Target OS (blank if same) API Compiler Build Type Linkage JSON Serialization/OpenCV Python Bindings
macOS Latest -- Modern Apple Clang Release Shared Y Y
macOS Latest -- Modern Apple Clang Release Static Y Y
macOS Latest -- Modern Brew LLVM Release Shared Y Y
Ubuntu 22.04 -- Modern GCC Release Shared Y Y
Ubuntu 24.04 -- Legacy GCC Release Shared Y N
Ubuntu 24.04 -- Legacy GCC Release Static Y N
Ubuntu 24.04 -- Modern Clang Debug Shared Y Y
Ubuntu 24.04 -- Modern Clang Release Shared Y Y
Ubuntu 24.04 -- Modern GCC Debug Shared Y Y
Ubuntu 24.04 -- Modern GCC Debug Shared N N
Ubuntu 24.04 -- Modern GCC Debug Static Y Y
Ubuntu 24.04 -- Modern GCC Debug Static N N
Ubuntu 24.04 -- Modern GCC Release Shared Y Y
Ubuntu 24.04 -- Modern GCC Release Shared N N
Ubuntu 24.04 -- Modern GCC Release Static Y Y
Ubuntu 24.04 -- Modern GCC Release Static N N
Ubuntu 24.04 Android 24 (arm64-v8a) Modern GCC Release Shared N N
Windows (2022) -- Modern Clang-cl Release Shared Y Y
Windows (2022) -- Modern MSVC Release Shared Y Y
Windows (2022) -- Modern MSVC Release Static Y Y

Miscellaneous

These are additional checks that perform a specific task.

  • Address Sanitizer (Ubuntu 24.04, Modern API, GCC, Debug, Shared, Y, N)
  • Code Coverage (Ubuntu 24.04, Modern API, GCC, Debug, Shared, Y, N)

Notes

  • In general, I think this is the minimal set of builds that can comprehensively cover intended library target platforms and build configurations. The majority of build configurations are checked on Ubuntu runners, with just the essential configurations run for Windows, macOS, and Android. WE could probably cut out some of the additional compilers if need be, but they may be important for testing things like MULTISENSE_API usage of _MSC_VER where _WIN32 would be more apt #300.
  • There is an additional "keep alive" workflow that periodically hits the vcpkg binary cache. This runs twice a week, which should avoid the 7-day expiry imposed by GitHub. Long-term, this cache should be moved somewhere more permanent that does not impose such a constraint. EDIT: This expiration has been extended to 30-days for this repository.

Future TODOs

@codecov
Copy link
Copy Markdown

codecov Bot commented May 16, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@ethanmusser ethanmusser added the enhancement New feature or request label May 16, 2026
@ethanmusser ethanmusser self-assigned this May 16, 2026
@ethanmusser ethanmusser requested a review from mattalvarado May 16, 2026 00:20
@ethanmusser ethanmusser requested review from dougbalish1, jmonticelli and jyakubik and removed request for dougbalish1 June 3, 2026 17:16
Copy link
Copy Markdown
Collaborator

@mattalvarado mattalvarado left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for doing this!

@ethanmusser
Copy link
Copy Markdown
Contributor Author

Thanks for doing this!

Happy to!

FYI won't let me merge since the old CI status checks never ran (since they don't exist anymore). Might need to disable those specific status checks in the repo settings. Or maybe just need somebody with maintainer rights to make the merge.

@mattalvarado mattalvarado merged commit f80c0fc into carnegierobotics:master Jun 4, 2026
24 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants