From 1a51c7ad07b63b7bfb5a54816769bdf35ec67718 Mon Sep 17 00:00:00 2001 From: Felix Exner Date: Thu, 10 Oct 2024 13:39:56 +0200 Subject: [PATCH 1/3] Add automatic issue creation on failed CI runs --- .github/issue_template_failed_ci.md | 32 +++++++++++++++++++ .github/workflows/humble-binary-main.yml | 1 + .github/workflows/humble-binary-testing.yml | 1 + .github/workflows/humble-semi-binary-main.yml | 1 + .../workflows/humble-semi-binary-testing.yml | 1 + .github/workflows/iron-binary-main.yml | 1 + .github/workflows/iron-binary-testing.yml | 1 + .github/workflows/iron-semi-binary-main.yml | 1 + .../workflows/iron-semi-binary-testing.yml | 1 + .github/workflows/jazzy-binary-main.yml | 1 + .github/workflows/jazzy-binary-testing.yml | 1 + .github/workflows/jazzy-semi-binary-main.yml | 1 + .../workflows/jazzy-semi-binary-testing.yml | 1 + .github/workflows/reusable_ici.yml | 17 +++++++++- .github/workflows/rolling-binary-main.yml | 1 + .github/workflows/rolling-binary-testing.yml | 1 + .../workflows/rolling-semi-binary-main.yml | 1 + .../workflows/rolling-semi-binary-testing.yml | 1 + 18 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 .github/issue_template_failed_ci.md diff --git a/.github/issue_template_failed_ci.md b/.github/issue_template_failed_ci.md new file mode 100644 index 000000000..8cb1a0f64 --- /dev/null +++ b/.github/issue_template_failed_ci.md @@ -0,0 +1,32 @@ +--- +title: Failed build job {{ env.UPSTREAM_TYPE }} ({{ env.DISTRO }}/{{ env.REPO }}) +labels: CI +--- +The scheduled build for branch `{{ env.REF }}` failed. + +**Upstream build type:** {{ env.UPSTREAM_TYPE }} +**ROS DISTRO:** {{ env.DISTRO }} +**Repo:** {{ env.REPO }} + +Please check the log output for details: {{ env.URL }} + +Please note that this issue has different implications based on the build type. To get an idea of +the complete situation, please have a look at the [current build +status](https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/blob/main/ci_status.md) + +- If the *Upstream build type* is "binary": + - If the *Repo* is "testing", it is well possible that an upstream package did make an + API-breaking change that hasn't been released, yet. If the semi-binary builds are OK, this + package has made the necessary changes, already. It is expected to sort itself out by itself, + once the upstream package has been released. If the semi-binary builds are failing, as well, + this package has to be updated. + - If the *Repo* is "main", but the "testing" builds are green, we are only waiting for a Sync + to happen. +- If the *Upstream build type* is "semi-binary": + - If both, main and testing, are failing, there has been an API-breaking change in an upstream + package. This package should get updated soon. If the upstream package gets released without + updating this package, the "binary / testing" builds will also fail. In this case, this package + needs to get updated and released ASAP. + - If not both, main and testing, are failing, there is an upstream dependency with an API-breaking + change that is not part of the upstream workspace. This should rarely happen and needs action + from the package maintainers. diff --git a/.github/workflows/humble-binary-main.yml b/.github/workflows/humble-binary-main.yml index af1e46ef7..589afd75e 100644 --- a/.github/workflows/humble-binary-main.yml +++ b/.github/workflows/humble-binary-main.yml @@ -14,5 +14,6 @@ jobs: with: ros_distro: humble ros_repo: main + upstream_type: binary upstream_workspace: Universal_Robots_ROS2_Driver-not-released.humble.repos ref_for_scheduled_build: humble diff --git a/.github/workflows/humble-binary-testing.yml b/.github/workflows/humble-binary-testing.yml index e670e7295..7c4c1d8bb 100644 --- a/.github/workflows/humble-binary-testing.yml +++ b/.github/workflows/humble-binary-testing.yml @@ -14,5 +14,6 @@ jobs: with: ros_distro: humble ros_repo: testing + upstream_type: binary upstream_workspace: Universal_Robots_ROS2_Driver-not-released.humble.repos ref_for_scheduled_build: humble diff --git a/.github/workflows/humble-semi-binary-main.yml b/.github/workflows/humble-semi-binary-main.yml index a42d19c9e..1501c5bf4 100644 --- a/.github/workflows/humble-semi-binary-main.yml +++ b/.github/workflows/humble-semi-binary-main.yml @@ -14,5 +14,6 @@ jobs: with: ros_distro: humble ros_repo: main + upstream_type: semi-binary upstream_workspace: Universal_Robots_ROS2_Driver.humble.repos ref_for_scheduled_build: humble diff --git a/.github/workflows/humble-semi-binary-testing.yml b/.github/workflows/humble-semi-binary-testing.yml index 141eb71f2..4400ff586 100644 --- a/.github/workflows/humble-semi-binary-testing.yml +++ b/.github/workflows/humble-semi-binary-testing.yml @@ -14,5 +14,6 @@ jobs: with: ros_distro: humble ros_repo: testing + upstream_type: semi-binary upstream_workspace: Universal_Robots_ROS2_Driver.humble.repos ref_for_scheduled_build: humble diff --git a/.github/workflows/iron-binary-main.yml b/.github/workflows/iron-binary-main.yml index d089e1dc6..2170d1a21 100644 --- a/.github/workflows/iron-binary-main.yml +++ b/.github/workflows/iron-binary-main.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: iron ros_repo: main + upstream_type: binary upstream_workspace: Universal_Robots_ROS2_Driver-not-released.iron.repos ref_for_scheduled_build: iron diff --git a/.github/workflows/iron-binary-testing.yml b/.github/workflows/iron-binary-testing.yml index ba8918604..87184e3a1 100644 --- a/.github/workflows/iron-binary-testing.yml +++ b/.github/workflows/iron-binary-testing.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: iron ros_repo: testing + upstream_type: binary upstream_workspace: Universal_Robots_ROS2_Driver-not-released.iron.repos ref_for_scheduled_build: iron diff --git a/.github/workflows/iron-semi-binary-main.yml b/.github/workflows/iron-semi-binary-main.yml index 01340fd50..9861f5733 100644 --- a/.github/workflows/iron-semi-binary-main.yml +++ b/.github/workflows/iron-semi-binary-main.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: iron ros_repo: main + upstream_type: semi-binary upstream_workspace: Universal_Robots_ROS2_Driver.iron.repos ref_for_scheduled_build: iron diff --git a/.github/workflows/iron-semi-binary-testing.yml b/.github/workflows/iron-semi-binary-testing.yml index 809cea567..9e4a477d2 100644 --- a/.github/workflows/iron-semi-binary-testing.yml +++ b/.github/workflows/iron-semi-binary-testing.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: iron ros_repo: testing + upstream_type: semi-binary upstream_workspace: Universal_Robots_ROS2_Driver.iron.repos ref_for_scheduled_build: iron diff --git a/.github/workflows/jazzy-binary-main.yml b/.github/workflows/jazzy-binary-main.yml index 5b8912f7a..b3cef8ff6 100644 --- a/.github/workflows/jazzy-binary-main.yml +++ b/.github/workflows/jazzy-binary-main.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: jazzy ros_repo: main + upstream_type: binary upstream_workspace: Universal_Robots_ROS2_Driver-not-released.jazzy.repos ref_for_scheduled_build: main diff --git a/.github/workflows/jazzy-binary-testing.yml b/.github/workflows/jazzy-binary-testing.yml index ed4bb7f09..66785a2d7 100644 --- a/.github/workflows/jazzy-binary-testing.yml +++ b/.github/workflows/jazzy-binary-testing.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: jazzy ros_repo: testing + upstream_type: binary upstream_workspace: Universal_Robots_ROS2_Driver-not-released.jazzy.repos ref_for_scheduled_build: main diff --git a/.github/workflows/jazzy-semi-binary-main.yml b/.github/workflows/jazzy-semi-binary-main.yml index 26fc5b8e7..ccf34e2e5 100644 --- a/.github/workflows/jazzy-semi-binary-main.yml +++ b/.github/workflows/jazzy-semi-binary-main.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: jazzy ros_repo: main + upstream_type: semi-binary upstream_workspace: Universal_Robots_ROS2_Driver.jazzy.repos ref_for_scheduled_build: main diff --git a/.github/workflows/jazzy-semi-binary-testing.yml b/.github/workflows/jazzy-semi-binary-testing.yml index e423d0ef6..41194c7a2 100644 --- a/.github/workflows/jazzy-semi-binary-testing.yml +++ b/.github/workflows/jazzy-semi-binary-testing.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: jazzy ros_repo: testing + upstream_type: semi-binary upstream_workspace: Universal_Robots_ROS2_Driver.jazzy.repos ref_for_scheduled_build: main diff --git a/.github/workflows/reusable_ici.yml b/.github/workflows/reusable_ici.yml index 3a39b4c92..faae8ba71 100644 --- a/.github/workflows/reusable_ici.yml +++ b/.github/workflows/reusable_ici.yml @@ -9,7 +9,10 @@ on: default: '' required: false type: string - + upstream_type: + description: 'Binary or semi-binary build' + required: true + type: string upstream_workspace: description: 'UPSTREAM_WORKSPACE variable for industrial_ci. Usually path to local .repos file.' required: true @@ -52,3 +55,15 @@ jobs: ROS_REPO: ${{ inputs.ros_repo }} CMAKE_ARGS: -DUR_ROBOT_DRIVER_BUILD_INTEGRATION_TESTS=ON ADDITIONAL_DEBS: docker.io netcat-openbsd # Needed for integration tests + - uses: JasonEtco/create-an-issue@v2 + if: ${{ always() && (steps.ici.outputs.build_target_workspace == '2' || steps.ici.outputs.target_test_results == '1') && github.event_name == 'schedule'}} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + UPSTREAM_TYPE: ${{ inputs.upstream_type }} + REF: ${{ inputs.ref_for_scheduled_build }} + DISTRO: ${{ inputs.ros_distro }} + REPO: ${{ inputs.ros_repo }} + URL: ${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }} + with: + update_existing: true + filename: .github/issue_template_failed_ci.md diff --git a/.github/workflows/rolling-binary-main.yml b/.github/workflows/rolling-binary-main.yml index 342c857d4..3f143b22a 100644 --- a/.github/workflows/rolling-binary-main.yml +++ b/.github/workflows/rolling-binary-main.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: rolling ros_repo: main + upstream_type: binary upstream_workspace: Universal_Robots_ROS2_Driver-not-released.rolling.repos ref_for_scheduled_build: main diff --git a/.github/workflows/rolling-binary-testing.yml b/.github/workflows/rolling-binary-testing.yml index 54384986c..96affe7da 100644 --- a/.github/workflows/rolling-binary-testing.yml +++ b/.github/workflows/rolling-binary-testing.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: rolling ros_repo: testing + upstream_type: binary upstream_workspace: Universal_Robots_ROS2_Driver-not-released.rolling.repos ref_for_scheduled_build: main diff --git a/.github/workflows/rolling-semi-binary-main.yml b/.github/workflows/rolling-semi-binary-main.yml index c5399e376..f4c1256d8 100644 --- a/.github/workflows/rolling-semi-binary-main.yml +++ b/.github/workflows/rolling-semi-binary-main.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: rolling ros_repo: main + upstream_type: semi-binary upstream_workspace: Universal_Robots_ROS2_Driver.rolling.repos ref_for_scheduled_build: main diff --git a/.github/workflows/rolling-semi-binary-testing.yml b/.github/workflows/rolling-semi-binary-testing.yml index c4d06bf8c..6fe982cbb 100644 --- a/.github/workflows/rolling-semi-binary-testing.yml +++ b/.github/workflows/rolling-semi-binary-testing.yml @@ -19,5 +19,6 @@ jobs: with: ros_distro: rolling ros_repo: testing + upstream_type: semi-binary upstream_workspace: Universal_Robots_ROS2_Driver.rolling.repos ref_for_scheduled_build: main From 59a37f971d1af68a3e21b2db2cec288176a42ef6 Mon Sep 17 00:00:00 2001 From: Felix Exner Date: Thu, 10 Oct 2024 13:41:02 +0200 Subject: [PATCH 2/3] REVERT_ME: open issues on any run This should create issues from this PR already --- .github/workflows/reusable_ici.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/reusable_ici.yml b/.github/workflows/reusable_ici.yml index faae8ba71..2779c875d 100644 --- a/.github/workflows/reusable_ici.yml +++ b/.github/workflows/reusable_ici.yml @@ -56,7 +56,8 @@ jobs: CMAKE_ARGS: -DUR_ROBOT_DRIVER_BUILD_INTEGRATION_TESTS=ON ADDITIONAL_DEBS: docker.io netcat-openbsd # Needed for integration tests - uses: JasonEtco/create-an-issue@v2 - if: ${{ always() && (steps.ici.outputs.build_target_workspace == '2' || steps.ici.outputs.target_test_results == '1') && github.event_name == 'schedule'}} + #if: ${{ always() && (steps.ici.outputs.build_target_workspace == '2' || steps.ici.outputs.target_test_results == '1') && github.event_name == 'schedule'}} + if: ${{ always() && (steps.ici.outputs.build_target_workspace == '2' || steps.ici.outputs.target_test_results == '1') }} env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} UPSTREAM_TYPE: ${{ inputs.upstream_type }} From 11f5b9accb49b43e8e2b9126b4e1ce3af6f5418b Mon Sep 17 00:00:00 2001 From: Felix Exner Date: Thu, 10 Oct 2024 14:01:26 +0200 Subject: [PATCH 3/3] Add missing ici id --- .github/workflows/reusable_ici.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/reusable_ici.yml b/.github/workflows/reusable_ici.yml index 2779c875d..fc43628a7 100644 --- a/.github/workflows/reusable_ici.yml +++ b/.github/workflows/reusable_ici.yml @@ -55,6 +55,7 @@ jobs: ROS_REPO: ${{ inputs.ros_repo }} CMAKE_ARGS: -DUR_ROBOT_DRIVER_BUILD_INTEGRATION_TESTS=ON ADDITIONAL_DEBS: docker.io netcat-openbsd # Needed for integration tests + id: ici - uses: JasonEtco/create-an-issue@v2 #if: ${{ always() && (steps.ici.outputs.build_target_workspace == '2' || steps.ici.outputs.target_test_results == '1') && github.event_name == 'schedule'}} if: ${{ always() && (steps.ici.outputs.build_target_workspace == '2' || steps.ici.outputs.target_test_results == '1') }}