From 6dbd52271fb161057ecc73083cfc5980b0f45b6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christoph=20Fr=C3=B6hlich?= Date: Tue, 17 Dec 2024 23:57:03 +0100 Subject: [PATCH] [CI] clang, downstream and compatibility builds (#94) (cherry picked from commit f9c7c3ab196a98261a317b082ef3b7f29e7a951f) --- .../workflows/humble-abi-compatibility.yml | 5 +++ .github/workflows/humble-binary-build.yml | 7 ++++- .github/workflows/humble-coverage-build.yml | 5 +++ .github/workflows/humble-debian-build.yml | 12 +++---- .github/workflows/humble-pre-commit.yml | 4 +++ .../humble-rhel-semi-binary-build.yml | 13 ++++---- .../workflows/humble-semi-binary-build.yml | 27 +++++++++++----- .../humble-semi-binary-downstream-build.yml | 26 ++++++++++++++++ .github/workflows/humble-source-build.yml | 13 ++++---- .../workflows/rolling-abi-compatibility.yml | 5 +++ .github/workflows/rolling-binary-build.yml | 5 +++ .../workflows/rolling-compatibility-build.yml | 31 +++++++++++++++++++ .github/workflows/rolling-coverage-build.yml | 5 +++ .github/workflows/rolling-debian-build.yml | 4 +++ .github/workflows/rolling-pre-commit.yml | 4 +++ .../rolling-rhel-semi-binary-build.yml | 4 +++ .../workflows/rolling-semi-binary-build.yml | 19 +++++++++++- .../rolling-semi-binary-downstream-build.yml | 31 +++++++++++++++++++ .github/workflows/rolling-source-build.yml | 5 +++ kinematics_interface.humble.repos | 9 ++++++ kinematics_interface.jazzy.repos | 9 ++++++ kinematics_interface.rolling.repos | 9 ++++++ ros_controls.humble.repos | 13 ++++++++ ros_controls.jazzy.repos | 13 ++++++++ ros_controls.rolling.repos | 13 ++++++++ 25 files changed, 263 insertions(+), 28 deletions(-) create mode 100644 .github/workflows/humble-semi-binary-downstream-build.yml create mode 100644 .github/workflows/rolling-compatibility-build.yml create mode 100644 .github/workflows/rolling-semi-binary-downstream-build.yml create mode 100644 ros_controls.humble.repos create mode 100644 ros_controls.jazzy.repos create mode 100644 ros_controls.rolling.repos diff --git a/.github/workflows/humble-abi-compatibility.yml b/.github/workflows/humble-abi-compatibility.yml index 8dd95f4..ba2df50 100644 --- a/.github/workflows/humble-abi-compatibility.yml +++ b/.github/workflows/humble-abi-compatibility.yml @@ -5,6 +5,11 @@ on: 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 diff --git a/.github/workflows/humble-binary-build.yml b/.github/workflows/humble-binary-build.yml index de74e85..24b21f8 100644 --- a/.github/workflows/humble-binary-build.yml +++ b/.github/workflows/humble-binary-build.yml @@ -14,6 +14,11 @@ 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 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 @@ -26,4 +31,4 @@ jobs: ros_distro: ${{ matrix.ROS_DISTRO }} ros_repo: ${{ matrix.ROS_REPO }} upstream_workspace: kinematics_interface-not-released.${{ matrix.ROS_DISTRO }}.repos - ref_for_scheduled_build: master + ref_for_scheduled_build: humble diff --git a/.github/workflows/humble-coverage-build.yml b/.github/workflows/humble-coverage-build.yml index 1d1a6c5..f080f17 100644 --- a/.github/workflows/humble-coverage-build.yml +++ b/.github/workflows/humble-coverage-build.yml @@ -8,6 +8,11 @@ on: 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_humble: name: coverage build - humble diff --git a/.github/workflows/humble-debian-build.yml b/.github/workflows/humble-debian-build.yml index 2d33087..d37fbf1 100644 --- a/.github/workflows/humble-debian-build.yml +++ b/.github/workflows/humble-debian-build.yml @@ -8,15 +8,15 @@ 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 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 - strategy: - fail-fast: false - matrix: - ROS_DISTRO: [humble] with: - ros_distro: ${{ matrix.ROS_DISTRO }} - upstream_workspace: kinematics_interface.${{ matrix.ROS_DISTRO }}.repos + ros_distro: humble + upstream_workspace: kinematics_interface.humble.repos ref_for_scheduled_build: master diff --git a/.github/workflows/humble-pre-commit.yml b/.github/workflows/humble-pre-commit.yml index e197f70..4c771e0 100644 --- a/.github/workflows/humble-pre-commit.yml +++ b/.github/workflows/humble-pre-commit.yml @@ -6,6 +6,10 @@ on: 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 diff --git a/.github/workflows/humble-rhel-semi-binary-build.yml b/.github/workflows/humble-rhel-semi-binary-build.yml index 3bdc033..00e4a24 100644 --- a/.github/workflows/humble-rhel-semi-binary-build.yml +++ b/.github/workflows/humble-rhel-semi-binary-build.yml @@ -8,14 +8,15 @@ on: # Run every day to detect flakiness and broken dependencies - cron: '42 4 * * *' +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 - strategy: - fail-fast: false - matrix: - ROS_DISTRO: [humble] with: - ros_distro: ${{ matrix.ROS_DISTRO }} - upstream_workspace: kinematics_interface.${{ matrix.ROS_DISTRO }}.repos + ros_distro: humble + upstream_workspace: kinematics_interface.humble.repos ref_for_scheduled_build: master diff --git a/.github/workflows/humble-semi-binary-build.yml b/.github/workflows/humble-semi-binary-build.yml index 843b6eb..6e8e975 100644 --- a/.github/workflows/humble-semi-binary-build.yml +++ b/.github/workflows/humble-semi-binary-build.yml @@ -13,16 +13,27 @@ on: # Run every morning to detect flakiness and broken dependencies - cron: '33 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: semi_binary: uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master - strategy: - fail-fast: false - matrix: - ROS_DISTRO: [humble] - ROS_REPO: [main, testing] with: - ros_distro: ${{ matrix.ROS_DISTRO }} - ros_repo: ${{ matrix.ROS_REPO }} - upstream_workspace: kinematics_interface.${{ matrix.ROS_DISTRO }}.repos + ros_distro: humble + ros_repo: testing + upstream_workspace: kinematics_interface.humble.repos ref_for_scheduled_build: master + semi_binary_clang: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + with: + ros_distro: humble + ros_repo: testing + upstream_workspace: kinematics_interface.humble.repos + ref_for_scheduled_build: humble + additional_debs: clang + c_compiler: clang + cxx_compiler: clang++ + not_test_build: true diff --git a/.github/workflows/humble-semi-binary-downstream-build.yml b/.github/workflows/humble-semi-binary-downstream-build.yml new file mode 100644 index 0000000..7def1d1 --- /dev/null +++ b/.github/workflows/humble-semi-binary-downstream-build.yml @@ -0,0 +1,26 @@ +name: Humble Downstream Build +# description: 'Build & test downstream packages from source.' +# author: Christoph Froehlich + +on: + workflow_dispatch: + pull_request: + branches: + - humble + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +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 + upstream_workspace: kinematics_interface.humble.repos + # we test the downstream packages, which are part of our organization + downstream_workspace: ros_controls.humble.repos + not_test_downstream: false diff --git a/.github/workflows/humble-source-build.yml b/.github/workflows/humble-source-build.yml index 4dc984a..18f99ed 100644 --- a/.github/workflows/humble-source-build.yml +++ b/.github/workflows/humble-source-build.yml @@ -8,15 +8,16 @@ 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 humble branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + jobs: source: uses: ros-controls/ros2_control_ci/.github/workflows/reusable-ros-tooling-source-build.yml@master - strategy: - fail-fast: false - matrix: - ROS_DISTRO: [humble] with: - ros_distro: ${{ matrix.ROS_DISTRO }} + ros_distro: humble ref: master - ros2_repo_branch: ${{ matrix.ROS_DISTRO }} + ros2_repo_branch: humble os_name: ubuntu-22.04 diff --git a/.github/workflows/rolling-abi-compatibility.yml b/.github/workflows/rolling-abi-compatibility.yml index a29afb2..47a22ed 100644 --- a/.github/workflows/rolling-abi-compatibility.yml +++ b/.github/workflows/rolling-abi-compatibility.yml @@ -5,6 +5,11 @@ on: branches: - master +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 diff --git a/.github/workflows/rolling-binary-build.yml b/.github/workflows/rolling-binary-build.yml index 9a4a21a..e7847f2 100644 --- a/.github/workflows/rolling-binary-build.yml +++ b/.github/workflows/rolling-binary-build.yml @@ -14,6 +14,11 @@ 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 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 diff --git a/.github/workflows/rolling-compatibility-build.yml b/.github/workflows/rolling-compatibility-build.yml new file mode 100644 index 0000000..fc8acdc --- /dev/null +++ b/.github/workflows/rolling-compatibility-build.yml @@ -0,0 +1,31 @@ +name: Check Rolling Compatibility +# author: Christoph Froehlich +# description: 'Build & test the rolling version on earlier distros.' + +on: + workflow_dispatch: + pull_request: + branches: + - master + push: + branches: + - master + +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: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [humble, jazzy] + ROS_REPO: [testing] + with: + ros_distro: ${{ matrix.ROS_DISTRO }} + ros_repo: ${{ matrix.ROS_REPO }} + upstream_workspace: kinematics_interface.rolling.repos + ref_for_scheduled_build: master diff --git a/.github/workflows/rolling-coverage-build.yml b/.github/workflows/rolling-coverage-build.yml index 3dd2b02..7d7e0e7 100644 --- a/.github/workflows/rolling-coverage-build.yml +++ b/.github/workflows/rolling-coverage-build.yml @@ -8,6 +8,11 @@ on: branches: - master +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_rolling: name: coverage build - rolling diff --git a/.github/workflows/rolling-debian-build.yml b/.github/workflows/rolling-debian-build.yml index 2cabe44..a94e2e4 100644 --- a/.github/workflows/rolling-debian-build.yml +++ b/.github/workflows/rolling-debian-build.yml @@ -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 humble branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} jobs: debian_source_build: diff --git a/.github/workflows/rolling-pre-commit.yml b/.github/workflows/rolling-pre-commit.yml index 8d63051..3a415c7 100644 --- a/.github/workflows/rolling-pre-commit.yml +++ b/.github/workflows/rolling-pre-commit.yml @@ -6,6 +6,10 @@ 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 diff --git a/.github/workflows/rolling-rhel-semi-binary-build.yml b/.github/workflows/rolling-rhel-semi-binary-build.yml index 239fb01..13c8e9f 100644 --- a/.github/workflows/rolling-rhel-semi-binary-build.yml +++ b/.github/workflows/rolling-rhel-semi-binary-build.yml @@ -8,6 +8,10 @@ on: # Run every day to detect flakiness and broken dependencies - cron: '42 4 * * *' +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: diff --git a/.github/workflows/rolling-semi-binary-build.yml b/.github/workflows/rolling-semi-binary-build.yml index b5a6bae..97d0786 100644 --- a/.github/workflows/rolling-semi-binary-build.yml +++ b/.github/workflows/rolling-semi-binary-build.yml @@ -13,6 +13,11 @@ on: # Run every morning to detect flakiness and broken dependencies - cron: '33 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: semi_binary: uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master @@ -20,9 +25,21 @@ jobs: fail-fast: false matrix: ROS_DISTRO: [rolling, jazzy] - ROS_REPO: [main, testing] + ROS_REPO: [testing] with: ros_distro: ${{ matrix.ROS_DISTRO }} ros_repo: ${{ matrix.ROS_REPO }} upstream_workspace: kinematics_interface.${{ matrix.ROS_DISTRO }}.repos ref_for_scheduled_build: master + semi_binary_clang: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + with: + # job for building only, no tests -> one distro is enough + ros_distro: rolling + ros_repo: testing + upstream_workspace: kinematics_interface.rolling.repos + ref_for_scheduled_build: master + additional_debs: clang + c_compiler: clang + cxx_compiler: clang++ + not_test_build: true diff --git a/.github/workflows/rolling-semi-binary-downstream-build.yml b/.github/workflows/rolling-semi-binary-downstream-build.yml new file mode 100644 index 0000000..f36040b --- /dev/null +++ b/.github/workflows/rolling-semi-binary-downstream-build.yml @@ -0,0 +1,31 @@ +name: Rolling Downstream Build +# description: 'Build & test downstream packages from source.' +# author: Christoph Froehlich + +on: + workflow_dispatch: + pull_request: + branches: + - master + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +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 + upstream_workspace: kinematics_interface.${{ matrix.ROS_DISTRO }}.repos + # we test the downstream packages, which are part of our organization + downstream_workspace: ros_controls.${{ matrix.ROS_DISTRO }}.repos + not_test_downstream: false diff --git a/.github/workflows/rolling-source-build.yml b/.github/workflows/rolling-source-build.yml index eb176e3..c0e9bfa 100644 --- a/.github/workflows/rolling-source-build.yml +++ b/.github/workflows/rolling-source-build.yml @@ -8,6 +8,11 @@ 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 humble branch + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: ${{ !startsWith(github.ref, '/refs/heads') }} + jobs: source: uses: ros-controls/ros2_control_ci/.github/workflows/reusable-ros-tooling-source-build.yml@master diff --git a/kinematics_interface.humble.repos b/kinematics_interface.humble.repos index f2fc4ec..e46a52b 100644 --- a/kinematics_interface.humble.repos +++ b/kinematics_interface.humble.repos @@ -1,5 +1,14 @@ repositories: + # needed for ros2_control_test_assets ros2_control: type: git url: https://github.com/ros-controls/ros2_control.git version: humble + realtime_tools: + type: git + url: https://github.com/ros-controls/realtime_tools.git + version: humble + control_msgs: + type: git + url: https://github.com/ros-controls/control_msgs.git + version: humble diff --git a/kinematics_interface.jazzy.repos b/kinematics_interface.jazzy.repos index e22717b..510a340 100644 --- a/kinematics_interface.jazzy.repos +++ b/kinematics_interface.jazzy.repos @@ -1,5 +1,14 @@ repositories: + # needed for ros2_control_test_assets ros2_control: type: git url: https://github.com/ros-controls/ros2_control.git version: master + realtime_tools: + type: git + url: https://github.com/ros-controls/realtime_tools.git + version: master + control_msgs: + type: git + url: https://github.com/ros-controls/control_msgs.git + version: master diff --git a/kinematics_interface.rolling.repos b/kinematics_interface.rolling.repos index e22717b..510a340 100644 --- a/kinematics_interface.rolling.repos +++ b/kinematics_interface.rolling.repos @@ -1,5 +1,14 @@ repositories: + # needed for ros2_control_test_assets ros2_control: type: git url: https://github.com/ros-controls/ros2_control.git version: master + realtime_tools: + type: git + url: https://github.com/ros-controls/realtime_tools.git + version: master + control_msgs: + type: git + url: https://github.com/ros-controls/control_msgs.git + version: master diff --git a/ros_controls.humble.repos b/ros_controls.humble.repos new file mode 100644 index 0000000..85337cb --- /dev/null +++ b/ros_controls.humble.repos @@ -0,0 +1,13 @@ +repositories: + ros-controls/control_toolbox: + type: git + url: https://github.com/ros-controls/control_toolbox.git + version: ros2-master + ros-controls/ros2_control: + type: git + url: https://github.com/ros-controls/ros2_control.git + version: humble + ros-controls/ros2_controllers: + type: git + url: https://github.com/ros-controls/ros2_controllers.git + version: humble diff --git a/ros_controls.jazzy.repos b/ros_controls.jazzy.repos new file mode 100644 index 0000000..775f0f3 --- /dev/null +++ b/ros_controls.jazzy.repos @@ -0,0 +1,13 @@ +repositories: + ros-controls/control_toolbox: + type: git + url: https://github.com/ros-controls/control_toolbox.git + version: ros2-master + ros-controls/ros2_control: + type: git + url: https://github.com/ros-controls/ros2_control.git + version: master + ros-controls/ros2_controllers: + type: git + url: https://github.com/ros-controls/ros2_controllers.git + version: master diff --git a/ros_controls.rolling.repos b/ros_controls.rolling.repos new file mode 100644 index 0000000..775f0f3 --- /dev/null +++ b/ros_controls.rolling.repos @@ -0,0 +1,13 @@ +repositories: + ros-controls/control_toolbox: + type: git + url: https://github.com/ros-controls/control_toolbox.git + version: ros2-master + ros-controls/ros2_control: + type: git + url: https://github.com/ros-controls/ros2_control.git + version: master + ros-controls/ros2_controllers: + type: git + url: https://github.com/ros-controls/ros2_controllers.git + version: master