diff --git a/.github/workflows/iron-binary-main.yml b/.github/workflows/iron-binary-main.yml new file mode 100644 index 000000000..43c8df5ec --- /dev/null +++ b/.github/workflows/iron-binary-main.yml @@ -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 diff --git a/.github/workflows/iron-binary-testing.yml b/.github/workflows/iron-binary-testing.yml new file mode 100644 index 000000000..a59f1daa3 --- /dev/null +++ b/.github/workflows/iron-binary-testing.yml @@ -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 diff --git a/.github/workflows/iron-semi-binary-main.yml b/.github/workflows/iron-semi-binary-main.yml new file mode 100644 index 000000000..60d0e3412 --- /dev/null +++ b/.github/workflows/iron-semi-binary-main.yml @@ -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 diff --git a/.github/workflows/iron-semi-binary-testing.yml b/.github/workflows/iron-semi-binary-testing.yml new file mode 100644 index 000000000..d9a172075 --- /dev/null +++ b/.github/workflows/iron-semi-binary-testing.yml @@ -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 diff --git a/README.md b/README.md index 09466ec33..c27268c20 100644 --- a/README.md +++ b/README.md @@ -13,14 +13,15 @@ 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 - - + + + @@ -28,87 +29,52 @@ Check also [presentations and videos](ur_robot_driver/doc/resources/README.md) a + - + +
ROS2 DistroFoxyGalacticFoxy (EOL)Galactic (EOL) HumbleIron Rolling
foxy galactic humbleiron main
Build StatusRelease status Foxy Binary Build
- - Foxy Semi-Binary Build -
Galactic Binary Build
- - Galactic Semi-Binary Build -
- - Humble Binary Main -
- - Humble Binary Testing -
- - Humble Semi-Binary Main -
- - Humble Semi-Binary Testing - +
+ + + +
- - Rolling Binary Main -
- - Rolling Binary Testing -
- - Rolling Semi-Binary Main -
- - Rolling Semi-Binary Testing - +
+ + + + +
+
+ + + +
+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..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: @@ -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 ``` diff --git a/Universal_Robots_ROS2_Driver-not-released.iron.repos b/Universal_Robots_ROS2_Driver-not-released.iron.repos new file mode 100644 index 000000000..352ac4558 --- /dev/null +++ b/Universal_Robots_ROS2_Driver-not-released.iron.repos @@ -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 diff --git a/Universal_Robots_ROS2_Driver.iron.repos b/Universal_Robots_ROS2_Driver.iron.repos new file mode 100644 index 000000000..67f590f66 --- /dev/null +++ b/Universal_Robots_ROS2_Driver.iron.repos @@ -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 diff --git a/ci_status.md b/ci_status.md new file mode 100644 index 000000000..376cad650 --- /dev/null +++ b/ci_status.md @@ -0,0 +1,119 @@ +## Build Status + +This page gives a detailed overview of the build status of this repository. Please note that due to +upstream changes some pipelines might turn red temporarily which can be expected behavior. For each +red pipeline there should be a corresponding issue labeled with [ci-failure](https://github.com/UniversalRobots/Universal_Robots_ROS2_Driver/issues?q=is%3Aissue+is%3Aopen+label%3Aci-failure). + + + + + + + + + + + + + + + + + + + + + + + + + + +
HumbleIronRolling
Branchhumbleironmain
Repo builds + + Humble Binary Main +
+ + Humble Binary Testing +
+ + Humble Semi-Binary Main +
+ + Humble Semi-Binary Testing + +
+ + Iron Binary Main +
+ + Iron Binary Testing +
+ + Iron Semi-Binary Main +
+ + Iron Semi-Binary Testing + +
+ + Rolling Binary Main +
+ + Rolling Binary Testing +
+ + Rolling Semi-Binary Main +
+ + Rolling Semi-Binary Testing + +
Buildfarm +
+ + + + +
+
+ + + + +
+
+ + + + +
+ + +**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 integration tests work against the released state. + + Uses repos file: `src/Universal_Robots_ROS2_Driver/Universal_Robots_ROS2_Driver-not-released..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 this fails 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 + ```