-
Notifications
You must be signed in to change notification settings - Fork 52
Add comprehensive GitHub Actions CI workflows #79
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
- ci-cpp.yml: Multi-platform C++ builds with ccache and matrix testing - ci-python.yml: Python wheel builds using cibuildwheel for all platforms - ci-ros2.yml: ROS2 Humble/Jazzy builds with colcon integration - lint.yml: Code formatting and style checks for C++, Python, CMake, YAML, and Markdown Features: - Cross-platform builds (Ubuntu 22.04/24.04, macOS-14, Windows) - Comprehensive caching (ccache, pip, pre-commit) - Artifact uploads for wheels, binaries, and test reports - Integration with existing pre-commit configuration 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Complete development setup instructions for C++, Python, and ROS2 - Detailed CI workflow explanations and local reproduction steps - Code style guidelines and testing approaches - Troubleshooting guide for common CI failures - Development tips and best practices 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
This pull request sets up GitHub code scanning for this repository. Once the scans have completed and the checks have passed, the analysis results for this pull request branch will appear on this overview. Once you merge this pull request, the 'Security' tab will show more code scanning analysis results (for example, for the default branch). Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results. For more information about GitHub code scanning, check out the documentation. |
Major fixes: - Fixed ROBIN FetchContent configuration using FetchContent_MakeAvailable() - Set USE_SYSTEM_ROBIN=OFF across all workflows for consistent bundled builds - Simplified Python wheel environment variables and build dependencies - Removed lint workflow as requested (too subtle) - Updated pyproject.toml with proper scikit-build-core configuration Changes: - robin.cmake: Use GIT_REPOSITORY with FetchContent_MakeAvailable() - ci-cpp.yml: Set ROBIN to OFF for all platforms - ci-python.yml: Simplified cibuildwheel configuration, removed system deps - ci-ros2.yml: Updated ROBIN setting for consistency - pyproject.toml: Added cmake.source-dir and build args This should resolve the build failures and enable `pip install kiss_matcher` 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Key changes: - Use ROBIN archive URL instead of Git to avoid network issues - Remove system package installations from Python wheel workflow - Remove ccache setup from Python workflow (handled by cibuildwheel) - Add git dependency for C++ builds to support FetchContent - Keep cmake.source-dir as "." for Python (uses its own CMakeLists.txt) This should resolve the remaining CI failures by letting cibuildwheel handle its own environment and dependencies. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
Critical dependencies added: - libflann-dev: Required for FLANN library used in ROBINMatching and examples - libpcl-dev: Required for PCL (Point Cloud Library) used in ROS and examples - flann/flann-devel: Added to Python wheel builds for manylinux/macOS - boost/boost-devel: Added as dependency for PCL and FLANN Changes across workflows: - ci-cpp.yml: Added libflann-dev, libpcl-dev for Ubuntu; flann, pcl for macOS - ci-python.yml: Added flann-devel, boost-devel for Linux wheels; flann, boost for macOS - ci-ros2.yml: Added libflann-dev to ROS container builds This should resolve the build failures caused by missing FLANN headers. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Removed flann-devel, boost-devel from Linux wheel builds - Removed flann, boost from macOS wheel builds - Keep only essential build tools: git, cmake, ninja - Let bundled dependencies handle FLANN/PCL requirements This should resolve Python wheel build failures caused by conflicting system packages in cibuildwheel containers.
macOS fixes: - Make PCL installation optional on macOS (can be problematic) - Allow build to continue if PCL fails to install Python wheel fixes: - Add CMAKE_POSITION_INDEPENDENT_CODE=ON for shared library builds - Keep bundled dependencies approach for wheel builds This should resolve macOS C++ build failures while maintaining successful Ubuntu builds.
Major simplifications: - Use unified CIBW_BEFORE_BUILD instead of platform-specific commands - Install cmake and ninja via pip instead of system packages - Reduce Python versions to 3.9-3.12 for faster testing - Skip musl builds for now to focus on core functionality - Add CMAKE_BUILD_PARALLEL_LEVEL=2 to control resource usage This approach avoids system package conflicts in cibuildwheel containers.
Critical fix for Python wheel failures: **FLANN Bundled Integration:** - Added flann.cmake with FetchContent from official flann-lib/flann repo - Integrated into find_dependencies.cmake system - Linked flann_cpp to kiss_matcher_core library **CI Configuration Updates:** - Set USE_SYSTEM_FLANN=OFF across all workflows - Python wheels now use bundled FLANN (no system dependency needed) - C++ builds also use bundled FLANN for consistency - ROS2 builds updated with FLANN settings **Build System:** - pyproject.toml: Added -DUSE_SYSTEM_FLANN=OFF flag - All platforms now build with static FLANN library - No external FLANN installation required This should resolve all Python wheel build failures by eliminating the FLANN system dependency that was causing issues in cibuildwheel. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
- Use FLANN master branch instead of 1.9.2 - Disable C bindings to reduce complexity - Add proper target aliasing for flann_cpp_s -> flann_cpp - Handle multiple possible FLANN target names If this still fails, will implement conditional compilation next.
Summary
This PR introduces a complete GitHub Actions CI/CD pipeline for KISS-Matcher, providing robust, fast, and cross-platform continuous integration.
Key Features
CI Design Notes
Architecture Overview
The CI system is split into four specialized workflows:
ci-cpp.yml
- C++ Core & Examples Buildcompile_commands.json
for IDE integrationci-python.yml
- Python Wheelscibuildwheel
for maximum compatibilityci-ros2.yml
- ROS2 Integrationlint.yml
- Code Quality & SecurityPerformance Optimizations
$(nproc)
and--parallel
flags throughoutCross-Platform Considerations
Integration Points
.pre-commit-config.yaml
USE_SYSTEM_*
flags for dependenciespyproject.toml
configurationTest Plan
Workflow Validation
Build Testing (per platform)
Integration Testing
Breaking Changes
None. This is purely additive CI infrastructure.
Documentation
CONTRIBUTING.md
with:Future Enhancements
🤖 Generated with Claude Code