diff --git a/.github/workflows/rolling-abi-compatibility.yml b/.github/workflows/rolling-abi-compatibility.yml index d71893a679..c3a2da4a0a 100644 --- a/.github/workflows/rolling-abi-compatibility.yml +++ b/.github/workflows/rolling-abi-compatibility.yml @@ -1,20 +1,6 @@ name: Rolling - ABI Compatibility Check on: workflow_dispatch: - pull_request: - branches: - - master - paths: - - '**.hpp' - - '**.h' - - '**.cpp' - - '**.py' - - '**.yaml' - - '.github/workflows/rolling-abi-compatibility.yml' - - '**/package.xml' - - '**/CMakeLists.txt' - - 'ros2_control-not-released.rolling.repos' - - 'ros2_control-not-released.lyrical.repos' concurrency: # cancel previous runs of the same workflow, except for pushes on given branches diff --git a/.github/workflows/rolling-binary-build.yml b/.github/workflows/rolling-binary-build.yml index bdf0fd7e34..548751afe2 100644 --- a/.github/workflows/rolling-binary-build.yml +++ b/.github/workflows/rolling-binary-build.yml @@ -4,7 +4,7 @@ name: Rolling Binary Build on: workflow_dispatch: - pull_request: &event + push: branches: - master paths: @@ -18,7 +18,6 @@ on: - '**/CMakeLists.txt' - 'ros2_control-not-released.rolling.repos' - 'ros2_control-not-released.lyrical.repos' - push: *event schedule: # Run every morning to detect flakiness and broken dependencies - cron: '03 1 * * MON-FRI' diff --git a/.github/workflows/rolling-compatibility-humble-binary-build.yml b/.github/workflows/rolling-compatibility-humble-binary-build.yml index a5bec4e952..a19dde5afa 100644 --- a/.github/workflows/rolling-compatibility-humble-binary-build.yml +++ b/.github/workflows/rolling-compatibility-humble-binary-build.yml @@ -4,7 +4,7 @@ name: Check Rolling Compatibility on Humble on: workflow_dispatch: - pull_request: &event + push: branches: - master paths: @@ -17,7 +17,6 @@ on: - '**/package.xml' - '**/CMakeLists.txt' - 'ros2_control.rolling.repos' - push: *event concurrency: # cancel previous runs of the same workflow, except for pushes on given branches diff --git a/.github/workflows/rolling-compatibility-jazzy-binary-build.yml b/.github/workflows/rolling-compatibility-jazzy-binary-build.yml index 01d8ba423f..40c30ac32d 100644 --- a/.github/workflows/rolling-compatibility-jazzy-binary-build.yml +++ b/.github/workflows/rolling-compatibility-jazzy-binary-build.yml @@ -4,7 +4,7 @@ name: Check Rolling Compatibility on Jazzy on: workflow_dispatch: - pull_request: &event + push: branches: - master paths: @@ -17,7 +17,6 @@ on: - '**/package.xml' - '**/CMakeLists.txt' - 'ros2_control.rolling.repos' - push: *event concurrency: # cancel previous runs of the same workflow, except for pushes on given branches diff --git a/.github/workflows/rolling-compatibility-kilted-binary-build.yml b/.github/workflows/rolling-compatibility-kilted-binary-build.yml index 45097e424e..14e9be0c7f 100644 --- a/.github/workflows/rolling-compatibility-kilted-binary-build.yml +++ b/.github/workflows/rolling-compatibility-kilted-binary-build.yml @@ -4,7 +4,7 @@ name: Check Rolling Compatibility on Kilted on: workflow_dispatch: - pull_request: &event + push: branches: - master paths: @@ -17,7 +17,6 @@ on: - '**/package.xml' - '**/CMakeLists.txt' - 'ros2_control.rolling.repos' - push: *event concurrency: # cancel previous runs of the same workflow, except for pushes on given branches diff --git a/.github/workflows/rolling-compatibility-lyrical-binary-build.yml b/.github/workflows/rolling-compatibility-lyrical-binary-build.yml index 8f849cf1ba..0acd413431 100644 --- a/.github/workflows/rolling-compatibility-lyrical-binary-build.yml +++ b/.github/workflows/rolling-compatibility-lyrical-binary-build.yml @@ -4,7 +4,7 @@ name: Check Rolling Compatibility on Lyrical on: workflow_dispatch: - pull_request: &event + push: branches: - master paths: @@ -17,7 +17,6 @@ on: - '**/package.xml' - '**/CMakeLists.txt' - 'ros2_control.rolling.repos' - push: *event concurrency: # cancel previous runs of the same workflow, except for pushes on given branches diff --git a/.github/workflows/rolling-coverage-build.yml b/.github/workflows/rolling-coverage-build.yml index bef06d3622..4ecbf49047 100644 --- a/.github/workflows/rolling-coverage-build.yml +++ b/.github/workflows/rolling-coverage-build.yml @@ -1,7 +1,7 @@ name: Coverage Build - Rolling on: workflow_dispatch: - pull_request: &event + push: branches: - master paths: @@ -15,7 +15,6 @@ on: - '**/CMakeLists.txt' - 'ros2_control.rolling.repos' - 'codecov.yml' - push: *event concurrency: # cancel previous runs of the same workflow, except for pushes on given branches diff --git a/.github/workflows/rolling-debian-build.yml b/.github/workflows/rolling-debian-build.yml index d02ad72ffb..35bed4f96e 100644 --- a/.github/workflows/rolling-debian-build.yml +++ b/.github/workflows/rolling-debian-build.yml @@ -1,7 +1,7 @@ name: Rolling - Debian Semi-Binary Build on: workflow_dispatch: - pull_request: &event + push: branches: - master paths: @@ -15,7 +15,6 @@ on: - '**/CMakeLists.txt' - 'ros2_control.rolling.repos' - 'ros2_control.lyrical.repos' - push: *event concurrency: # cancel previous runs of the same workflow, except for pushes on given branches diff --git a/.github/workflows/rolling-pr-gated-ci.yml b/.github/workflows/rolling-pr-gated-ci.yml new file mode 100644 index 0000000000..dd2d5a7838 --- /dev/null +++ b/.github/workflows/rolling-pr-gated-ci.yml @@ -0,0 +1,175 @@ +name: Rolling PR Gated CI + +on: + workflow_dispatch: + pull_request: + branches: + - master + paths: + - '**.hpp' + - '**.h' + - '**.cpp' + - '**.py' + - '**.yaml' + - '.github/workflows/rolling-pr-gated-ci.yml' + - '**/package.xml' + - '**/CMakeLists.txt' + - 'ros2_control.rolling.repos' + - 'ros2_control.lyrical.repos' + - 'ros2_control-not-released.rolling.repos' + - 'ros2_control-not-released.lyrical.repos' + - 'ros_controls.rolling.repos' + - 'ros_controls.lyrical.repos' + - 'codecov.yml' + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + pre_commit_rolling: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-pre-commit.yml@master + with: + ros_distro: rolling + + pre_commit_lyrical: + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-pre-commit.yml@master + with: + ros_distro: lyrical + + semi-binary: + needs: [pre_commit_rolling, pre_commit_lyrical] + if: ${{ always() && needs.pre_commit_rolling.result == 'success' && needs.pre_commit_lyrical.result == 'success' }} + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [lyrical, rolling] + with: + ros_distro: ${{ matrix.ROS_DISTRO }} + ros_repo: testing + upstream_workspace: ros2_control.${{ matrix.ROS_DISTRO }}.repos + ref_for_scheduled_build: master + + semi-binary-clang: + needs: [pre_commit_rolling, pre_commit_lyrical] + if: ${{ always() && needs.pre_commit_rolling.result == 'success' && needs.pre_commit_lyrical.result == 'success' }} + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [rolling] + with: + ros_distro: ${{ matrix.ROS_DISTRO }} + ros_repo: testing + upstream_workspace: ros2_control.${{ matrix.ROS_DISTRO }}.repos + ref_for_scheduled_build: master + additional_debs: clang + c_compiler: clang + cxx_compiler: clang++ + not_test_build: true + + binary: + needs: [pre_commit_rolling, pre_commit_lyrical] + if: ${{ always() && needs.pre_commit_rolling.result == 'success' && needs.pre_commit_lyrical.result == 'success' }} + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [lyrical, rolling] + ROS_REPO: [main, testing] + exclude: + - ROS_DISTRO: rolling + ROS_REPO: main + with: + ros_distro: ${{ matrix.ROS_DISTRO }} + ros_repo: ${{ matrix.ROS_REPO }} + upstream_workspace: ros2_control-not-released.${{ matrix.ROS_DISTRO }}.repos + ref_for_scheduled_build: master + + coverage_rolling: + needs: [pre_commit_rolling, pre_commit_lyrical] + if: ${{ always() && needs.pre_commit_rolling.result == 'success' && needs.pre_commit_lyrical.result == 'success' }} + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-build-coverage.yml@master + secrets: inherit + with: + ros_distro: rolling + + compatibility-build: + needs: [pre_commit_rolling, pre_commit_lyrical] + if: ${{ always() && needs.pre_commit_rolling.result == 'success' && needs.pre_commit_lyrical.result == 'success' }} + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [humble, jazzy, kilted, lyrical] + with: + ros_distro: ${{ matrix.ROS_DISTRO }} + ros_repo: testing + upstream_workspace: ros2_control.rolling.repos + ref_for_scheduled_build: master + + abi_check: + needs: [pre_commit_rolling, pre_commit_lyrical] + if: ${{ always() && needs.pre_commit_rolling.result == 'success' && needs.pre_commit_lyrical.result == 'success' }} + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-abi-check.yml@master + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [lyrical, rolling] + with: + ros_distro: ${{ matrix.ROS_DISTRO }} + + debian_semi_binary_build: + needs: [pre_commit_rolling, pre_commit_lyrical] + if: ${{ always() && needs.pre_commit_rolling.result == 'success' && needs.pre_commit_lyrical.result == 'success' }} + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-debian-build.yml@master + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [lyrical, rolling] + with: + ros_distro: ${{ matrix.ROS_DISTRO }} + upstream_workspace: ros2_control.${{ matrix.ROS_DISTRO }}.repos + ref_for_scheduled_build: master + skip_packages: rqt_controller_manager + + rhel_semi_binary_build: + needs: [pre_commit_rolling, pre_commit_lyrical] + if: ${{ always() && needs.pre_commit_rolling.result == 'success' && needs.pre_commit_lyrical.result == 'success' }} + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-rhel-binary-build.yml@master + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [lyrical, rolling] + with: + ros_distro: ${{ matrix.ROS_DISTRO }} + upstream_workspace: ros2_control.${{ matrix.ROS_DISTRO }}.repos + ref_for_scheduled_build: master + skip_packages: rqt_controller_manager + + binary-windows: + needs: [pre_commit_rolling, pre_commit_lyrical] + if: ${{ always() && needs.pre_commit_rolling.result == 'success' && needs.pre_commit_lyrical.result == 'success' }} + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-ros-tooling-win-build.yml@master + with: + ros_distro: rolling + pixi_dependencies: typeguard jinja2 boost compilers cpp-expected + upstream_workspace: ros2_control.rolling.repos + + build-downstream: + needs: [semi-binary, semi-binary-clang, binary, coverage_rolling, compatibility-build] + if: ${{ always() && needs['semi-binary'].outputs.build_target_workspace_succeeded == 'true' && needs['semi-binary-clang'].outputs.build_target_workspace_succeeded == 'true' && needs.binary.outputs.build_target_workspace_succeeded == 'true' && needs.coverage_rolling.result == 'success' && needs['compatibility-build'].outputs.build_target_workspace_succeeded == 'true' }} + uses: ros-controls/ros2_control_ci/.github/workflows/reusable-industrial-ci-with-cache.yml@master + strategy: + fail-fast: false + matrix: + ROS_DISTRO: [lyrical, rolling] + with: + ros_distro: ${{ matrix.ROS_DISTRO }} + ros_repo: testing + ref_for_scheduled_build: master + upstream_workspace: ros2_control.${{ matrix.ROS_DISTRO }}.repos + not_test_build: true + downstream_workspace: ros_controls.${{ matrix.ROS_DISTRO }}.repos + not_test_downstream: false diff --git a/.github/workflows/rolling-pre-commit.yml b/.github/workflows/rolling-pre-commit.yml index 7b3fb229bd..3a2593040c 100644 --- a/.github/workflows/rolling-pre-commit.yml +++ b/.github/workflows/rolling-pre-commit.yml @@ -2,9 +2,6 @@ name: Pre-Commit - Rolling on: workflow_dispatch: - pull_request: - branches: - - master push: branches: - master diff --git a/.github/workflows/rolling-rhel-binary-build.yml b/.github/workflows/rolling-rhel-binary-build.yml index c16da77161..cfabde17a3 100644 --- a/.github/workflows/rolling-rhel-binary-build.yml +++ b/.github/workflows/rolling-rhel-binary-build.yml @@ -1,7 +1,7 @@ name: Rolling - RHEL Semi-Binary Build on: workflow_dispatch: - pull_request: &event + push: branches: - master paths: @@ -15,7 +15,6 @@ on: - '**/CMakeLists.txt' - 'ros2_control.rolling.repos' - 'ros2_control.lyrical.repos' - push: *event concurrency: # cancel previous runs of the same workflow, except for pushes on given branches group: ${{ github.workflow }}-${{ github.ref }} diff --git a/.github/workflows/rolling-semi-binary-build-win.yml b/.github/workflows/rolling-semi-binary-build-win.yml index e196ca3b47..25555dca2c 100644 --- a/.github/workflows/rolling-semi-binary-build-win.yml +++ b/.github/workflows/rolling-semi-binary-build-win.yml @@ -4,7 +4,7 @@ name: Rolling Windows Semi-Binary Build on: workflow_dispatch: - pull_request: &event + push: branches: - master paths: @@ -17,7 +17,6 @@ on: - 'ros2_control.rolling.repos' - '**/package.xml' - '**/CMakeLists.txt' - push: *event concurrency: # cancel previous runs of the same workflow, except for pushes on given branches diff --git a/.github/workflows/rolling-semi-binary-build.yml b/.github/workflows/rolling-semi-binary-build.yml index 42cd8664c0..3e0d1e0946 100644 --- a/.github/workflows/rolling-semi-binary-build.yml +++ b/.github/workflows/rolling-semi-binary-build.yml @@ -4,7 +4,7 @@ name: Rolling Semi-Binary Build on: workflow_dispatch: - pull_request: &event + push: branches: - master paths: @@ -18,7 +18,6 @@ on: - '**/CMakeLists.txt' - 'ros2_control.rolling.repos' - 'ros2_control.lyrical.repos' - push: *event schedule: # Run every morning to detect flakiness and broken dependencies - cron: '03 1 * * MON-FRI' diff --git a/.github/workflows/rolling-semi-binary-downstream-build.yml b/.github/workflows/rolling-semi-binary-downstream-build.yml index e011356196..9edf461489 100644 --- a/.github/workflows/rolling-semi-binary-downstream-build.yml +++ b/.github/workflows/rolling-semi-binary-downstream-build.yml @@ -4,20 +4,6 @@ name: Rolling Downstream Build on: workflow_dispatch: - pull_request: - branches: - - master - paths: - - '**.hpp' - - '**.h' - - '**.cpp' - - '**.py' - - '**.yaml' - - '.github/workflows/rolling-semi-binary-downstream-build.yml' - - '**/package.xml' - - '**/CMakeLists.txt' - - 'ros_controls.rolling.repos' - - 'ros_controls.lyrical.repos' concurrency: group: ${{ github.workflow }}-${{ github.ref }}