Slim rclcppyy 0.2.0 onto the cppyy_kit suite (deprecation shims) (M3) #25
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: CI | |
| # Enforce the Phase 1 guarantee mechanically: a clean checkout must build, | |
| # pass the smoke suite, and actually publish over the C++ backend, with no | |
| # manual steps beyond `pixi run`. | |
| on: | |
| push: | |
| branches: [main] | |
| pull_request: | |
| # A newer push to the same branch/PR cancels the in-flight run. | |
| concurrency: | |
| group: ci-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| build-test: | |
| name: build + test + bench smoke | |
| runs-on: ubuntu-latest | |
| env: | |
| # M3 pre-release bridge: rclcppyy 0.2.0 imports rclcpp_kit / cppyy_kit (the | |
| # carved-out suite), which is not published to prefix.dev yet. Provide them | |
| # from a source checkout of the cppyy_kit repo; workspace_activation.sh puts | |
| # exactly those two packages on PYTHONPATH via CPPYY_KIT_SRC. Remove this | |
| # (and the checkout step) once rclcppyy depends on the published conda | |
| # packages (channel swap local/awesomebytes; see RELEASING.md). | |
| CPPYY_KIT_SRC: ${{ github.workspace }}/_cppyy_kit | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v5 | |
| - name: Checkout cppyy_kit (suite source for the pre-release bridge) | |
| uses: actions/checkout@v5 | |
| with: | |
| repository: awesomebytes/cppyy_kit | |
| path: _cppyy_kit | |
| - name: Set up pixi | |
| uses: prefix-dev/setup-pixi@v0.10.0 | |
| with: | |
| # Pin pixi to the version that generated and validated pixi.lock | |
| # locally, so CI resolves the same environment. | |
| pixi-version: v0.70.0 | |
| # Default environment only. The `demos` env pulls multi-GB extras | |
| # (opencv / pcl / gstreamer) that none of the CI steps below need. | |
| environments: default | |
| # setup-pixi caches the solved environment keyed on pixi.lock. Only | |
| # write the cache from main so PR runs restore it without racing to | |
| # overwrite the shared entry. | |
| cache: true | |
| cache-write: ${{ github.event_name == 'push' && github.ref == 'refs/heads/main' }} | |
| # The pixi environment's activation provides RMW_IMPLEMENTATION, | |
| # ROS_AUTOMATIC_DISCOVERY_RANGE and LD_LIBRARY_PATH (see pixi.toml | |
| # [activation.env]); every `pixi run` below inherits them, so the | |
| # workflow deliberately sets no ROS env vars of its own. | |
| - name: Build | |
| run: pixi run build | |
| # flake8 scoped to rclcppyy/ + test/ (see .flake8); style codes relaxed, | |
| # real defects (unused imports/locals, etc.) are enforced. | |
| - name: Lint | |
| run: pixi run lint | |
| - name: Test (pub/sub roundtrip, monkeypatch, serialization parity) | |
| run: pixi run test | |
| # End-to-end proof that rclcppyy actually publishes over the C++ backend. | |
| # Cold cppyy JIT of rclcpp on a 2-core hosted runner is far slower than a | |
| # dev box, so the warmup budget is generous; run_benchmarks.py already | |
| # exits non-zero if the subscriber never receives a message. | |
| - name: Bench smoke (assert rclcppyy publishes) | |
| run: pixi run bench --variants rclcppyy --rate 1000 --duration 3 --warmup-timeout 300 --json |