diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 05a48fc6..f5e9921f 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -11,3 +11,10 @@ updates: directory: "/" schedule: interval: "weekly" + - package-ecosystem: "github-actions" + # Workflow files stored in the + # default location of `.github/workflows` + directory: "/" + schedule: + interval: "weekly" + target-branch: "humble" diff --git a/.github/mergify.yml b/.github/mergify.yml new file mode 100644 index 00000000..84ad380e --- /dev/null +++ b/.github/mergify.yml @@ -0,0 +1,42 @@ +pull_request_rules: + - name: Backport to humble at reviewers discretion + conditions: + - base=master + - "label=backport-humble" + actions: + backport: + branches: + - humble + + - name: Ask to resolve conflict + conditions: + - conflict + - author!=mergify[bot] + - author!=dependabot[bot] + actions: + comment: + message: This pull request is in conflict. Could you fix it @{{author}}? + + - name: Ask to resolve conflict for backports + conditions: + - conflict + - author=mergify[bot] + actions: + comment: + message: This pull request is in conflict. Could you fix it @bmagyar @destogl @christophfroehlich @saikishor? + + - name: development targets master branch + conditions: + - base!=master + - author!=bmagyar + - author!=destogl + - author!=christophfroehlich + - author!=saikishor + - author!=mergify[bot] + - author!=dependabot[bot] + actions: + comment: + message: | + @{{author}}, all pull requests must be targeted towards the `master` development branch. + Once merged into `master`, it is possible to backport to `{{base}}`, but it must be in `master` + to have these changes reflected into new distributions. diff --git a/.github/workflows/README.md b/.github/workflows/README.md index b90c2ba7..05e7602b 100644 --- a/.github/workflows/README.md +++ b/.github/workflows/README.md @@ -1,9 +1,9 @@ ## Build status -ROS2 Distro | Branch | Build status | Documentation | Released packages +ROS 2 Distro | Branch | Build status | Documentation | Released packages :---------: | :----: | :----------: | :-----------: | :---------------: -**Rolling**
**Jazzy**
**Humble** | [`master`](https://github.com/ros-controls/realtime_tools/tree/master) | [![Binary Build](https://github.com/ros-controls/realtime_tools/actions/workflows/binary-build.yml/badge.svg?branch=master)](https://github.com/ros-controls/realtime_tools/actions/workflows/binary-build.yml?branch=master)
[![Source Build](https://github.com/ros-controls/realtime_tools/actions/workflows/source-build.yml/badge.svg?branch=master)](https://github.com/ros-controls/realtime_tools/actions/workflows/source-build.yml?branch=master) | [API](http://docs.ros.org/en/rolling/p/realtime_tools/) | [realtime_tools](https://index.ros.org/p/realtime_tools/#rolling) - +**Rolling**
**Jazzy** | [`master`](https://github.com/ros-controls/realtime_tools/tree/master) | [![Binary Build](https://github.com/ros-controls/realtime_tools/actions/workflows/rolling-binary-build.yml/badge.svg?branch=master)](https://github.com/ros-controls/realtime_tools/actions/workflows/rolling-binary-build.yml?branch=master)
[![Source Build](https://github.com/ros-controls/realtime_tools/actions/workflows/rolling-source-build.yml/badge.svg?branch=master)](https://github.com/ros-controls/realtime_tools/actions/workflows/rolling-source-build.yml?branch=master) | [API](http://docs.ros.org/en/rolling/p/realtime_tools/) | [realtime_tools](https://index.ros.org/p/realtime_tools/#rolling) +**Humble** | [`humble`](https://github.com/ros-controls/realtime_tools/tree/humble) | [![Binary Build](https://github.com/ros-controls/realtime_tools/actions/workflows/humble-binary-build.yml/badge.svg?branch=master)](https://github.com/ros-controls/realtime_tools/actions/workflows/humble-binary-build.yml?branch=master)
[![Source Build](https://github.com/ros-controls/realtime_tools/actions/workflows/humble-source-build.yml/badge.svg?branch=master)](https://github.com/ros-controls/realtime_tools/actions/workflows/humble-source-build.yml?branch=master) | [API](http://docs.ros.org/en/humble/p/realtime_tools/) | [realtime_tools](https://index.ros.org/p/realtime_tools/#humble) ### Explanation of different build types diff --git a/.github/workflows/humble-abi-compatibility.yml b/.github/workflows/humble-abi-compatibility.yml new file mode 100644 index 00000000..61a7472b --- /dev/null +++ b/.github/workflows/humble-abi-compatibility.yml @@ -0,0 +1,23 @@ +name: Humble ABI Compatibility Check +on: + workflow_dispatch: + pull_request: + branches: + - humble + +concurrency: + # cancel previous runs of the same workflow, except for pushes on humble branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + +jobs: + abi_check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: ros-industrial/industrial_ci@master + env: + ROS_DISTRO: humble + ROS_REPO: main + ABICHECK_URL: github:${{ github.repository }}#${{ github.base_ref }} + NOT_TEST_BUILD: true diff --git a/.github/workflows/humble-binary-build-win.yml b/.github/workflows/humble-binary-build-win.yml new file mode 100644 index 00000000..2f1ea0f5 --- /dev/null +++ b/.github/workflows/humble-binary-build-win.yml @@ -0,0 +1,34 @@ +name: Humble Windows Binary Build +# author: Christoph Fröhlich +# description: 'Build & test all dependencies from released (binary) windows packages.' + +on: + workflow_dispatch: + pull_request: + branches: + - humble + # types: + # - labeled + push: + branches: + - humble + # issue_comment: + # types: + # - created + +concurrency: + # cancel previous runs of the same workflow, except for pushes on humble branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + +jobs: + binary-windows: + # if: | + # (github.event_name == 'issue_comment' && contains(github.event.comment.body, '/check-windows')) || + # (github.event_name == 'pull_request' && contains(github.event.label.name, 'check-windows')) || + # (github.event_name == 'workflow_dispatch') + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-ros-tooling-win-build.yml@master + with: + ros_distro: humble + ref_for_scheduled_build: humble + os_name: windows-2019 diff --git a/.github/workflows/humble-binary-build.yml b/.github/workflows/humble-binary-build.yml new file mode 100644 index 00000000..02a5b715 --- /dev/null +++ b/.github/workflows/humble-binary-build.yml @@ -0,0 +1,42 @@ +name: Humble Binary Build +# author: Denis Štogl +# description: 'Build & test all dependencies from released (binary) packages.' + +on: + workflow_dispatch: + pull_request: + branches: + - humble + push: + branches: + - humble + schedule: + # Run every morning to detect flakiness and broken dependencies + - cron: '03 1 * * *' + +concurrency: + # cancel previous runs of the same workflow, except for pushes on humble branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + +jobs: + binary: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + strategy: + fail-fast: false + matrix: + ROS_REPO: [main, testing] + with: + ros_distro: humble + ros_repo: ${{ matrix.ROS_REPO }} + ref_for_scheduled_build: master + binary_clang: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + with: + ros_distro: humble + ros_repo: testing + ref_for_scheduled_build: humlbe + additional_debs: clang + c_compiler: clang + cxx_compiler: clang++ + not_test_build: true diff --git a/.github/workflows/humble-binary-downstream-build.yml b/.github/workflows/humble-binary-downstream-build.yml new file mode 100644 index 00000000..7c9c3865 --- /dev/null +++ b/.github/workflows/humble-binary-downstream-build.yml @@ -0,0 +1,28 @@ +name: Humble Downstream Build +# description: 'Build & test downstream packages from source.' +# author: Christoph Froehlich + +on: + workflow_dispatch: + pull_request: + branches: + - humble + push: + branches: + - humble + +concurrency: + # cancel previous runs of the same workflow, except for pushes on humble branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + +jobs: + build-downstream: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + with: + ros_distro: humble + ros_repo: testing + ref_for_scheduled_build: master + not_test_build: true + downstream_workspace: ros_controls.humble.repos + not_test_downstream: true diff --git a/.github/workflows/humble-coverage-build.yml b/.github/workflows/humble-coverage-build.yml new file mode 100644 index 00000000..0bb7ef16 --- /dev/null +++ b/.github/workflows/humble-coverage-build.yml @@ -0,0 +1,22 @@ +name: Humble Coverage Build +on: + workflow_dispatch: + push: + branches: + - humble + pull_request: + branches: + - humble + +concurrency: + # cancel previous runs of the same workflow, except for pushes on humble branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + +jobs: + coverage: + name: coverage build + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-build-coverage.yml@master + secrets: inherit + with: + ros_distro: humble diff --git a/.github/workflows/humble-debian-build.yml b/.github/workflows/humble-debian-build.yml new file mode 100644 index 00000000..c4673282 --- /dev/null +++ b/.github/workflows/humble-debian-build.yml @@ -0,0 +1,21 @@ +name: Humble Debian Build +on: + workflow_dispatch: + pull_request: + branches: + - humble + schedule: + # Run every day to detect flakiness and broken dependencies + - cron: '33 2 * * *' + +concurrency: + # cancel previous runs of the same workflow, except for pushes on humble branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + +jobs: + debian_source_build: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-debian-build.yml@master + with: + ros_distro: humble + ref_for_scheduled_build: humble diff --git a/.github/workflows/humble-pre-commit.yml b/.github/workflows/humble-pre-commit.yml new file mode 100644 index 00000000..4c771e04 --- /dev/null +++ b/.github/workflows/humble-pre-commit.yml @@ -0,0 +1,17 @@ +name: Humble Pre-Commit + +on: + workflow_dispatch: + pull_request: + branches: + - humble + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + pre-commit: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-pre-commit.yml@master + with: + ros_distro: humble diff --git a/.github/workflows/humble-rhel-semi-binary-build.yml b/.github/workflows/humble-rhel-semi-binary-build.yml new file mode 100644 index 00000000..fea52cb6 --- /dev/null +++ b/.github/workflows/humble-rhel-semi-binary-build.yml @@ -0,0 +1,21 @@ +name: Humble RHEL Binary Build +on: + workflow_dispatch: + pull_request: + branches: + - humble + schedule: + # Run every day to detect flakiness and broken dependencies + - cron: '03 3 * * *' + +concurrency: + # cancel previous runs of the same workflow, except for pushes on humble branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + +jobs: + rhel_semi_binary_build: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-rhel-binary-build.yml@master + with: + ros_distro: humble + ref_for_scheduled_build: humble diff --git a/.github/workflows/humble-source-build.yml b/.github/workflows/humble-source-build.yml new file mode 100644 index 00000000..566ccafc --- /dev/null +++ b/.github/workflows/humble-source-build.yml @@ -0,0 +1,26 @@ +name: Humble Source Build +on: + workflow_dispatch: + push: + branches: + - humble + schedule: + # Run every day to detect flakiness and broken dependencies + - cron: '03 3 * * *' + +jobs: + source: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-ros-tooling-source-build.yml@master + strategy: + fail-fast: false + matrix: + include: + - ROS_DISTRO: humble + CONTAINER: "" + OS_NAME: ubuntu-22.04 + with: + ros_distro: ${{ matrix.ROS_DISTRO }} + ref: humble + ros2_repo_branch: ${{ matrix.ROS_DISTRO }} + os_name: ${{ matrix.OS_NAME }} + container: ${{ matrix.CONTAINER }} diff --git a/.github/workflows/abi-compatibility.yml b/.github/workflows/rolling-abi-compatibility.yml similarity index 61% rename from .github/workflows/abi-compatibility.yml rename to .github/workflows/rolling-abi-compatibility.yml index 0aa8cf8e..76331f44 100644 --- a/.github/workflows/abi-compatibility.yml +++ b/.github/workflows/rolling-abi-compatibility.yml @@ -1,17 +1,22 @@ -name: ABI Compatibility Check +name: Rolling ABI Compatibility Check on: workflow_dispatch: pull_request: branches: - master +concurrency: + # cancel previous runs of the same workflow, except for pushes on master branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + jobs: abi_check: runs-on: ubuntu-latest strategy: fail-fast: false matrix: - ROS_DISTRO: [humble, jazzy, rolling] + ROS_DISTRO: [jazzy, rolling] steps: - uses: actions/checkout@v4 - uses: ros-industrial/industrial_ci@master diff --git a/.github/workflows/binary-build-win.yml b/.github/workflows/rolling-binary-build-win.yml similarity index 77% rename from .github/workflows/binary-build-win.yml rename to .github/workflows/rolling-binary-build-win.yml index 45bcca3c..836da241 100644 --- a/.github/workflows/binary-build-win.yml +++ b/.github/workflows/rolling-binary-build-win.yml @@ -1,4 +1,4 @@ -name: Windows Binary Build +name: Rolling Windows Binary Build # author: Christoph Fröhlich # description: 'Build & test all dependencies from released (binary) windows packages.' @@ -16,6 +16,11 @@ on: # types: # - created +concurrency: + # cancel previous runs of the same workflow, except for pushes on master branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + jobs: binary-windows: # if: | diff --git a/.github/workflows/binary-build.yml b/.github/workflows/rolling-binary-build.yml similarity index 78% rename from .github/workflows/binary-build.yml rename to .github/workflows/rolling-binary-build.yml index cf478369..78becc36 100644 --- a/.github/workflows/binary-build.yml +++ b/.github/workflows/rolling-binary-build.yml @@ -1,4 +1,4 @@ -name: Binary Build +name: Rolling Binary Build # author: Denis Štogl # description: 'Build & test all dependencies from released (binary) packages.' @@ -14,13 +14,18 @@ on: # Run every morning to detect flakiness and broken dependencies - cron: '03 1 * * *' +concurrency: + # cancel previous runs of the same workflow, except for pushes on master branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + jobs: binary: uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master strategy: fail-fast: false matrix: - ROS_DISTRO: [humble, jazzy, rolling] + ROS_DISTRO: [jazzy, rolling] ROS_REPO: [main, testing] with: ros_distro: ${{ matrix.ROS_DISTRO }} diff --git a/.github/workflows/rolling-binary-downstream-build.yml b/.github/workflows/rolling-binary-downstream-build.yml new file mode 100644 index 00000000..91efb7e3 --- /dev/null +++ b/.github/workflows/rolling-binary-downstream-build.yml @@ -0,0 +1,33 @@ +name: Rolling Downstream Build +# description: 'Build & test downstream packages from source.' +# author: Christoph Froehlich + +on: + workflow_dispatch: + pull_request: + branches: + - master + push: + branches: + - master + +concurrency: + # cancel previous runs of the same workflow, except for pushes on master branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + +jobs: + build-downstream: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [jazzy, rolling] + ROS_REPO: [testing] + with: + ros_distro: ${{ matrix.ROS_DISTRO }} + ros_repo: ${{ matrix.ROS_REPO }} + ref_for_scheduled_build: master + not_test_build: true + downstream_workspace: ros_controls.${{ matrix.ROS_DISTRO }}.repos + not_test_downstream: true diff --git a/.github/workflows/ci-coverage-build.yml b/.github/workflows/rolling-coverage-build.yml similarity index 55% rename from .github/workflows/ci-coverage-build.yml rename to .github/workflows/rolling-coverage-build.yml index 5a5cc611..bb0aaaa7 100644 --- a/.github/workflows/ci-coverage-build.yml +++ b/.github/workflows/rolling-coverage-build.yml @@ -1,4 +1,4 @@ -name: Coverage Build +name: Rolling Coverage Build on: workflow_dispatch: push: @@ -8,6 +8,11 @@ on: branches: - master +concurrency: + # cancel previous runs of the same workflow, except for pushes on master branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + jobs: coverage: name: coverage build diff --git a/.github/workflows/debian-build.yml b/.github/workflows/rolling-debian-build.yml similarity index 61% rename from .github/workflows/debian-build.yml rename to .github/workflows/rolling-debian-build.yml index 34f3f665..ae3ef3bc 100644 --- a/.github/workflows/debian-build.yml +++ b/.github/workflows/rolling-debian-build.yml @@ -1,4 +1,4 @@ -name: Debian Build +name: Rolling Debian Build on: workflow_dispatch: pull_request: @@ -8,6 +8,10 @@ on: # Run every day to detect flakiness and broken dependencies - cron: '33 2 * * *' +concurrency: + # cancel previous runs of the same workflow, except for pushes on master branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} jobs: debian_source_build: @@ -15,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - ROS_DISTRO: [humble, jazzy, rolling] + ROS_DISTRO: [jazzy, rolling] with: ros_distro: ${{ matrix.ROS_DISTRO }} ref_for_scheduled_build: master diff --git a/.github/workflows/ci-pre-commit.yml b/.github/workflows/rolling-pre-commit.yml similarity index 64% rename from .github/workflows/ci-pre-commit.yml rename to .github/workflows/rolling-pre-commit.yml index 7fbfd74c..aec5a783 100644 --- a/.github/workflows/ci-pre-commit.yml +++ b/.github/workflows/rolling-pre-commit.yml @@ -1,4 +1,4 @@ -name: Pre-Commit +name: Rolling Pre-Commit on: workflow_dispatch: @@ -6,12 +6,16 @@ on: branches: - master +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: pre-commit: uses: ros-controls/ros2_control_ci/.github/workflows/reusable-pre-commit.yml@master strategy: fail-fast: false matrix: - ROS_DISTRO: [humble, jazzy, rolling] + ROS_DISTRO: [jazzy, rolling] with: ros_distro: ${{ matrix.ROS_DISTRO }} diff --git a/.github/workflows/rhel-semi-binary-build.yml b/.github/workflows/rolling-rhel-semi-binary-build.yml similarity index 61% rename from .github/workflows/rhel-semi-binary-build.yml rename to .github/workflows/rolling-rhel-semi-binary-build.yml index bcd54694..ab50864c 100644 --- a/.github/workflows/rhel-semi-binary-build.yml +++ b/.github/workflows/rolling-rhel-semi-binary-build.yml @@ -1,4 +1,4 @@ -name: RHEL Binary Build +name: Rolling RHEL Binary Build on: workflow_dispatch: pull_request: @@ -8,6 +8,10 @@ on: # Run every day to detect flakiness and broken dependencies - cron: '03 3 * * *' +concurrency: + # cancel previous runs of the same workflow, except for pushes on master branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} jobs: rhel_semi_binary_build: @@ -15,7 +19,7 @@ jobs: strategy: fail-fast: false matrix: - ROS_DISTRO: [humble, jazzy, rolling] + ROS_DISTRO: [jazzy, rolling] with: ros_distro: ${{ matrix.ROS_DISTRO }} ref_for_scheduled_build: master diff --git a/.github/workflows/rosdoc2.yml b/.github/workflows/rolling-rosdoc2.yml similarity index 54% rename from .github/workflows/rosdoc2.yml rename to .github/workflows/rolling-rosdoc2.yml index 06e67d5f..e938c644 100644 --- a/.github/workflows/rosdoc2.yml +++ b/.github/workflows/rolling-rosdoc2.yml @@ -10,6 +10,10 @@ on: - rosdoc2.yaml - package.xml +concurrency: + # cancel previous runs of the same workflow, except for pushes on master branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} jobs: check: diff --git a/.github/workflows/source-build.yml b/.github/workflows/rolling-source-build.yml similarity index 87% rename from .github/workflows/source-build.yml rename to .github/workflows/rolling-source-build.yml index cc046235..fb885556 100644 --- a/.github/workflows/source-build.yml +++ b/.github/workflows/rolling-source-build.yml @@ -1,4 +1,4 @@ -name: Source Build +name: Rolling Source Build on: workflow_dispatch: push: @@ -15,9 +15,6 @@ jobs: fail-fast: false matrix: include: - - ROS_DISTRO: humble - CONTAINER: "" - OS_NAME: ubuntu-22.04 - ROS_DISTRO: jazzy CONTAINER: ubuntu:24.04 OS_NAME: ubuntu-latest diff --git a/README.md b/README.md index bf569dc7..eeb97059 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ ROS2 Distro | Branch | Build status | Documentation | Released packages :---------: | :----: | :----------: | :-----------: | :---------------: **Rolling** | [`master`](https://github.com/ros-controls/realtime_tools/tree/master) | [![Binary Build](https://github.com/ros-controls/realtime_tools/actions/workflows/binary-build.yml/badge.svg?branch=master)](https://github.com/ros-controls/realtime_tools/actions/workflows/binary-build.yml?branch=master)
[![Source Build](https://github.com/ros-controls/realtime_tools/actions/workflows/source-build.yml/badge.svg?branch=master)](https://github.com/ros-controls/realtime_tools/actions/workflows/source-build.yml?branch=master) | [API](http://docs.ros.org/en/rolling/p/realtime_tools/) | [realtime_tools](https://index.ros.org/p/realtime_tools/#rolling) **Jazzy** | [`master`](https://github.com/ros-controls/realtime_tools/tree/master) | see above | [API](http://docs.ros.org/en/jazzy/p/realtime_tools/) | [realtime_tools](https://index.ros.org/p/realtime_tools/#jazzy) -**Humble** | [`master`](https://github.com/ros-controls/realtime_tools/tree/master) | see above | [API](http://docs.ros.org/en/humble/p/realtime_tools/) | [realtime_tools](https://index.ros.org/p/realtime_tools/#humble) +**Humble** | [`humble`](https://github.com/ros-controls/realtime_tools/tree/humble) | [![Binary Build](https://github.com/ros-controls/realtime_tools/actions/workflows/humble-binary-build.yml/badge.svg?branch=master)](https://github.com/ros-controls/realtime_tools/actions/workflows/humble-binary-build.yml?branch=master)
[![Source Build](https://github.com/ros-controls/realtime_tools/actions/workflows/humble-source-build.yml/badge.svg?branch=master)](https://github.com/ros-controls/realtime_tools/actions/workflows/humble-source-build.yml?branch=master) | [API](http://docs.ros.org/en/humble/p/realtime_tools/) | [realtime_tools](https://index.ros.org/p/realtime_tools/#humble) ### Explanation of different build types