I am working with ROS Noetic project in a team. Are there any existing techniques/tools for managing a freeze of the ROS rolling release? The intent is to achieve a more stable development and deployment environment. We use Docker for deployment and currently base our container on the robot
image. We are on Ubuntu 20.04 LTS.
As of this writing, the newest ROS Noetic rolling release is noetic/2024-05-10
: https://github.com/ros/rosdistro/tree/noetic/2024-05-10. In near future, there will likely be a new one (until EOL in May '25, but that's a different issue).
The problem with http://packages.ros.org is that this server seems to host only the very latest version of packages. Naturally, we could use http://snapshots.ros.org/noetic/ directly. However, it is my understanding that this service should not relied upon for production use.
Current manual approach (for noetic/2024-05-10
):
- Make a copy of the necessary binary packages from http://snapshots.ros.org/noetic/2024-05-10 and host these privately.
- Create a fork of https://github.com/osrf/docker_images and patch necessary
Dockerfile
files. This allows us to build patched versions of theros-core
,ros-base
,robot
, andperception
images that would target a specific rolling release. - The patching for
ros-core/Dockerfile
would involve updating thedeb
line in/etc/apt/sources.list.d/ros1-latest.list
so it uses the private server. - The
ros-base/Dockerfile
seems to need a call tosed
betweenrosdeb init
androsdep update
. This call tosed
would replacemaster
withnoetic/2024-05-10
in/etc/ros/rosdep/sources.list.d/20-default.list
.
For development-machines, we would need to patch other things in a similar way.
Are there any other clever techniques for this that I've missed?