Generate bindings #65
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: Generate bindings | |
| on: | |
| schedule: | |
| # Run the CI at 00:11 UTC every night | |
| # We pick an arbitrary time outside of most of the world's work hours | |
| # to minimize the likelihood of running alongside a heavy workload. | |
| - cron: '11 0 * * *' | |
| workflow_dispatch: | |
| env: | |
| CARGO_TERM_COLOR: always | |
| jobs: | |
| build: | |
| strategy: | |
| matrix: | |
| ros_distribution: | |
| - humble | |
| - jazzy | |
| - kilted | |
| - rolling | |
| include: | |
| # Humble Hawksbill (May 2022 - May 2027) | |
| - docker_image: rostooling/setup-ros-docker:ubuntu-jammy-ros-humble-ros-base-latest | |
| ros_distribution: humble | |
| ros_version: 2 | |
| # Jazzy Jalisco (May 2024 - May 2029) | |
| - docker_image: rostooling/setup-ros-docker:ubuntu-noble-ros-jazzy-ros-base-latest | |
| ros_distribution: jazzy | |
| ros_version: 2 | |
| # Kilted Kaiju (May 2025 - Dec 2026) | |
| - docker_image: rostooling/setup-ros-docker:ubuntu-noble-ros-kilted-ros-base-latest | |
| ros_distribution: kilted | |
| ros_version: 2 | |
| # Rolling Ridley (June 2020 - Present) | |
| - docker_image: rostooling/setup-ros-docker:ubuntu-noble-ros-rolling-ros-base-latest | |
| ros_distribution: rolling | |
| ros_version: 2 | |
| runs-on: ubuntu-latest | |
| permissions: | |
| contents: write | |
| pull-requests: write | |
| container: | |
| image: ${{ matrix.docker_image }} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 0 | |
| - name: Setup ROS environment | |
| uses: ros-tooling/[email protected] | |
| with: | |
| required-ros-distributions: ${{ matrix.ros_distribution }} | |
| use-ros2-testing: ${{ matrix.ros_distribution == 'rolling' }} | |
| - name: Setup Rust | |
| uses: dtolnay/[email protected] | |
| with: | |
| components: clippy, rustfmt | |
| - name: Install cargo binstall | |
| run: curl -L --proto '=https' --tlsv1.2 -sSf https://raw.githubusercontent.com/cargo-bins/cargo-binstall/main/install-from-binstall-release.sh | bash | |
| - name: Install bindgen | |
| run: cargo binstall -y bindgen-cli | |
| - name: Install GitHub CLI tool | |
| run: | | |
| (type -p wget >/dev/null || (sudo apt update && sudo apt install wget -y)) \ | |
| && sudo mkdir -p -m 755 /etc/apt/keyrings \ | |
| && out=$(mktemp) && wget -nv -O$out https://cli.github.com/packages/githubcli-archive-keyring.gpg \ | |
| && cat $out | sudo tee /etc/apt/keyrings/githubcli-archive-keyring.gpg > /dev/null \ | |
| && sudo chmod go+r /etc/apt/keyrings/githubcli-archive-keyring.gpg \ | |
| && sudo mkdir -p -m 755 /etc/apt/sources.list.d \ | |
| && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null \ | |
| && sudo apt update \ | |
| && sudo apt install gh -y | |
| - name: Generate bindings | |
| run: | | |
| . /opt/ros/${{ matrix.ros_distribution }}/setup.sh | |
| cd rclrs/src | |
| ../generate_bindings.py rcl_wrapper.h ${{ matrix.ros_distribution }} . | |
| - name: Submit PR | |
| run: | | |
| cd $GITHUB_WORKSPACE | |
| git config --global --add safe.directory $GITHUB_WORKSPACE | |
| if git diff --exit-code; then | |
| exit 0 | |
| fi | |
| git config --global user.email "[email protected]" | |
| git config --global user.name "GitHub Action" | |
| git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} | |
| git remote update origin | |
| CREATE_PR=0 | |
| if ! git checkout update-bindings-${{ matrix.ros_distribution }}; then | |
| CREATE_PR=1 | |
| git checkout -b update-bindings-${{ matrix.ros_distribution }} | |
| fi | |
| git add rclrs/src/rcl_bindings_generated_${{ matrix.ros_distribution }}.rs | |
| git commit -m "Regenerate bindings for ${{ matrix.ros_distribution }}" | |
| git push -u origin update-bindings-${{ matrix.ros_distribution }} | |
| if [ $CREATE_PR -eq 1 ]; then | |
| gh pr create --base main --head update-bindings-${{ matrix.ros_distribution }} --title "Regenerate bindings for ${{ matrix.ros_distribution }}" --body "This PR regenerates the bindings for ${{ matrix.ros_distribution }}." | |
| fi | |
| env: | |
| GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} | |
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |