Skip to content

Commit

Permalink
Split build status into two views & add iron workflows (#709)
Browse files Browse the repository at this point in the history
* Move ci_status to own markdown file

* Added workflows for iron

* Add instructions for upstream deps on failing builds.

* Use uJ64_ instead of uJ64: as prefix

The colon seems to break github rendering

* Update README.md

Co-authored-by: RobertWilbrandt <[email protected]>

* improve wording

Co-authored-by: RobertWilbrandt <[email protected]>

---------

Co-authored-by: RobertWilbrandt <[email protected]>
  • Loading branch information
fmauch and RobertWilbrandt committed Jun 19, 2023
1 parent 5226d00 commit ee6b50f
Show file tree
Hide file tree
Showing 8 changed files with 287 additions and 64 deletions.
24 changes: 24 additions & 0 deletions .github/workflows/iron-binary-main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Iron Binary Build Main
on:
workflow_dispatch:
branches:
- iron
pull_request:
branches:
- iron
- main # as long as rolling and iron should be compatible
push:
branches:
- iron
schedule:
# Run every morning to detect flakiness and broken dependencies
- cron: '13 5 * * *'

jobs:
binary:
uses: ./.github/workflows/reusable_ici.yml
with:
ros_distro: iron
ros_repo: main
upstream_workspace: Universal_Robots_ROS2_Driver-not-released.iron.repos
ref_for_scheduled_build: iron
24 changes: 24 additions & 0 deletions .github/workflows/iron-binary-testing.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Iron Binary Build Testing
on:
workflow_dispatch:
branches:
- iron
pull_request:
branches:
- iron
- main # as long as rolling and iron should be compatible
push:
branches:
- iron
schedule:
# Run every morning to detect flakiness and broken dependencies
- cron: '13 5 * * *'

jobs:
binary:
uses: ./.github/workflows/reusable_ici.yml
with:
ros_distro: iron
ros_repo: testing
upstream_workspace: Universal_Robots_ROS2_Driver-not-released.iron.repos
ref_for_scheduled_build: iron
24 changes: 24 additions & 0 deletions .github/workflows/iron-semi-binary-main.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Iron Semi Binary Build Main
on:
workflow_dispatch:
branches:
- iron
pull_request:
branches:
- iron
- main # as long as rolling and iron should be compatible
push:
branches:
- iron
schedule:
# Run every morning to detect flakiness and broken dependencies
- cron: '13 5 * * *'

jobs:
binary:
uses: ./.github/workflows/reusable_ici.yml
with:
ros_distro: iron
ros_repo: main
upstream_workspace: Universal_Robots_ROS2_Driver.iron.repos
ref_for_scheduled_build: iron
24 changes: 24 additions & 0 deletions .github/workflows/iron-semi-binary-testing.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
name: Iron Semi Binary Build Testing
on:
workflow_dispatch:
branches:
- iron
pull_request:
branches:
- iron
- main # as long as rolling and iron should be compatible
push:
branches:
- iron
schedule:
# Run every morning to detect flakiness and broken dependencies
- cron: '13 5 * * *'

jobs:
binary:
uses: ./.github/workflows/reusable_ici.yml
with:
ros_distro: iron
ros_repo: testing
upstream_workspace: Universal_Robots_ROS2_Driver.iron.repos
ref_for_scheduled_build: iron
97 changes: 33 additions & 64 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,102 +13,68 @@ The driver is compatible across the entire line of UR robots -- from 3 kg payloa
Check also [presentations and videos](ur_robot_driver/doc/resources/README.md) about this driver.


## Build Status
## Release Status

<table width="100%">
<tr>
<th>ROS2 Distro</th>
<th>Foxy</th>
<th>Galactic</th>
<th>Foxy (EOL)</th>
<th>Galactic (EOL)</th>
<th>Humble</th>
<th>Iron</th>
<th>Rolling</th>
</tr>
<tr>
<th>Branch</th>
<td><a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/tree/foxy">foxy</a></td>
<td><a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/tree/galactic">galactic</a></td>
<td><a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/tree/humble">humble</a></td>
<td><a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/tree/iron">iron</a></td>
<td><a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/tree/main">main</a></td>
</tr>
<tr>
<th>Build Status</th>
<th>Release status</th>
<td>
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/foxy-binary-build.yml?query=event%3Aschedule++">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/foxy-binary-build.yml/badge.svg?event=schedule"
alt="Foxy Binary Build"/>
</a> <br />
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/foxy-semi-binary-build.yml?query=event%3Aschedule++">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/foxy-semi-binary-build.yml/badge.svg?event=schedule"
alt="Foxy Semi-Binary Build"/>
</a>
</td>
<td>
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/galactic-binary-build.yml?query=event%3Aschedule++">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/galactic-binary-build.yml/badge.svg?event=schedule"
alt="Galactic Binary Build"/>
</a> <br />
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/galactic-semi-binary-build.yml?query=event%3Aschedule++">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/galactic-semi-binary-build.yml/badge.svg?event=schedule"
alt="Galactic Semi-Binary Build"/>
</a>
</td>
<td>
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/humble-binary-main.yml?query=event%3Aschedule++">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/humble-binary-main.yml/badge.svg?event=schedule"
alt="Humble Binary Main"/>
</a> <br />
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/humble-binary-testing.yml?query=event%3Aschedule++">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/humble-binary-testing.yml/badge.svg?event=schedule"
alt="Humble Binary Testing"/>
</a> <br />
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/humble-semi-binary-main.yml?query=event%3Aschedule++">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/humble-semi-binary-main.yml/badge.svg?event=schedule"
alt="Humble Semi-Binary Main"/>
</a> <br />
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/humble-semi-binary-testing.yml?query=event%3Aschedule++">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/humble-semi-binary-testing.yml/badge.svg?event=schedule"
alt="Humble Semi-Binary Testing"/>
</a>
<a href='https://build.ros2.org/job/Hbin_uJ64__ur_calibration__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Hbin_uJ64__ur_calibration__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_calibration'></a><br/>
<a href='https://build.ros2.org/job/Hbin_uJ64__ur_controllers__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Hbin_uJ64__ur_controllers__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_controllers'></a>
<a href='https://build.ros2.org/job/Hbin_uJ64__ur_dashboard_msgs__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Hbin_uJ64__ur_dashboard_msgs__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_dashboard_msgs'></a>
<a href='https://build.ros2.org/job/Hbin_uJ64__ur_moveit_config__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Hbin_uJ64__ur_moveit_config__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_moveit_config'></a>
<a href='https://build.ros2.org/job/Hbin_uJ64__ur_robot_driver__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Hbin_uJ64__ur_robot_driver__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_robot_driver'></a>
</td>
<td>
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/rolling-binary-main.yml?query=branch%3Amain+">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/rolling-binary-main.yml/badge.svg?branch=main"
alt="Rolling Binary Main"/>
</a> <br />
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/rolling-binary-testing.yml?query=branch%3Amain+">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/rolling-binary-testing.yml/badge.svg?branch=main"
alt="Rolling Binary Testing"/>
</a> <br />
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/rolling-semi-binary-main.yml?query=branch%3Amain+">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/rolling-semi-binary-main.yml/badge.svg?branch=main"
alt="Rolling Semi-Binary Main"/>
</a> <br />
<a href="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/rolling-semi-binary-testing.yml?query=branch%3Amain+">
<img src="https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/actions/workflows/rolling-semi-binary-testing.yml/badge.svg?branch=main"
alt="Rolling Semi-Binary Testing"/>
</a>
<a href='https://build.ros2.org/job/Ibin_uJ64__ur_calibration__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Ibin_uJ64__ur_calibration__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_calibration'></a><br/>
<a href='https://build.ros2.org/job/Ibin_uJ64__ur_controllers__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Ibin_uJ64__ur_controllers__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_controllers'></a>
<a href='https://build.ros2.org/job/Ibin_uJ64__ur_dashboard_msgs__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Ibin_uJ64__ur_dashboard_msgs__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_dashboard_msgs'></a>
<a href='https://build.ros2.org/job/Ibin_uJ64__ur_moveit_config__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Ibin_uJ64__ur_moveit_config__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_moveit_config'></a>
<a href='https://build.ros2.org/job/Ibin_uJ64__ur_robot_driver__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Ibin_uJ64__ur_robot_driver__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_robot_driver'></a>
</td>
<td>
<a href='https://build.ros2.org/job/Rbin_uJ64__ur_calibration__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Rbin_uJ64__ur_calibration__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_calibration'></a><br/>
<a href='https://build.ros2.org/job/Rbin_uJ64__ur_controllers__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Rbin_uJ64__ur_controllers__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_controllers'></a>
<a href='https://build.ros2.org/job/Rbin_uJ64__ur_dashboard_msgs__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Rbin_uJ64__ur_dashboard_msgs__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_dashboard_msgs'></a>
<a href='https://build.ros2.org/job/Rbin_uJ64__ur_moveit_config__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Rbin_uJ64__ur_moveit_config__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_moveit_config'></a>
<a href='https://build.ros2.org/job/Rbin_uJ64__ur_robot_driver__ubuntu_jammy_amd64__binary/'><img src='https://build.ros2.org/job/Rbin_uJ64__ur_robot_driver__ubuntu_jammy_amd64__binary/badge/icon?subject=ur_robot_driver'></a>
</td>
</tr>
</table>

The table above shows the build status for each package of this repo from the [ROS buildfarm](https://build.ros2.org/). For end-of-life (EOL) distributions the nightly binary builds from our CI are shown. EOL distributions will receive no more updates and may be lacking features.

**NOTE**: There are two build stages checking current and future compatibility of the driver.

1. Binary builds - against released packages (main and testing) in ROS distributions. Shows that
direct local build is possible and is the most relevant workflow for users.

Uses repos file: `src/Universal_Robots_ROS2_Driver/Universal_Robots_ROS2_Driver-not-released.<ros-distro>.repos`

1. Semi-binary builds - against released core ROS packages (main and testing), but the immediate dependencies are pulled from source.
Shows that local build with dependencies is possible and if fails there we can expect that after the next package sync we will not be able to build.

Uses repos file: `src/Universal_Robots_ROS2_Driver/Universal_Robots_ROS2_Driver.repos`

Each of these stages also performs integration tests using ursim. In order to execute these tests locally, they have to be enabled:
```
colcon build --packages-select ur_robot_driver --cmake-args -DUR_ROBOT_DRIVER_BUILD_INTEGRATION_TESTS=On
```

A more [detailed build status](ci_status.md) shows the state of all CI workflows inside this repo.
Please note that the detailed view is intended for developers, while the one here should give end
users an overview of the current released state.

## Packages in the Repository:

Expand Down Expand Up @@ -188,11 +154,14 @@ building might fail occasionally.
source install/setup.bash
```

6. When consecutive pulls leads to build errors, please make sure to update the upstream packages before
filing an issue:
6. When consecutive pulls lead to build errors it is possible that you'll have to build an upstream
package from source, as well. See the [detailed build status](ci_status.md). When the binary builds are red, but
the semi-binary builds are green, you need to build the upstream dependencies from source. The
easiest way to achieve this, is using the repos file:

```
cd $COLCON_WS
vcs import src --skip-existing --input src/Universal_Robots_ROS2_Driver/Universal_Robots_ROS2_Driver-not-released.${ROS_DISTRO}.repos
vcs import src --skip-existing --input src/Universal_Robots_ROS2_Driver/Universal_Robots_ROS2_Driver.${ROS_DISTRO}.repos
rosdep update
rosdep install --ignore-src --from-paths src -y
```
Expand Down
10 changes: 10 additions & 0 deletions Universal_Robots_ROS2_Driver-not-released.iron.repos
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# The not-released files are meant to use upstream packages in binary form whenever possible.
# Packages get added here, if they are not released at all or when the repo's current version
# requires a newer version than the one currently released to the target distributions.
# Once Upstream packages are released and synced to the target distributions in the required
# version, the entry in this file shall be removed again.
repositories:
Universal_Robots_ROS2_Description:
type: git
url: https://github.com/UniversalRobots/Universal_Robots_ROS2_Description.git
version: ros2
29 changes: 29 additions & 0 deletions Universal_Robots_ROS2_Driver.iron.repos
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
repositories:
Universal_Robots_Client_Library:
type: git
url: https://github.com/UniversalRobots/Universal_Robots_Client_Library.git
version: master
Universal_Robots_ROS2_Description:
type: git
url: https://github.com/UniversalRobots/Universal_Robots_ROS2_Description.git
version: ros2
ur_msgs:
type: git
url: https://github.com/ros-industrial/ur_msgs.git
version: foxy-devel
ros2_control:
type: git
url: https://github.com/ros-controls/ros2_control.git
version: master
ros2_controllers:
type: git
url: https://github.com/ros-controls/ros2_controllers
version: master
kinematics_interface:
type: git
url: https://github.com/ros-controls/kinematics_interface.git
version: master
control_msgs:
type: git
url: https://github.com/ros-controls/control_msgs.git
version: humble
Loading

0 comments on commit ee6b50f

Please sign in to comment.