Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ros] one-off rebuild of snapshot images to have new GPG key #15809

Merged

Conversation

mikaelarguedas
Copy link
Contributor

The ROS Snapshots APT repository key expired causing users of snapshots images unable to install pinned versions of their ROS packages.

This PR reenables snapshot images build for a one-off build before disabling them again
To ensure rebuild / cache busting, two run statements have been swapped.

I understand these base images are EOL for a while, but as multiple users and companies still rely on them on production systems we would love to be fix this issue via a one-shot build

This comment has been minimized.

Copy link
Contributor

@tfoote tfoote left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for forcing these rebuilds.

@dambrosio
Copy link

@mikaelarguedas thanks for this. Any update on this? Specifically interested in the foxy-ros-base-focal as this is the base image for the ros1 bridge. Appreciate it!

Signed-off-by: Mikael Arguedas <mikael.arguedas@gmail.com>

This comment has been minimized.

@mikaelarguedas
Copy link
Contributor Author

looks like all the debian based images dont compile.

@yosifkit if the idea of rebuilding the EOL snapshot based images is ok with you I can take out the debian images of that PR to have a rebuild of the ubuntu based image before disabling the builds again

@yosifkit
Copy link
Member

yosifkit commented Dec 5, 2023

I think generally, a one-off rebuilding of EOL ros images seems fine (assuming that they can currently build on whatever base OS they are on).

From the other part of the failing "Naughty" test, you'll need to add a GitFetch in each item in the library/ros file to point to the branch in osrf/docker_images that contains the commit (like GitFetch: refs/heads/branchname).

Signed-off-by: Mikael Arguedas <mikael.arguedas@gmail.com>
Copy link

github-actions bot commented Dec 5, 2023

Diff for a9d9f72:
diff --git a/_bashbrew-cat b/_bashbrew-cat
index 310f033..1662f74 100644
--- a/_bashbrew-cat
+++ b/_bashbrew-cat
@@ -1,6 +1,96 @@
 Maintainers: Tully Foote <tfoote+buildfarm@osrfoundation.org> (@tfoote)
 GitRepo: https://github.com/osrf/docker_images.git
 
+Tags: ardent-ros-base, ardent-ros-base-xenial, ardent
+Architectures: amd64, arm64v8
+GitCommit: 9619e8b2fedc763707c07bd5568f2401bfc5b117
+Directory: ros/ardent/ubuntu/xenial/ros-base
+
+Tags: ardent-ros-core, ardent-ros-core-xenial
+Architectures: amd64, arm64v8
+GitCommit: 51ba1c72c513b62e8825c3df015ca4d926ac688c
+Directory: ros/ardent/ubuntu/xenial/ros-core
+
+Tags: bouncy-ros-base, bouncy-ros-base-bionic, bouncy
+Architectures: amd64, arm64v8
+GitCommit: 9619e8b2fedc763707c07bd5568f2401bfc5b117
+Directory: ros/bouncy/ubuntu/bionic/ros-base
+
+Tags: bouncy-ros-core, bouncy-ros-core-bionic
+Architectures: amd64, arm64v8
+GitCommit: 51ba1c72c513b62e8825c3df015ca4d926ac688c
+Directory: ros/bouncy/ubuntu/bionic/ros-core
+
+Tags: crystal-ros-base, crystal-ros-base-bionic, crystal
+Architectures: amd64, arm64v8
+GitCommit: 9619e8b2fedc763707c07bd5568f2401bfc5b117
+Directory: ros/crystal/ubuntu/bionic/ros-base
+
+Tags: crystal-ros-core, crystal-ros-core-bionic
+Architectures: amd64, arm64v8
+GitCommit: 51ba1c72c513b62e8825c3df015ca4d926ac688c
+Directory: ros/crystal/ubuntu/bionic/ros-core
+
+Tags: dashing-ros1-bridge, dashing-ros1-bridge-bionic
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: 87074e54828d12dacf84f15273e95e03eeb17d24
+Directory: ros/dashing/ubuntu/bionic/ros1-bridge
+
+Tags: dashing-ros-base, dashing-ros-base-bionic, dashing
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
+Directory: ros/dashing/ubuntu/bionic/ros-base
+
+Tags: dashing-ros-core, dashing-ros-core-bionic
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: 9ab23751d41735b448da8cfa1580958279ae5101
+Directory: ros/dashing/ubuntu/bionic/ros-core
+
+Tags: eloquent-ros1-bridge, eloquent-ros1-bridge-bionic
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: 3b5cbe2c25b25fa2b5acc9770f5f0b71143f864d
+Directory: ros/eloquent/ubuntu/bionic/ros1-bridge
+
+Tags: eloquent-ros-base, eloquent-ros-base-bionic, eloquent
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: b3e79c3aef3687b56b3c1052ae38aa7010234834
+Directory: ros/eloquent/ubuntu/bionic/ros-base
+
+Tags: eloquent-ros-core, eloquent-ros-core-bionic
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: 3b5cbe2c25b25fa2b5acc9770f5f0b71143f864d
+Directory: ros/eloquent/ubuntu/bionic/ros-core
+
+Tags: foxy-ros1-bridge, foxy-ros1-bridge-focal
+Architectures: amd64, arm64v8
+GitCommit: 9ab23751d41735b448da8cfa1580958279ae5101
+Directory: ros/foxy/ubuntu/focal/ros1-bridge
+
+Tags: foxy-ros-base, foxy-ros-base-focal, foxy
+Architectures: amd64, arm64v8
+GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
+Directory: ros/foxy/ubuntu/focal/ros-base
+
+Tags: foxy-ros-core, foxy-ros-core-focal
+Architectures: amd64, arm64v8
+GitCommit: 9ab23751d41735b448da8cfa1580958279ae5101
+Directory: ros/foxy/ubuntu/focal/ros-core
+
+Tags: galactic-ros1-bridge, galactic-ros1-bridge-focal
+Architectures: amd64, arm64v8
+GitCommit: 87074e54828d12dacf84f15273e95e03eeb17d24
+Directory: ros/galactic/ubuntu/focal/ros1-bridge
+
+Tags: galactic-ros-base, galactic-ros-base-focal, galactic
+Architectures: amd64, arm64v8
+GitCommit: 6511d8fc0754616550b7f5ea31a40084c2462938
+Directory: ros/galactic/ubuntu/focal/ros-base
+
+Tags: galactic-ros-core, galactic-ros-core-focal
+Architectures: amd64, arm64v8
+GitCommit: 9ab23751d41735b448da8cfa1580958279ae5101
+Directory: ros/galactic/ubuntu/focal/ros-core
+
 Tags: humble-perception, humble-perception-jammy
 Architectures: amd64, arm64v8
 GitCommit: 20d40c96b426b8956dec203e236abff2ec29b188
@@ -13,9 +103,29 @@ Directory: ros/humble/ubuntu/jammy/ros-base
 
 Tags: humble-ros-core, humble-ros-core-jammy
 Architectures: amd64, arm64v8
-GitCommit: 3f4fbca923d80f834f3a89b5960bad5582652519
+GitCommit: 87074e54828d12dacf84f15273e95e03eeb17d24
 Directory: ros/humble/ubuntu/jammy/ros-core
 
+Tags: indigo-perception, indigo-perception-trusty
+Architectures: amd64, arm32v7
+GitCommit: 20061b005b245d1b7e23626afd0ea2c39de9db49
+Directory: ros/indigo/ubuntu/trusty/perception
+
+Tags: indigo-robot, indigo-robot-trusty
+Architectures: amd64, arm32v7
+GitCommit: 20061b005b245d1b7e23626afd0ea2c39de9db49
+Directory: ros/indigo/ubuntu/trusty/robot
+
+Tags: indigo-ros-base, indigo-ros-base-trusty, indigo
+Architectures: amd64, arm32v7
+GitCommit: 20061b005b245d1b7e23626afd0ea2c39de9db49
+Directory: ros/indigo/ubuntu/trusty/ros-base
+
+Tags: indigo-ros-core, indigo-ros-core-trusty
+Architectures: amd64, arm32v7
+GitCommit: 51ba1c72c513b62e8825c3df015ca4d926ac688c
+Directory: ros/indigo/ubuntu/trusty/ros-core
+
 Tags: iron-perception, iron-perception-jammy
 Architectures: amd64, arm64v8
 GitCommit: bca53bf4c09d771be3ff735da4157203b53ebc2b
@@ -28,29 +138,145 @@ Directory: ros/iron/ubuntu/jammy/ros-base
 
 Tags: iron-ros-core, iron-ros-core-jammy
 Architectures: amd64, arm64v8
-GitCommit: bca53bf4c09d771be3ff735da4157203b53ebc2b
+GitCommit: 87074e54828d12dacf84f15273e95e03eeb17d24
 Directory: ros/iron/ubuntu/jammy/ros-core
 
+Tags: jade-perception, jade-perception-trusty
+Architectures: amd64, arm32v7
+GitCommit: dbda2abfbee89ebab4b33bdb1cfaec6dc36a3822
+Directory: ros/jade/ubuntu/trusty/perception
+
+Tags: jade-robot, jade-robot-trusty
+Architectures: amd64, arm32v7
+GitCommit: dbda2abfbee89ebab4b33bdb1cfaec6dc36a3822
+Directory: ros/jade/ubuntu/trusty/robot
+
+Tags: jade-ros-base, jade-ros-base-trusty, jade
+Architectures: amd64, arm32v7
+GitCommit: dbda2abfbee89ebab4b33bdb1cfaec6dc36a3822
+Directory: ros/jade/ubuntu/trusty/ros-base
+
+Tags: jade-ros-core, jade-ros-core-trusty
+Architectures: amd64, arm32v7
+GitCommit: 51ba1c72c513b62e8825c3df015ca4d926ac688c
+Directory: ros/jade/ubuntu/trusty/ros-core
+
+Tags: kinetic-perception, kinetic-perception-xenial
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
+Directory: ros/kinetic/ubuntu/xenial/perception
+
+Tags: kinetic-robot, kinetic-robot-xenial
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
+Directory: ros/kinetic/ubuntu/xenial/robot
+
+Tags: kinetic-ros-base, kinetic-ros-base-xenial, kinetic
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
+Directory: ros/kinetic/ubuntu/xenial/ros-base
+
+Tags: kinetic-ros-core, kinetic-ros-core-xenial
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: 9ab23751d41735b448da8cfa1580958279ae5101
+Directory: ros/kinetic/ubuntu/xenial/ros-core
+
+Tags: lunar-perception, lunar-perception-xenial
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: d81c0004d43383a6cd0f7b5a9b3020300f3cb1ca
+Directory: ros/lunar/ubuntu/xenial/perception
+
+Tags: lunar-perception-zesty
+GitCommit: 4cfa1c7fd7e4f6ec638d1615f12133edbc100731
+Directory: ros/lunar/ubuntu/zesty/perception
+
+Tags: lunar-robot, lunar-robot-xenial
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: d81c0004d43383a6cd0f7b5a9b3020300f3cb1ca
+Directory: ros/lunar/ubuntu/xenial/robot
+
+Tags: lunar-robot-zesty
+GitCommit: 4cfa1c7fd7e4f6ec638d1615f12133edbc100731
+Directory: ros/lunar/ubuntu/zesty/robot
+
+Tags: lunar-ros-base, lunar-ros-base-xenial, lunar
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: d81c0004d43383a6cd0f7b5a9b3020300f3cb1ca
+Directory: ros/lunar/ubuntu/xenial/ros-base
+
+Tags: lunar-ros-base-zesty
+GitCommit: 4cfa1c7fd7e4f6ec638d1615f12133edbc100731
+Directory: ros/lunar/ubuntu/zesty/ros-base
+
+Tags: lunar-ros-core, lunar-ros-core-xenial
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: 51ba1c72c513b62e8825c3df015ca4d926ac688c
+Directory: ros/lunar/ubuntu/xenial/ros-core
+
+Tags: lunar-ros-core-zesty
+GitCommit: 51ba1c72c513b62e8825c3df015ca4d926ac688c
+Directory: ros/lunar/ubuntu/zesty/ros-core
+
+Tags: melodic-perception, melodic-perception-bionic
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
+Directory: ros/melodic/ubuntu/bionic/perception
+
+Tags: melodic-robot, melodic-robot-bionic
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
+Directory: ros/melodic/ubuntu/bionic/robot
+
+Tags: melodic-ros-base, melodic-ros-base-bionic, melodic
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
+Directory: ros/melodic/ubuntu/bionic/ros-base
+
+Tags: melodic-ros-core, melodic-ros-core-bionic
+Architectures: amd64, arm32v7, arm64v8
+GitCommit: 9ab23751d41735b448da8cfa1580958279ae5101
+Directory: ros/melodic/ubuntu/bionic/ros-core
+
 Tags: noetic-perception, noetic-perception-focal
 Architectures: amd64, arm32v7, arm64v8
 GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
 Directory: ros/noetic/ubuntu/focal/perception
 
+Tags: noetic-perception-buster
+Architectures: amd64, arm64v8
+GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
+Directory: ros/noetic/debian/buster/perception
+
 Tags: noetic-robot, noetic-robot-focal
 Architectures: amd64, arm32v7, arm64v8
 GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
 Directory: ros/noetic/ubuntu/focal/robot
 
+Tags: noetic-robot-buster
+Architectures: amd64, arm64v8
+GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
+Directory: ros/noetic/debian/buster/robot
+
 Tags: noetic-ros-base, noetic-ros-base-focal, noetic
 Architectures: amd64, arm32v7, arm64v8
 GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
 Directory: ros/noetic/ubuntu/focal/ros-base
 
+Tags: noetic-ros-base-buster
+Architectures: amd64, arm64v8
+GitCommit: df19ab7d5993d3b78a908362cdcd1479a8e78b35
+Directory: ros/noetic/debian/buster/ros-base
+
 Tags: noetic-ros-core, noetic-ros-core-focal
 Architectures: amd64, arm32v7, arm64v8
-GitCommit: 3f4fbca923d80f834f3a89b5960bad5582652519
+GitCommit: 9ab23751d41735b448da8cfa1580958279ae5101
 Directory: ros/noetic/ubuntu/focal/ros-core
 
+Tags: noetic-ros-core-buster
+Architectures: amd64, arm64v8
+GitCommit: 9ab23751d41735b448da8cfa1580958279ae5101
+Directory: ros/noetic/debian/buster/ros-core
+
 Tags: rolling-perception, rolling-perception-jammy
 Architectures: amd64, arm64v8
 GitCommit: 73c1bf4c30e97d5d3d7c2aaddc8137cae2411409
@@ -63,5 +289,5 @@ Directory: ros/rolling/ubuntu/jammy/ros-base
 
 Tags: rolling-ros-core, rolling-ros-core-jammy
 Architectures: amd64, arm64v8
-GitCommit: 73c1bf4c30e97d5d3d7c2aaddc8137cae2411409
+GitCommit: 87074e54828d12dacf84f15273e95e03eeb17d24
 Directory: ros/rolling/ubuntu/jammy/ros-core
diff --git a/_bashbrew-list b/_bashbrew-list
index 0cd63db..48d0eaf 100644
--- a/_bashbrew-list
+++ b/_bashbrew-list
@@ -1,3 +1,46 @@
+ros:ardent
+ros:ardent-ros-base
+ros:ardent-ros-base-xenial
+ros:ardent-ros-core
+ros:ardent-ros-core-xenial
+ros:bouncy
+ros:bouncy-ros-base
+ros:bouncy-ros-base-bionic
+ros:bouncy-ros-core
+ros:bouncy-ros-core-bionic
+ros:crystal
+ros:crystal-ros-base
+ros:crystal-ros-base-bionic
+ros:crystal-ros-core
+ros:crystal-ros-core-bionic
+ros:dashing
+ros:dashing-ros1-bridge
+ros:dashing-ros1-bridge-bionic
+ros:dashing-ros-base
+ros:dashing-ros-base-bionic
+ros:dashing-ros-core
+ros:dashing-ros-core-bionic
+ros:eloquent
+ros:eloquent-ros1-bridge
+ros:eloquent-ros1-bridge-bionic
+ros:eloquent-ros-base
+ros:eloquent-ros-base-bionic
+ros:eloquent-ros-core
+ros:eloquent-ros-core-bionic
+ros:foxy
+ros:foxy-ros1-bridge
+ros:foxy-ros1-bridge-focal
+ros:foxy-ros-base
+ros:foxy-ros-base-focal
+ros:foxy-ros-core
+ros:foxy-ros-core-focal
+ros:galactic
+ros:galactic-ros1-bridge
+ros:galactic-ros1-bridge-focal
+ros:galactic-ros-base
+ros:galactic-ros-base-focal
+ros:galactic-ros-core
+ros:galactic-ros-core-focal
 ros:humble
 ros:humble-perception
 ros:humble-perception-jammy
@@ -5,6 +48,15 @@ ros:humble-ros-base
 ros:humble-ros-base-jammy
 ros:humble-ros-core
 ros:humble-ros-core-jammy
+ros:indigo
+ros:indigo-perception
+ros:indigo-perception-trusty
+ros:indigo-robot
+ros:indigo-robot-trusty
+ros:indigo-ros-base
+ros:indigo-ros-base-trusty
+ros:indigo-ros-core
+ros:indigo-ros-core-trusty
 ros:iron
 ros:iron-perception
 ros:iron-perception-jammy
@@ -12,15 +64,59 @@ ros:iron-ros-base
 ros:iron-ros-base-jammy
 ros:iron-ros-core
 ros:iron-ros-core-jammy
+ros:jade
+ros:jade-perception
+ros:jade-perception-trusty
+ros:jade-robot
+ros:jade-robot-trusty
+ros:jade-ros-base
+ros:jade-ros-base-trusty
+ros:jade-ros-core
+ros:jade-ros-core-trusty
+ros:kinetic
+ros:kinetic-perception
+ros:kinetic-perception-xenial
+ros:kinetic-robot
+ros:kinetic-robot-xenial
+ros:kinetic-ros-base
+ros:kinetic-ros-base-xenial
+ros:kinetic-ros-core
+ros:kinetic-ros-core-xenial
 ros:latest
+ros:lunar
+ros:lunar-perception
+ros:lunar-perception-xenial
+ros:lunar-perception-zesty
+ros:lunar-robot
+ros:lunar-robot-xenial
+ros:lunar-robot-zesty
+ros:lunar-ros-base
+ros:lunar-ros-base-xenial
+ros:lunar-ros-base-zesty
+ros:lunar-ros-core
+ros:lunar-ros-core-xenial
+ros:lunar-ros-core-zesty
+ros:melodic
+ros:melodic-perception
+ros:melodic-perception-bionic
+ros:melodic-robot
+ros:melodic-robot-bionic
+ros:melodic-ros-base
+ros:melodic-ros-base-bionic
+ros:melodic-ros-core
+ros:melodic-ros-core-bionic
 ros:noetic
 ros:noetic-perception
+ros:noetic-perception-buster
 ros:noetic-perception-focal
 ros:noetic-robot
+ros:noetic-robot-buster
 ros:noetic-robot-focal
 ros:noetic-ros-base
+ros:noetic-ros-base-buster
 ros:noetic-ros-base-focal
 ros:noetic-ros-core
+ros:noetic-ros-core-buster
 ros:noetic-ros-core-focal
 ros:rolling
 ros:rolling-perception
diff --git a/ros_rolling/Dockerfile b/ros_ardent-ros-core-xenial/Dockerfile
similarity index 41%
copy from ros_rolling/Dockerfile
copy to ros_ardent-ros-core-xenial/Dockerfile
index 8bf569d..3910c34 100644
--- a/ros_rolling/Dockerfile
+++ b/ros_ardent-ros-core-xenial/Dockerfile
@@ -1,10 +1,22 @@
-# This is an auto generated Dockerfile for ros:ros-base
-# generated from docker_images_ros2/create_ros_image.Dockerfile.em
-FROM ros:rolling-ros-core-jammy
+# This is an auto generated Dockerfile for ros:ros-core
+# generated from docker_images_ros2/create_ros_core_image.Dockerfile.em
+FROM ubuntu:xenial
+
+# install packages
+RUN apt-get update && apt-get install -q -y \
+    dirmngr \
+    gnupg2 \
+    python3-pip \
+    && rm -rf /var/lib/apt/lists/*
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/ardent/final/ubuntu xenial main" > /etc/apt/sources.list.d/ros2-snapshots.list
+
+# setup keys
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
 
 # install bootstrap tools
 RUN apt-get update && apt-get install --no-install-recommends -y \
-    build-essential \
     git \
     python3-colcon-common-extensions \
     python3-colcon-mixin \
@@ -12,9 +24,13 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
     python3-vcstool \
     && rm -rf /var/lib/apt/lists/*
 
+# setup environment
+ENV LANG C.UTF-8
+ENV LC_ALL C.UTF-8
+
 # bootstrap rosdep
-RUN rosdep init && \
-  rosdep update --rosdistro $ROS_DISTRO
+RUN rosdep init \
+    && rosdep update --include-eol-distros
 
 # setup colcon mixin and metadata
 RUN colcon mixin add default \
@@ -24,8 +40,18 @@ RUN colcon mixin add default \
       https://raw.githubusercontent.com/colcon/colcon-metadata-repository/master/index.yaml && \
     colcon metadata update
 
+# install python packages
+RUN pip3 install -U \
+    argcomplete
+
 # install ros2 packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-rolling-ros-base=0.10.0-2* \
+ENV ROS_DISTRO ardent
+RUN apt-get update && apt-get install -y \
+    ros-ardent-ros-core=0.4.0-1* \
     && rm -rf /var/lib/apt/lists/*
 
+# setup entrypoint
+COPY ./ros_entrypoint.sh /
+
+ENTRYPOINT ["/ros_entrypoint.sh"]
+CMD ["bash"]
diff --git a/ros_humble-ros-core-jammy/ros_entrypoint.sh b/ros_ardent-ros-core-xenial/ros_entrypoint.sh
similarity index 55%
copy from ros_humble-ros-core-jammy/ros_entrypoint.sh
copy to ros_ardent-ros-core-xenial/ros_entrypoint.sh
index 28bc65a..80f3ce3 100755
--- a/ros_humble-ros-core-jammy/ros_entrypoint.sh
+++ b/ros_ardent-ros-core-xenial/ros_entrypoint.sh
@@ -2,5 +2,5 @@
 set -e
 
 # setup ros2 environment
-source "/opt/ros/$ROS_DISTRO/setup.bash" --
+source "/opt/ros/$ROS_DISTRO/setup.bash"
 exec "$@"
diff --git a/ros_iron-perception-jammy/Dockerfile b/ros_ardent/Dockerfile
similarity index 39%
copy from ros_iron-perception-jammy/Dockerfile
copy to ros_ardent/Dockerfile
index caf7527..be76aba 100644
--- a/ros_iron-perception-jammy/Dockerfile
+++ b/ros_ardent/Dockerfile
@@ -1,9 +1,8 @@
-# This is an auto generated Dockerfile for ros:perception
+# This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images_ros2/create_ros_image.Dockerfile.em
-FROM ros:iron-ros-base-jammy
-
+FROM ros:ardent-ros-core-xenial
 # install ros2 packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-iron-perception=0.10.0-3* \
+RUN apt-get update && apt-get install -y \
+    ros-ardent-ros-base=0.4.0-1* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_rolling/Dockerfile b/ros_bouncy-ros-core-bionic/Dockerfile
similarity index 37%
copy from ros_rolling/Dockerfile
copy to ros_bouncy-ros-core-bionic/Dockerfile
index 8bf569d..5154ed6 100644
--- a/ros_rolling/Dockerfile
+++ b/ros_bouncy-ros-core-bionic/Dockerfile
@@ -1,10 +1,27 @@
-# This is an auto generated Dockerfile for ros:ros-base
-# generated from docker_images_ros2/create_ros_image.Dockerfile.em
-FROM ros:rolling-ros-core-jammy
+# This is an auto generated Dockerfile for ros:ros-core
+# generated from docker_images_ros2/create_ros_core_image.Dockerfile.em
+FROM ubuntu:bionic
+
+# setup timezone
+RUN echo 'Etc/UTC' > /etc/timezone && \
+    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
+    apt-get update && apt-get install -q -y tzdata && rm -rf /var/lib/apt/lists/*
+
+# install packages
+RUN apt-get update && apt-get install -q -y \
+    dirmngr \
+    gnupg2 \
+    python3-pip \
+    && rm -rf /var/lib/apt/lists/*
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/bouncy/final/ubuntu bionic main" > /etc/apt/sources.list.d/ros2-snapshots.list
+
+# setup keys
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
 
 # install bootstrap tools
 RUN apt-get update && apt-get install --no-install-recommends -y \
-    build-essential \
     git \
     python3-colcon-common-extensions \
     python3-colcon-mixin \
@@ -12,9 +29,13 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
     python3-vcstool \
     && rm -rf /var/lib/apt/lists/*
 
+# setup environment
+ENV LANG C.UTF-8
+ENV LC_ALL C.UTF-8
+
 # bootstrap rosdep
-RUN rosdep init && \
-  rosdep update --rosdistro $ROS_DISTRO
+RUN rosdep init \
+    && rosdep update --include-eol-distros
 
 # setup colcon mixin and metadata
 RUN colcon mixin add default \
@@ -24,8 +45,18 @@ RUN colcon mixin add default \
       https://raw.githubusercontent.com/colcon/colcon-metadata-repository/master/index.yaml && \
     colcon metadata update
 
+# install python packages
+RUN pip3 install -U \
+    argcomplete
+
 # install ros2 packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-rolling-ros-base=0.10.0-2* \
+ENV ROS_DISTRO bouncy
+RUN apt-get update && apt-get install -y \
+    ros-bouncy-ros-core=0.5.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
+# setup entrypoint
+COPY ./ros_entrypoint.sh /
+
+ENTRYPOINT ["/ros_entrypoint.sh"]
+CMD ["bash"]
diff --git a/ros_humble-ros-core-jammy/ros_entrypoint.sh b/ros_bouncy-ros-core-bionic/ros_entrypoint.sh
similarity index 55%
copy from ros_humble-ros-core-jammy/ros_entrypoint.sh
copy to ros_bouncy-ros-core-bionic/ros_entrypoint.sh
index 28bc65a..80f3ce3 100755
--- a/ros_humble-ros-core-jammy/ros_entrypoint.sh
+++ b/ros_bouncy-ros-core-bionic/ros_entrypoint.sh
@@ -2,5 +2,5 @@
 set -e
 
 # setup ros2 environment
-source "/opt/ros/$ROS_DISTRO/setup.bash" --
+source "/opt/ros/$ROS_DISTRO/setup.bash"
 exec "$@"
diff --git a/ros_iron-perception-jammy/Dockerfile b/ros_bouncy/Dockerfile
similarity index 39%
copy from ros_iron-perception-jammy/Dockerfile
copy to ros_bouncy/Dockerfile
index caf7527..d1b945f 100644
--- a/ros_iron-perception-jammy/Dockerfile
+++ b/ros_bouncy/Dockerfile
@@ -1,9 +1,8 @@
-# This is an auto generated Dockerfile for ros:perception
+# This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images_ros2/create_ros_image.Dockerfile.em
-FROM ros:iron-ros-base-jammy
-
+FROM ros:bouncy-ros-core-bionic
 # install ros2 packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-iron-perception=0.10.0-3* \
+RUN apt-get update && apt-get install -y \
+    ros-bouncy-ros-base=0.5.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_rolling/Dockerfile b/ros_crystal-ros-core-bionic/Dockerfile
similarity index 37%
copy from ros_rolling/Dockerfile
copy to ros_crystal-ros-core-bionic/Dockerfile
index 8bf569d..cd87f4f 100644
--- a/ros_rolling/Dockerfile
+++ b/ros_crystal-ros-core-bionic/Dockerfile
@@ -1,10 +1,27 @@
-# This is an auto generated Dockerfile for ros:ros-base
-# generated from docker_images_ros2/create_ros_image.Dockerfile.em
-FROM ros:rolling-ros-core-jammy
+# This is an auto generated Dockerfile for ros:ros-core
+# generated from docker_images_ros2/create_ros_core_image.Dockerfile.em
+FROM ubuntu:bionic
+
+# setup timezone
+RUN echo 'Etc/UTC' > /etc/timezone && \
+    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
+    apt-get update && apt-get install -q -y tzdata && rm -rf /var/lib/apt/lists/*
+
+# install packages
+RUN apt-get update && apt-get install -q -y \
+    dirmngr \
+    gnupg2 \
+    python3-pip \
+    && rm -rf /var/lib/apt/lists/*
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/crystal/final/ubuntu bionic main" > /etc/apt/sources.list.d/ros2-snapshots.list
+
+# setup keys
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
 
 # install bootstrap tools
 RUN apt-get update && apt-get install --no-install-recommends -y \
-    build-essential \
     git \
     python3-colcon-common-extensions \
     python3-colcon-mixin \
@@ -12,9 +29,13 @@ RUN apt-get update && apt-get install --no-install-recommends -y \
     python3-vcstool \
     && rm -rf /var/lib/apt/lists/*
 
+# setup environment
+ENV LANG C.UTF-8
+ENV LC_ALL C.UTF-8
+
 # bootstrap rosdep
-RUN rosdep init && \
-  rosdep update --rosdistro $ROS_DISTRO
+RUN rosdep init \
+    && rosdep update --include-eol-distros
 
 # setup colcon mixin and metadata
 RUN colcon mixin add default \
@@ -24,8 +45,18 @@ RUN colcon mixin add default \
       https://raw.githubusercontent.com/colcon/colcon-metadata-repository/master/index.yaml && \
     colcon metadata update
 
+# install python packages
+RUN pip3 install -U \
+    argcomplete
+
 # install ros2 packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-rolling-ros-base=0.10.0-2* \
+ENV ROS_DISTRO crystal
+RUN apt-get update && apt-get install -y \
+    ros-crystal-ros-core=0.6.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
+# setup entrypoint
+COPY ./ros_entrypoint.sh /
+
+ENTRYPOINT ["/ros_entrypoint.sh"]
+CMD ["bash"]
diff --git a/ros_humble-ros-core-jammy/ros_entrypoint.sh b/ros_crystal-ros-core-bionic/ros_entrypoint.sh
similarity index 55%
copy from ros_humble-ros-core-jammy/ros_entrypoint.sh
copy to ros_crystal-ros-core-bionic/ros_entrypoint.sh
index 28bc65a..80f3ce3 100755
--- a/ros_humble-ros-core-jammy/ros_entrypoint.sh
+++ b/ros_crystal-ros-core-bionic/ros_entrypoint.sh
@@ -2,5 +2,5 @@
 set -e
 
 # setup ros2 environment
-source "/opt/ros/$ROS_DISTRO/setup.bash" --
+source "/opt/ros/$ROS_DISTRO/setup.bash"
 exec "$@"
diff --git a/ros_iron-perception-jammy/Dockerfile b/ros_crystal/Dockerfile
similarity index 39%
copy from ros_iron-perception-jammy/Dockerfile
copy to ros_crystal/Dockerfile
index caf7527..84a4db5 100644
--- a/ros_iron-perception-jammy/Dockerfile
+++ b/ros_crystal/Dockerfile
@@ -1,9 +1,8 @@
-# This is an auto generated Dockerfile for ros:perception
+# This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images_ros2/create_ros_image.Dockerfile.em
-FROM ros:iron-ros-base-jammy
-
+FROM ros:crystal-ros-core-bionic
 # install ros2 packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-iron-perception=0.10.0-3* \
+RUN apt-get update && apt-get install -y \
+    ros-crystal-ros-base=0.6.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_iron-ros-core-jammy/Dockerfile b/ros_dashing-ros-core-bionic/Dockerfile
similarity index 78%
copy from ros_iron-ros-core-jammy/Dockerfile
copy to ros_dashing-ros-core-bionic/Dockerfile
index 886d4b9..14b1ace 100644
--- a/ros_iron-ros-core-jammy/Dockerfile
+++ b/ros_dashing-ros-core-bionic/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-core
 # generated from docker_images_ros2/create_ros_core_image.Dockerfile.em
-FROM ubuntu:jammy
+FROM ubuntu:bionic
 
 # setup timezone
 RUN echo 'Etc/UTC' > /etc/timezone && \
@@ -15,21 +15,21 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
-
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/dashing/final/ubuntu bionic main" > /etc/apt/sources.list.d/ros2-snapshots.list
 
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
 
-ENV ROS_DISTRO iron
+ENV ROS_DISTRO dashing
 
 # install ros2 packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-iron-ros-core=0.10.0-3* \
+    ros-dashing-ros-core=0.7.4-1* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
diff --git a/ros_humble-ros-core-jammy/ros_entrypoint.sh b/ros_dashing-ros-core-bionic/ros_entrypoint.sh
similarity index 55%
copy from ros_humble-ros-core-jammy/ros_entrypoint.sh
copy to ros_dashing-ros-core-bionic/ros_entrypoint.sh
index 28bc65a..80f3ce3 100755
--- a/ros_humble-ros-core-jammy/ros_entrypoint.sh
+++ b/ros_dashing-ros-core-bionic/ros_entrypoint.sh
@@ -2,5 +2,5 @@
 set -e
 
 # setup ros2 environment
-source "/opt/ros/$ROS_DISTRO/setup.bash" --
+source "/opt/ros/$ROS_DISTRO/setup.bash"
 exec "$@"
diff --git a/ros_iron-ros-core-jammy/Dockerfile b/ros_dashing-ros1-bridge-bionic/Dockerfile
similarity index 26%
copy from ros_iron-ros-core-jammy/Dockerfile
copy to ros_dashing-ros1-bridge-bionic/Dockerfile
index 886d4b9..091674f 100644
--- a/ros_iron-ros-core-jammy/Dockerfile
+++ b/ros_dashing-ros1-bridge-bionic/Dockerfile
@@ -1,39 +1,35 @@
-# This is an auto generated Dockerfile for ros:ros-core
-# generated from docker_images_ros2/create_ros_core_image.Dockerfile.em
-FROM ubuntu:jammy
-
-# setup timezone
-RUN echo 'Etc/UTC' > /etc/timezone && \
-    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
-    apt-get update && \
-    apt-get install -q -y --no-install-recommends tzdata && \
-    rm -rf /var/lib/apt/lists/*
-
-# install packages
-RUN apt-get update && apt-get install -q -y --no-install-recommends \
-    dirmngr \
-    gnupg2 \
-    && rm -rf /var/lib/apt/lists/*
-
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
+# This is an auto generated Dockerfile for ros:ros1-bridge
+# generated from docker_images_ros2/ros1_bridge/create_ros_ros1_bridge_image.Dockerfile.em
+FROM ros:dashing-ros-base-bionic
 
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/melodic/final/ubuntu bionic main" > /etc/apt/sources.list.d/ros1-snapshots.list
 
-# setup environment
-ENV LANG C.UTF-8
-ENV LC_ALL C.UTF-8
+ENV ROS1_DISTRO melodic
+ENV ROS2_DISTRO dashing
 
-ENV ROS_DISTRO iron
+# install ros packages
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    ros-melodic-ros-comm=1.14.13-1* \
+    ros-melodic-roscpp-tutorials=0.9.3-1* \
+    ros-melodic-rospy-tutorials=0.9.3-1* \
+    && rm -rf /var/lib/apt/lists/*
 
 # install ros2 packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-iron-ros-core=0.10.0-3* \
+    ros-dashing-ros1-bridge=0.7.9-1* \
+    ros-dashing-demo-nodes-cpp=0.7.9-1* \
+    ros-dashing-demo-nodes-py=0.7.9-1* \
+    && rm -rf /var/lib/apt/lists/*
+
+# install downstream packages
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    python-rosdep \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
 COPY ./ros_entrypoint.sh /
 
-ENTRYPOINT ["/ros_entrypoint.sh"]
-CMD ["bash"]
diff --git a/ros_dashing-ros1-bridge-bionic/ros_entrypoint.sh b/ros_dashing-ros1-bridge-bionic/ros_entrypoint.sh
new file mode 100755
index 0000000..662a9e7
--- /dev/null
+++ b/ros_dashing-ros1-bridge-bionic/ros_entrypoint.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -e
+
+# unsetting ROS_DISTRO to silence ROS_DISTRO override warning
+unset ROS_DISTRO
+# setup ros1 environment
+source "/opt/ros/$ROS1_DISTRO/setup.bash"
+
+# unsetting ROS_DISTRO to silence ROS_DISTRO override warning
+unset ROS_DISTRO
+# setup ros2 environment
+source "/opt/ros/$ROS2_DISTRO/setup.bash"
+
+exec "$@"
diff --git a/ros_latest/Dockerfile b/ros_dashing/Dockerfile
similarity index 93%
copy from ros_latest/Dockerfile
copy to ros_dashing/Dockerfile
index d7899fe..54d49c5 100644
--- a/ros_latest/Dockerfile
+++ b/ros_dashing/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images_ros2/create_ros_image.Dockerfile.em
-FROM ros:humble-ros-core-jammy
+FROM ros:dashing-ros-core-bionic
 
 # install bootstrap tools
 RUN apt-get update && apt-get install --no-install-recommends -y \
@@ -26,6 +26,6 @@ RUN colcon mixin add default \
 
 # install ros2 packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-humble-ros-base=0.10.0-1* \
+    ros-dashing-ros-base=0.7.4-1* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_iron-ros-core-jammy/Dockerfile b/ros_eloquent-ros-core-bionic/Dockerfile
similarity index 78%
copy from ros_iron-ros-core-jammy/Dockerfile
copy to ros_eloquent-ros-core-bionic/Dockerfile
index 886d4b9..acc11fc 100644
--- a/ros_iron-ros-core-jammy/Dockerfile
+++ b/ros_eloquent-ros-core-bionic/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-core
 # generated from docker_images_ros2/create_ros_core_image.Dockerfile.em
-FROM ubuntu:jammy
+FROM ubuntu:bionic
 
 # setup timezone
 RUN echo 'Etc/UTC' > /etc/timezone && \
@@ -15,21 +15,21 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
-
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/eloquent/final/ubuntu bionic main" > /etc/apt/sources.list.d/ros2-snapshots.list
 
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
 
-ENV ROS_DISTRO iron
+ENV ROS_DISTRO eloquent
 
 # install ros2 packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-iron-ros-core=0.10.0-3* \
+    ros-eloquent-ros-core=0.8.5-1* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
diff --git a/ros_humble-ros-core-jammy/ros_entrypoint.sh b/ros_eloquent-ros-core-bionic/ros_entrypoint.sh
similarity index 55%
copy from ros_humble-ros-core-jammy/ros_entrypoint.sh
copy to ros_eloquent-ros-core-bionic/ros_entrypoint.sh
index 28bc65a..80f3ce3 100755
--- a/ros_humble-ros-core-jammy/ros_entrypoint.sh
+++ b/ros_eloquent-ros-core-bionic/ros_entrypoint.sh
@@ -2,5 +2,5 @@
 set -e
 
 # setup ros2 environment
-source "/opt/ros/$ROS_DISTRO/setup.bash" --
+source "/opt/ros/$ROS_DISTRO/setup.bash"
 exec "$@"
diff --git a/ros_iron-ros-core-jammy/Dockerfile b/ros_eloquent-ros1-bridge-bionic/Dockerfile
similarity index 25%
copy from ros_iron-ros-core-jammy/Dockerfile
copy to ros_eloquent-ros1-bridge-bionic/Dockerfile
index 886d4b9..53e75d3 100644
--- a/ros_iron-ros-core-jammy/Dockerfile
+++ b/ros_eloquent-ros1-bridge-bionic/Dockerfile
@@ -1,39 +1,35 @@
-# This is an auto generated Dockerfile for ros:ros-core
-# generated from docker_images_ros2/create_ros_core_image.Dockerfile.em
-FROM ubuntu:jammy
-
-# setup timezone
-RUN echo 'Etc/UTC' > /etc/timezone && \
-    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
-    apt-get update && \
-    apt-get install -q -y --no-install-recommends tzdata && \
-    rm -rf /var/lib/apt/lists/*
-
-# install packages
-RUN apt-get update && apt-get install -q -y --no-install-recommends \
-    dirmngr \
-    gnupg2 \
-    && rm -rf /var/lib/apt/lists/*
-
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
+# This is an auto generated Dockerfile for ros:ros1-bridge
+# generated from docker_images_ros2/ros1_bridge/create_ros_ros1_bridge_image.Dockerfile.em
+FROM ros:eloquent-ros-base-bionic
 
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/melodic/final/ubuntu bionic main" > /etc/apt/sources.list.d/ros1-snapshots.list
 
-# setup environment
-ENV LANG C.UTF-8
-ENV LC_ALL C.UTF-8
+ENV ROS1_DISTRO melodic
+ENV ROS2_DISTRO eloquent
 
-ENV ROS_DISTRO iron
+# install ros packages
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    ros-melodic-ros-comm=1.14.13-1* \
+    ros-melodic-roscpp-tutorials=0.9.3-1* \
+    ros-melodic-rospy-tutorials=0.9.3-1* \
+    && rm -rf /var/lib/apt/lists/*
 
 # install ros2 packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-iron-ros-core=0.10.0-3* \
+    ros-eloquent-ros1-bridge=0.8.3-1* \
+    ros-eloquent-demo-nodes-cpp=0.8.4-1* \
+    ros-eloquent-demo-nodes-py=0.8.4-1* \
+    && rm -rf /var/lib/apt/lists/*
+
+# install downstream packages
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    python-rosdep \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
 COPY ./ros_entrypoint.sh /
 
-ENTRYPOINT ["/ros_entrypoint.sh"]
-CMD ["bash"]
diff --git a/ros_eloquent-ros1-bridge-bionic/ros_entrypoint.sh b/ros_eloquent-ros1-bridge-bionic/ros_entrypoint.sh
new file mode 100755
index 0000000..662a9e7
--- /dev/null
+++ b/ros_eloquent-ros1-bridge-bionic/ros_entrypoint.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -e
+
+# unsetting ROS_DISTRO to silence ROS_DISTRO override warning
+unset ROS_DISTRO
+# setup ros1 environment
+source "/opt/ros/$ROS1_DISTRO/setup.bash"
+
+# unsetting ROS_DISTRO to silence ROS_DISTRO override warning
+unset ROS_DISTRO
+# setup ros2 environment
+source "/opt/ros/$ROS2_DISTRO/setup.bash"
+
+exec "$@"
diff --git a/ros_latest/Dockerfile b/ros_eloquent/Dockerfile
similarity index 93%
copy from ros_latest/Dockerfile
copy to ros_eloquent/Dockerfile
index d7899fe..6b4958b 100644
--- a/ros_latest/Dockerfile
+++ b/ros_eloquent/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images_ros2/create_ros_image.Dockerfile.em
-FROM ros:humble-ros-core-jammy
+FROM ros:eloquent-ros-core-bionic
 
 # install bootstrap tools
 RUN apt-get update && apt-get install --no-install-recommends -y \
@@ -26,6 +26,6 @@ RUN colcon mixin add default \
 
 # install ros2 packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-humble-ros-base=0.10.0-1* \
+    ros-eloquent-ros-base=0.8.5-1* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_iron-ros-core-jammy/Dockerfile b/ros_foxy-ros-core-focal/Dockerfile
similarity index 79%
copy from ros_iron-ros-core-jammy/Dockerfile
copy to ros_foxy-ros-core-focal/Dockerfile
index 886d4b9..1af2cfc 100644
--- a/ros_iron-ros-core-jammy/Dockerfile
+++ b/ros_foxy-ros-core-focal/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-core
 # generated from docker_images_ros2/create_ros_core_image.Dockerfile.em
-FROM ubuntu:jammy
+FROM ubuntu:focal
 
 # setup timezone
 RUN echo 'Etc/UTC' > /etc/timezone && \
@@ -15,21 +15,21 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
-
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/foxy/final/ubuntu focal main" > /etc/apt/sources.list.d/ros2-snapshots.list
 
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
 
-ENV ROS_DISTRO iron
+ENV ROS_DISTRO foxy
 
 # install ros2 packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-iron-ros-core=0.10.0-3* \
+    ros-foxy-ros-core=0.9.2-1* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
diff --git a/ros_humble-ros-core-jammy/ros_entrypoint.sh b/ros_foxy-ros-core-focal/ros_entrypoint.sh
similarity index 100%
copy from ros_humble-ros-core-jammy/ros_entrypoint.sh
copy to ros_foxy-ros-core-focal/ros_entrypoint.sh
diff --git a/ros_noetic-ros-core-focal/Dockerfile b/ros_foxy-ros1-bridge-focal/Dockerfile
similarity index 41%
copy from ros_noetic-ros-core-focal/Dockerfile
copy to ros_foxy-ros1-bridge-focal/Dockerfile
index cb598df..e4c2f83 100644
--- a/ros_noetic-ros-core-focal/Dockerfile
+++ b/ros_foxy-ros1-bridge-focal/Dockerfile
@@ -1,39 +1,30 @@
-# This is an auto generated Dockerfile for ros:ros-core
-# generated from docker_images/create_ros_core_image.Dockerfile.em
-FROM ubuntu:focal
-
-# setup timezone
-RUN echo 'Etc/UTC' > /etc/timezone && \
-    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
-    apt-get update && \
-    apt-get install -q -y --no-install-recommends tzdata && \
-    rm -rf /var/lib/apt/lists/*
-
-# install packages
-RUN apt-get update && apt-get install -q -y --no-install-recommends \
-    dirmngr \
-    gnupg2 \
-    && rm -rf /var/lib/apt/lists/*
-
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
+# This is an auto generated Dockerfile for ros:ros1-bridge
+# generated from docker_images_ros2/ros1_bridge/create_ros_ros1_bridge_image.Dockerfile.em
+FROM ros:foxy-ros-base-focal
 
 # setup keys
 RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
 
-# setup environment
-ENV LANG C.UTF-8
-ENV LC_ALL C.UTF-8
+# setup sources.list
+RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
 
-ENV ROS_DISTRO noetic
+ENV ROS1_DISTRO noetic
+ENV ROS2_DISTRO foxy
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-ros-core=1.5.0-1* \
+    ros-noetic-ros-comm=1.16.0-1* \
+    ros-noetic-roscpp-tutorials=0.10.2-1* \
+    ros-noetic-rospy-tutorials=0.10.2-1* \
+    && rm -rf /var/lib/apt/lists/*
+
+# install ros2 packages
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    ros-foxy-ros1-bridge=0.9.7-1* \
+    ros-foxy-demo-nodes-cpp=0.9.4-1* \
+    ros-foxy-demo-nodes-py=0.9.4-1* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
 COPY ./ros_entrypoint.sh /
 
-ENTRYPOINT ["/ros_entrypoint.sh"]
-CMD ["bash"]
diff --git a/ros_foxy-ros1-bridge-focal/ros_entrypoint.sh b/ros_foxy-ros1-bridge-focal/ros_entrypoint.sh
new file mode 100755
index 0000000..9251c81
--- /dev/null
+++ b/ros_foxy-ros1-bridge-focal/ros_entrypoint.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -e
+
+# unsetting ROS_DISTRO to silence ROS_DISTRO override warning
+unset ROS_DISTRO
+# setup ros1 environment
+source "/opt/ros/$ROS1_DISTRO/setup.bash" --
+
+# unsetting ROS_DISTRO to silence ROS_DISTRO override warning
+unset ROS_DISTRO
+# setup ros2 environment
+source "/opt/ros/$ROS2_DISTRO/setup.bash" --
+
+exec "$@"
diff --git a/ros_iron/Dockerfile b/ros_foxy/Dockerfile
similarity index 93%
copy from ros_iron/Dockerfile
copy to ros_foxy/Dockerfile
index 1da2cfe..1dee5eb 100644
--- a/ros_iron/Dockerfile
+++ b/ros_foxy/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images_ros2/create_ros_image.Dockerfile.em
-FROM ros:iron-ros-core-jammy
+FROM ros:foxy-ros-core-focal
 
 # install bootstrap tools
 RUN apt-get update && apt-get install --no-install-recommends -y \
@@ -26,6 +26,6 @@ RUN colcon mixin add default \
 
 # install ros2 packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-iron-ros-base=0.10.0-3* \
+    ros-foxy-ros-base=0.9.2-1* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_iron-ros-core-jammy/Dockerfile b/ros_galactic-ros-core-focal/Dockerfile
similarity index 78%
copy from ros_iron-ros-core-jammy/Dockerfile
copy to ros_galactic-ros-core-focal/Dockerfile
index 886d4b9..fd507ad 100644
--- a/ros_iron-ros-core-jammy/Dockerfile
+++ b/ros_galactic-ros-core-focal/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-core
 # generated from docker_images_ros2/create_ros_core_image.Dockerfile.em
-FROM ubuntu:jammy
+FROM ubuntu:focal
 
 # setup timezone
 RUN echo 'Etc/UTC' > /etc/timezone && \
@@ -15,21 +15,21 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
-
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/galactic/final/ubuntu focal main" > /etc/apt/sources.list.d/ros2-snapshots.list
 
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
 
-ENV ROS_DISTRO iron
+ENV ROS_DISTRO galactic
 
 # install ros2 packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-iron-ros-core=0.10.0-3* \
+    ros-galactic-ros-core=0.9.3-2* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
diff --git a/ros_humble-ros-core-jammy/ros_entrypoint.sh b/ros_galactic-ros-core-focal/ros_entrypoint.sh
similarity index 100%
copy from ros_humble-ros-core-jammy/ros_entrypoint.sh
copy to ros_galactic-ros-core-focal/ros_entrypoint.sh
diff --git a/ros_noetic-ros-core-focal/Dockerfile b/ros_galactic-ros1-bridge-focal/Dockerfile
similarity index 41%
copy from ros_noetic-ros-core-focal/Dockerfile
copy to ros_galactic-ros1-bridge-focal/Dockerfile
index cb598df..80b5290 100644
--- a/ros_noetic-ros-core-focal/Dockerfile
+++ b/ros_galactic-ros1-bridge-focal/Dockerfile
@@ -1,39 +1,30 @@
-# This is an auto generated Dockerfile for ros:ros-core
-# generated from docker_images/create_ros_core_image.Dockerfile.em
-FROM ubuntu:focal
-
-# setup timezone
-RUN echo 'Etc/UTC' > /etc/timezone && \
-    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
-    apt-get update && \
-    apt-get install -q -y --no-install-recommends tzdata && \
-    rm -rf /var/lib/apt/lists/*
-
-# install packages
-RUN apt-get update && apt-get install -q -y --no-install-recommends \
-    dirmngr \
-    gnupg2 \
-    && rm -rf /var/lib/apt/lists/*
-
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
+# This is an auto generated Dockerfile for ros:ros1-bridge
+# generated from docker_images_ros2/ros1_bridge/create_ros_ros1_bridge_image.Dockerfile.em
+FROM ros:galactic-ros-base-focal
 
 # setup keys
 RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
 
-# setup environment
-ENV LANG C.UTF-8
-ENV LC_ALL C.UTF-8
+# setup sources.list
+RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
 
-ENV ROS_DISTRO noetic
+ENV ROS1_DISTRO noetic
+ENV ROS2_DISTRO galactic
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-ros-core=1.5.0-1* \
+    ros-noetic-ros-comm=1.16.0-1* \
+    ros-noetic-roscpp-tutorials=0.10.2-1* \
+    ros-noetic-rospy-tutorials=0.10.2-1* \
+    && rm -rf /var/lib/apt/lists/*
+
+# install ros2 packages
+RUN apt-get update && apt-get install -y --no-install-recommends \
+    ros-galactic-ros1-bridge=0.10.1-2* \
+    ros-galactic-demo-nodes-cpp=0.14.4-1* \
+    ros-galactic-demo-nodes-py=0.14.4-1* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
 COPY ./ros_entrypoint.sh /
 
-ENTRYPOINT ["/ros_entrypoint.sh"]
-CMD ["bash"]
diff --git a/ros_galactic-ros1-bridge-focal/ros_entrypoint.sh b/ros_galactic-ros1-bridge-focal/ros_entrypoint.sh
new file mode 100755
index 0000000..9251c81
--- /dev/null
+++ b/ros_galactic-ros1-bridge-focal/ros_entrypoint.sh
@@ -0,0 +1,14 @@
+#!/bin/bash
+set -e
+
+# unsetting ROS_DISTRO to silence ROS_DISTRO override warning
+unset ROS_DISTRO
+# setup ros1 environment
+source "/opt/ros/$ROS1_DISTRO/setup.bash" --
+
+# unsetting ROS_DISTRO to silence ROS_DISTRO override warning
+unset ROS_DISTRO
+# setup ros2 environment
+source "/opt/ros/$ROS2_DISTRO/setup.bash" --
+
+exec "$@"
diff --git a/ros_latest/Dockerfile b/ros_galactic/Dockerfile
similarity index 93%
copy from ros_latest/Dockerfile
copy to ros_galactic/Dockerfile
index d7899fe..dc6ec3c 100644
--- a/ros_latest/Dockerfile
+++ b/ros_galactic/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images_ros2/create_ros_image.Dockerfile.em
-FROM ros:humble-ros-core-jammy
+FROM ros:galactic-ros-core-focal
 
 # install bootstrap tools
 RUN apt-get update && apt-get install --no-install-recommends -y \
@@ -26,6 +26,6 @@ RUN colcon mixin add default \
 
 # install ros2 packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-humble-ros-base=0.10.0-1* \
+    ros-galactic-ros-base=0.9.3-2* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_humble-ros-core-jammy/Dockerfile b/ros_humble-ros-core-jammy/Dockerfile
index 4fb28b7..9cde056 100644
--- a/ros_humble-ros-core-jammy/Dockerfile
+++ b/ros_humble-ros-core-jammy/Dockerfile
@@ -15,12 +15,12 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
-
 # setup keys
 RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
 
+# setup sources.list
+RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
+
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
diff --git a/ros_noetic-perception-focal/Dockerfile b/ros_indigo-perception-trusty/Dockerfile
similarity index 57%
copy from ros_noetic-perception-focal/Dockerfile
copy to ros_indigo-perception-trusty/Dockerfile
index 4ab48ba..ce356ff 100644
--- a/ros_noetic-perception-focal/Dockerfile
+++ b/ros_indigo-perception-trusty/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:perception
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:indigo-ros-base-trusty
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-perception=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-indigo-perception=1.1.6-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-robot-focal/Dockerfile b/ros_indigo-robot-trusty/Dockerfile
similarity index 57%
copy from ros_noetic-robot-focal/Dockerfile
copy to ros_indigo-robot-trusty/Dockerfile
index b087a26..a1c59ed 100644
--- a/ros_noetic-robot-focal/Dockerfile
+++ b/ros_indigo-robot-trusty/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:robot
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:indigo-ros-base-trusty
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-robot=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-indigo-robot=1.1.6-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-ros-core-focal/Dockerfile b/ros_indigo-ros-core-trusty/Dockerfile
similarity index 46%
copy from ros_noetic-ros-core-focal/Dockerfile
copy to ros_indigo-ros-core-trusty/Dockerfile
index cb598df..afaf098 100644
--- a/ros_noetic-ros-core-focal/Dockerfile
+++ b/ros_indigo-ros-core-trusty/Dockerfile
@@ -1,35 +1,38 @@
 # This is an auto generated Dockerfile for ros:ros-core
 # generated from docker_images/create_ros_core_image.Dockerfile.em
-FROM ubuntu:focal
-
-# setup timezone
-RUN echo 'Etc/UTC' > /etc/timezone && \
-    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
-    apt-get update && \
-    apt-get install -q -y --no-install-recommends tzdata && \
-    rm -rf /var/lib/apt/lists/*
+FROM ubuntu:trusty
 
 # install packages
-RUN apt-get update && apt-get install -q -y --no-install-recommends \
+RUN apt-get update && apt-get install -q -y \
     dirmngr \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
 # setup sources.list
-RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
+RUN echo "deb http://snapshots.ros.org/indigo/final/ubuntu trusty main" > /etc/apt/sources.list.d/ros1-snapshots.list
 
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# install bootstrap tools
+RUN apt-get update && apt-get install --no-install-recommends -y \
+    python-rosdep \
+    python-rosinstall \
+    python-vcstools \
+    && rm -rf /var/lib/apt/lists/*
 
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
 
-ENV ROS_DISTRO noetic
+# bootstrap rosdep
+RUN rosdep init \
+    && rosdep update --include-eol-distros
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-ros-core=1.5.0-1* \
+ENV ROS_DISTRO indigo
+RUN apt-get update && apt-get install -y \
+    ros-indigo-ros-core=1.1.6-0* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
diff --git a/ros_noetic-ros-core-focal/ros_entrypoint.sh b/ros_indigo-ros-core-trusty/ros_entrypoint.sh
similarity index 55%
copy from ros_noetic-ros-core-focal/ros_entrypoint.sh
copy to ros_indigo-ros-core-trusty/ros_entrypoint.sh
index 6339274..f481977 100755
--- a/ros_noetic-ros-core-focal/ros_entrypoint.sh
+++ b/ros_indigo-ros-core-trusty/ros_entrypoint.sh
@@ -2,5 +2,5 @@
 set -e
 
 # setup ros environment
-source "/opt/ros/$ROS_DISTRO/setup.bash" --
+source "/opt/ros/$ROS_DISTRO/setup.bash"
 exec "$@"
diff --git a/ros_noetic-robot-focal/Dockerfile b/ros_indigo/Dockerfile
similarity index 40%
copy from ros_noetic-robot-focal/Dockerfile
copy to ros_indigo/Dockerfile
index b087a26..b1fb646 100644
--- a/ros_noetic-robot-focal/Dockerfile
+++ b/ros_indigo/Dockerfile
@@ -1,9 +1,9 @@
-# This is an auto generated Dockerfile for ros:robot
+# This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:indigo-ros-core-trusty
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-robot=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-indigo-ros-base=1.1.6-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_iron-ros-core-jammy/Dockerfile b/ros_iron-ros-core-jammy/Dockerfile
index 886d4b9..e92e72b 100644
--- a/ros_iron-ros-core-jammy/Dockerfile
+++ b/ros_iron-ros-core-jammy/Dockerfile
@@ -15,12 +15,12 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
-
 # setup keys
 RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
 
+# setup sources.list
+RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
+
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
diff --git a/ros_noetic-perception-focal/Dockerfile b/ros_jade-perception-trusty/Dockerfile
similarity index 57%
copy from ros_noetic-perception-focal/Dockerfile
copy to ros_jade-perception-trusty/Dockerfile
index 4ab48ba..f3081f4 100644
--- a/ros_noetic-perception-focal/Dockerfile
+++ b/ros_jade-perception-trusty/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:perception
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:jade-ros-base-trusty
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-perception=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-jade-perception=1.2.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-robot-focal/Dockerfile b/ros_jade-robot-trusty/Dockerfile
similarity index 57%
copy from ros_noetic-robot-focal/Dockerfile
copy to ros_jade-robot-trusty/Dockerfile
index b087a26..88435bf 100644
--- a/ros_noetic-robot-focal/Dockerfile
+++ b/ros_jade-robot-trusty/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:robot
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:jade-ros-base-trusty
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-robot=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-jade-robot=1.2.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-ros-core-focal/Dockerfile b/ros_jade-ros-core-trusty/Dockerfile
similarity index 46%
copy from ros_noetic-ros-core-focal/Dockerfile
copy to ros_jade-ros-core-trusty/Dockerfile
index cb598df..643e6b3 100644
--- a/ros_noetic-ros-core-focal/Dockerfile
+++ b/ros_jade-ros-core-trusty/Dockerfile
@@ -1,35 +1,38 @@
 # This is an auto generated Dockerfile for ros:ros-core
 # generated from docker_images/create_ros_core_image.Dockerfile.em
-FROM ubuntu:focal
-
-# setup timezone
-RUN echo 'Etc/UTC' > /etc/timezone && \
-    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
-    apt-get update && \
-    apt-get install -q -y --no-install-recommends tzdata && \
-    rm -rf /var/lib/apt/lists/*
+FROM ubuntu:trusty
 
 # install packages
-RUN apt-get update && apt-get install -q -y --no-install-recommends \
+RUN apt-get update && apt-get install -q -y \
     dirmngr \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
 # setup sources.list
-RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
+RUN echo "deb http://snapshots.ros.org/jade/final/ubuntu trusty main" > /etc/apt/sources.list.d/ros1-snapshots.list
 
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# install bootstrap tools
+RUN apt-get update && apt-get install --no-install-recommends -y \
+    python-rosdep \
+    python-rosinstall \
+    python-vcstools \
+    && rm -rf /var/lib/apt/lists/*
 
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
 
-ENV ROS_DISTRO noetic
+# bootstrap rosdep
+RUN rosdep init \
+    && rosdep update --include-eol-distros
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-ros-core=1.5.0-1* \
+ENV ROS_DISTRO jade
+RUN apt-get update && apt-get install -y \
+    ros-jade-ros-core=1.2.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
diff --git a/ros_noetic-ros-core-focal/ros_entrypoint.sh b/ros_jade-ros-core-trusty/ros_entrypoint.sh
similarity index 55%
copy from ros_noetic-ros-core-focal/ros_entrypoint.sh
copy to ros_jade-ros-core-trusty/ros_entrypoint.sh
index 6339274..f481977 100755
--- a/ros_noetic-ros-core-focal/ros_entrypoint.sh
+++ b/ros_jade-ros-core-trusty/ros_entrypoint.sh
@@ -2,5 +2,5 @@
 set -e
 
 # setup ros environment
-source "/opt/ros/$ROS_DISTRO/setup.bash" --
+source "/opt/ros/$ROS_DISTRO/setup.bash"
 exec "$@"
diff --git a/ros_noetic-robot-focal/Dockerfile b/ros_jade/Dockerfile
similarity index 40%
copy from ros_noetic-robot-focal/Dockerfile
copy to ros_jade/Dockerfile
index b087a26..eb7d74a 100644
--- a/ros_noetic-robot-focal/Dockerfile
+++ b/ros_jade/Dockerfile
@@ -1,9 +1,9 @@
-# This is an auto generated Dockerfile for ros:robot
+# This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:jade-ros-core-trusty
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-robot=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-jade-ros-base=1.2.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-perception-focal/Dockerfile b/ros_kinetic-perception-xenial/Dockerfile
similarity index 77%
copy from ros_noetic-perception-focal/Dockerfile
copy to ros_kinetic-perception-xenial/Dockerfile
index 4ab48ba..9508d49 100644
--- a/ros_noetic-perception-focal/Dockerfile
+++ b/ros_kinetic-perception-xenial/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:perception
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:kinetic-ros-base-xenial
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-perception=1.5.0-1* \
+    ros-kinetic-perception=1.3.2-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-robot-focal/Dockerfile b/ros_kinetic-robot-xenial/Dockerfile
similarity index 78%
copy from ros_noetic-robot-focal/Dockerfile
copy to ros_kinetic-robot-xenial/Dockerfile
index b087a26..c25faef 100644
--- a/ros_noetic-robot-focal/Dockerfile
+++ b/ros_kinetic-robot-xenial/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:robot
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:kinetic-ros-base-xenial
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-robot=1.5.0-1* \
+    ros-kinetic-robot=1.3.2-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-ros-core-focal/Dockerfile b/ros_kinetic-ros-core-xenial/Dockerfile
similarity index 58%
copy from ros_noetic-ros-core-focal/Dockerfile
copy to ros_kinetic-ros-core-xenial/Dockerfile
index cb598df..bdb5a0c 100644
--- a/ros_noetic-ros-core-focal/Dockerfile
+++ b/ros_kinetic-ros-core-xenial/Dockerfile
@@ -1,13 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-core
 # generated from docker_images/create_ros_core_image.Dockerfile.em
-FROM ubuntu:focal
-
-# setup timezone
-RUN echo 'Etc/UTC' > /etc/timezone && \
-    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
-    apt-get update && \
-    apt-get install -q -y --no-install-recommends tzdata && \
-    rm -rf /var/lib/apt/lists/*
+FROM ubuntu:xenial
 
 # install packages
 RUN apt-get update && apt-get install -q -y --no-install-recommends \
@@ -15,21 +8,21 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
-
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/kinetic/final/ubuntu xenial main" > /etc/apt/sources.list.d/ros1-snapshots.list
 
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
 
-ENV ROS_DISTRO noetic
+ENV ROS_DISTRO kinetic
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-ros-core=1.5.0-1* \
+    ros-kinetic-ros-core=1.3.2-0* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
diff --git a/ros_noetic-ros-core-focal/ros_entrypoint.sh b/ros_kinetic-ros-core-xenial/ros_entrypoint.sh
similarity index 55%
copy from ros_noetic-ros-core-focal/ros_entrypoint.sh
copy to ros_kinetic-ros-core-xenial/ros_entrypoint.sh
index 6339274..f481977 100755
--- a/ros_noetic-ros-core-focal/ros_entrypoint.sh
+++ b/ros_kinetic-ros-core-xenial/ros_entrypoint.sh
@@ -2,5 +2,5 @@
 set -e
 
 # setup ros environment
-source "/opt/ros/$ROS_DISTRO/setup.bash" --
+source "/opt/ros/$ROS_DISTRO/setup.bash"
 exec "$@"
diff --git a/ros_noetic/Dockerfile b/ros_kinetic/Dockerfile
similarity index 77%
copy from ros_noetic/Dockerfile
copy to ros_kinetic/Dockerfile
index 7ff1809..4836712 100644
--- a/ros_noetic/Dockerfile
+++ b/ros_kinetic/Dockerfile
@@ -1,13 +1,13 @@
 # This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-core-focal
+FROM ros:kinetic-ros-core-xenial
 
 # install bootstrap tools
 RUN apt-get update && apt-get install --no-install-recommends -y \
     build-essential \
-    python3-rosdep \
-    python3-rosinstall \
-    python3-vcstools \
+    python-rosdep \
+    python-rosinstall \
+    python-vcstools \
     && rm -rf /var/lib/apt/lists/*
 
 # bootstrap rosdep
@@ -16,6 +16,6 @@ RUN rosdep init && \
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-ros-base=1.5.0-1* \
+    ros-kinetic-ros-base=1.3.2-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-perception-focal/Dockerfile b/ros_lunar-perception-xenial/Dockerfile
similarity index 57%
copy from ros_noetic-perception-focal/Dockerfile
copy to ros_lunar-perception-xenial/Dockerfile
index 4ab48ba..9f5ee53 100644
--- a/ros_noetic-perception-focal/Dockerfile
+++ b/ros_lunar-perception-xenial/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:perception
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:lunar-ros-base-xenial
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-perception=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-lunar-perception=1.3.2-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-perception-focal/Dockerfile b/ros_lunar-perception-zesty/Dockerfile
similarity index 57%
copy from ros_noetic-perception-focal/Dockerfile
copy to ros_lunar-perception-zesty/Dockerfile
index 4ab48ba..2c963cf 100644
--- a/ros_noetic-perception-focal/Dockerfile
+++ b/ros_lunar-perception-zesty/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:perception
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:lunar-ros-base-zesty
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-perception=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-lunar-perception=1.3.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-robot-focal/Dockerfile b/ros_lunar-robot-xenial/Dockerfile
similarity index 57%
copy from ros_noetic-robot-focal/Dockerfile
copy to ros_lunar-robot-xenial/Dockerfile
index b087a26..7c72a0e 100644
--- a/ros_noetic-robot-focal/Dockerfile
+++ b/ros_lunar-robot-xenial/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:robot
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:lunar-ros-base-xenial
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-robot=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-lunar-robot=1.3.2-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-robot-focal/Dockerfile b/ros_lunar-robot-zesty/Dockerfile
similarity index 57%
copy from ros_noetic-robot-focal/Dockerfile
copy to ros_lunar-robot-zesty/Dockerfile
index b087a26..119a419 100644
--- a/ros_noetic-robot-focal/Dockerfile
+++ b/ros_lunar-robot-zesty/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:robot
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:lunar-ros-base-zesty
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-robot=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-lunar-robot=1.3.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-robot-focal/Dockerfile b/ros_lunar-ros-base-zesty/Dockerfile
similarity index 40%
copy from ros_noetic-robot-focal/Dockerfile
copy to ros_lunar-ros-base-zesty/Dockerfile
index b087a26..a987a3f 100644
--- a/ros_noetic-robot-focal/Dockerfile
+++ b/ros_lunar-ros-base-zesty/Dockerfile
@@ -1,9 +1,9 @@
-# This is an auto generated Dockerfile for ros:robot
+# This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:lunar-ros-core-zesty
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-robot=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-lunar-ros-base=1.3.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-ros-core-focal/Dockerfile b/ros_lunar-ros-core-xenial/Dockerfile
similarity index 46%
copy from ros_noetic-ros-core-focal/Dockerfile
copy to ros_lunar-ros-core-xenial/Dockerfile
index cb598df..147ff4b 100644
--- a/ros_noetic-ros-core-focal/Dockerfile
+++ b/ros_lunar-ros-core-xenial/Dockerfile
@@ -1,35 +1,38 @@
 # This is an auto generated Dockerfile for ros:ros-core
 # generated from docker_images/create_ros_core_image.Dockerfile.em
-FROM ubuntu:focal
-
-# setup timezone
-RUN echo 'Etc/UTC' > /etc/timezone && \
-    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
-    apt-get update && \
-    apt-get install -q -y --no-install-recommends tzdata && \
-    rm -rf /var/lib/apt/lists/*
+FROM ubuntu:xenial
 
 # install packages
-RUN apt-get update && apt-get install -q -y --no-install-recommends \
+RUN apt-get update && apt-get install -q -y \
     dirmngr \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
 # setup sources.list
-RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
+RUN echo "deb http://snapshots.ros.org/lunar/final/ubuntu xenial main" > /etc/apt/sources.list.d/ros1-snapshots.list
 
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# install bootstrap tools
+RUN apt-get update && apt-get install --no-install-recommends -y \
+    python-rosdep \
+    python-rosinstall \
+    python-vcstools \
+    && rm -rf /var/lib/apt/lists/*
 
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
 
-ENV ROS_DISTRO noetic
+# bootstrap rosdep
+RUN rosdep init \
+    && rosdep update --include-eol-distros
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-ros-core=1.5.0-1* \
+ENV ROS_DISTRO lunar
+RUN apt-get update && apt-get install -y \
+    ros-lunar-ros-core=1.3.2-0* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
diff --git a/ros_noetic-ros-core-focal/ros_entrypoint.sh b/ros_lunar-ros-core-xenial/ros_entrypoint.sh
similarity index 55%
copy from ros_noetic-ros-core-focal/ros_entrypoint.sh
copy to ros_lunar-ros-core-xenial/ros_entrypoint.sh
index 6339274..f481977 100755
--- a/ros_noetic-ros-core-focal/ros_entrypoint.sh
+++ b/ros_lunar-ros-core-xenial/ros_entrypoint.sh
@@ -2,5 +2,5 @@
 set -e
 
 # setup ros environment
-source "/opt/ros/$ROS_DISTRO/setup.bash" --
+source "/opt/ros/$ROS_DISTRO/setup.bash"
 exec "$@"
diff --git a/ros_noetic-ros-core-focal/Dockerfile b/ros_lunar-ros-core-zesty/Dockerfile
similarity index 41%
copy from ros_noetic-ros-core-focal/Dockerfile
copy to ros_lunar-ros-core-zesty/Dockerfile
index cb598df..dd6b3f5 100644
--- a/ros_noetic-ros-core-focal/Dockerfile
+++ b/ros_lunar-ros-core-zesty/Dockerfile
@@ -1,35 +1,39 @@
 # This is an auto generated Dockerfile for ros:ros-core
 # generated from docker_images/create_ros_core_image.Dockerfile.em
-FROM ubuntu:focal
-
-# setup timezone
-RUN echo 'Etc/UTC' > /etc/timezone && \
-    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
-    apt-get update && \
-    apt-get install -q -y --no-install-recommends tzdata && \
-    rm -rf /var/lib/apt/lists/*
+FROM ubuntu:zesty
+RUN find /etc/apt/ -name *.list -exec sed -i -e 's/archive.ubuntu.com\|security.ubuntu.com/old-releases.ubuntu.com/g' {} \;
 
 # install packages
-RUN apt-get update && apt-get install -q -y --no-install-recommends \
+RUN apt-get update && apt-get install -q -y \
     dirmngr \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
 # setup sources.list
-RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
+RUN echo "deb http://snapshots.ros.org/lunar/final/ubuntu zesty main" > /etc/apt/sources.list.d/ros1-snapshots.list
 
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# install bootstrap tools
+RUN apt-get update && apt-get install --no-install-recommends -y \
+    python-rosdep \
+    python-rosinstall \
+    python-vcstools \
+    && rm -rf /var/lib/apt/lists/*
 
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
 
-ENV ROS_DISTRO noetic
+# bootstrap rosdep
+RUN rosdep init \
+    && rosdep update --include-eol-distros
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-ros-core=1.5.0-1* \
+ENV ROS_DISTRO lunar
+RUN apt-get update && apt-get install -y \
+    ros-lunar-ros-core=1.3.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
diff --git a/ros_noetic-ros-core-focal/ros_entrypoint.sh b/ros_lunar-ros-core-zesty/ros_entrypoint.sh
similarity index 55%
copy from ros_noetic-ros-core-focal/ros_entrypoint.sh
copy to ros_lunar-ros-core-zesty/ros_entrypoint.sh
index 6339274..f481977 100755
--- a/ros_noetic-ros-core-focal/ros_entrypoint.sh
+++ b/ros_lunar-ros-core-zesty/ros_entrypoint.sh
@@ -2,5 +2,5 @@
 set -e
 
 # setup ros environment
-source "/opt/ros/$ROS_DISTRO/setup.bash" --
+source "/opt/ros/$ROS_DISTRO/setup.bash"
 exec "$@"
diff --git a/ros_noetic-robot-focal/Dockerfile b/ros_lunar/Dockerfile
similarity index 40%
copy from ros_noetic-robot-focal/Dockerfile
copy to ros_lunar/Dockerfile
index b087a26..6d904ac 100644
--- a/ros_noetic-robot-focal/Dockerfile
+++ b/ros_lunar/Dockerfile
@@ -1,9 +1,9 @@
-# This is an auto generated Dockerfile for ros:robot
+# This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:lunar-ros-core-xenial
 
 # install ros packages
-RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-robot=1.5.0-1* \
+RUN apt-get update && apt-get install -y \
+    ros-lunar-ros-base=1.3.2-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-perception-focal/Dockerfile b/ros_melodic-perception-bionic/Dockerfile
similarity index 77%
copy from ros_noetic-perception-focal/Dockerfile
copy to ros_melodic-perception-bionic/Dockerfile
index 4ab48ba..5fc0a66 100644
--- a/ros_noetic-perception-focal/Dockerfile
+++ b/ros_melodic-perception-bionic/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:perception
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:melodic-ros-base-bionic
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-perception=1.5.0-1* \
+    ros-melodic-perception=1.4.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-robot-focal/Dockerfile b/ros_melodic-robot-bionic/Dockerfile
similarity index 78%
copy from ros_noetic-robot-focal/Dockerfile
copy to ros_melodic-robot-bionic/Dockerfile
index b087a26..273b7db 100644
--- a/ros_noetic-robot-focal/Dockerfile
+++ b/ros_melodic-robot-bionic/Dockerfile
@@ -1,9 +1,9 @@
 # This is an auto generated Dockerfile for ros:robot
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:melodic-ros-base-bionic
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-robot=1.5.0-1* \
+    ros-melodic-robot=1.4.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-ros-core-focal/Dockerfile b/ros_melodic-ros-core-bionic/Dockerfile
similarity index 78%
copy from ros_noetic-ros-core-focal/Dockerfile
copy to ros_melodic-ros-core-bionic/Dockerfile
index cb598df..89688d7 100644
--- a/ros_noetic-ros-core-focal/Dockerfile
+++ b/ros_melodic-ros-core-bionic/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-core
 # generated from docker_images/create_ros_core_image.Dockerfile.em
-FROM ubuntu:focal
+FROM ubuntu:bionic
 
 # setup timezone
 RUN echo 'Etc/UTC' > /etc/timezone && \
@@ -15,21 +15,21 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
-
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/melodic/final/ubuntu bionic main" > /etc/apt/sources.list.d/ros1-snapshots.list
 
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
 
-ENV ROS_DISTRO noetic
+ENV ROS_DISTRO melodic
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-ros-core=1.5.0-1* \
+    ros-melodic-ros-core=1.4.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
 # setup entrypoint
diff --git a/ros_noetic-ros-core-focal/ros_entrypoint.sh b/ros_melodic-ros-core-bionic/ros_entrypoint.sh
similarity index 100%
copy from ros_noetic-ros-core-focal/ros_entrypoint.sh
copy to ros_melodic-ros-core-bionic/ros_entrypoint.sh
diff --git a/ros_noetic/Dockerfile b/ros_melodic/Dockerfile
similarity index 77%
copy from ros_noetic/Dockerfile
copy to ros_melodic/Dockerfile
index 7ff1809..e8a911e 100644
--- a/ros_noetic/Dockerfile
+++ b/ros_melodic/Dockerfile
@@ -1,13 +1,13 @@
 # This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-core-focal
+FROM ros:melodic-ros-core-bionic
 
 # install bootstrap tools
 RUN apt-get update && apt-get install --no-install-recommends -y \
     build-essential \
-    python3-rosdep \
-    python3-rosinstall \
-    python3-vcstools \
+    python-rosdep \
+    python-rosinstall \
+    python-vcstools \
     && rm -rf /var/lib/apt/lists/*
 
 # bootstrap rosdep
@@ -16,6 +16,6 @@ RUN rosdep init && \
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
-    ros-noetic-ros-base=1.5.0-1* \
+    ros-melodic-ros-base=1.4.1-0* \
     && rm -rf /var/lib/apt/lists/*
 
diff --git a/ros_noetic-perception-focal/Dockerfile b/ros_noetic-perception-buster/Dockerfile
similarity index 89%
copy from ros_noetic-perception-focal/Dockerfile
copy to ros_noetic-perception-buster/Dockerfile
index 4ab48ba..1a32080 100644
--- a/ros_noetic-perception-focal/Dockerfile
+++ b/ros_noetic-perception-buster/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:perception
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:noetic-ros-base-buster
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
diff --git a/ros_noetic-robot-focal/Dockerfile b/ros_noetic-robot-buster/Dockerfile
similarity index 89%
copy from ros_noetic-robot-focal/Dockerfile
copy to ros_noetic-robot-buster/Dockerfile
index b087a26..af6f24b 100644
--- a/ros_noetic-robot-focal/Dockerfile
+++ b/ros_noetic-robot-buster/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:robot
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-base-focal
+FROM ros:noetic-ros-base-buster
 
 # install ros packages
 RUN apt-get update && apt-get install -y --no-install-recommends \
diff --git a/ros_noetic/Dockerfile b/ros_noetic-ros-base-buster/Dockerfile
similarity index 94%
copy from ros_noetic/Dockerfile
copy to ros_noetic-ros-base-buster/Dockerfile
index 7ff1809..badb3df 100644
--- a/ros_noetic/Dockerfile
+++ b/ros_noetic-ros-base-buster/Dockerfile
@@ -1,6 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-base
 # generated from docker_images/create_ros_image.Dockerfile.em
-FROM ros:noetic-ros-core-focal
+FROM ros:noetic-ros-core-buster
 
 # install bootstrap tools
 RUN apt-get update && apt-get install --no-install-recommends -y \
diff --git a/ros_noetic-ros-core-focal/Dockerfile b/ros_noetic-ros-core-buster/Dockerfile
similarity index 63%
copy from ros_noetic-ros-core-focal/Dockerfile
copy to ros_noetic-ros-core-buster/Dockerfile
index cb598df..c9f6c1f 100644
--- a/ros_noetic-ros-core-focal/Dockerfile
+++ b/ros_noetic-ros-core-buster/Dockerfile
@@ -1,13 +1,6 @@
 # This is an auto generated Dockerfile for ros:ros-core
 # generated from docker_images/create_ros_core_image.Dockerfile.em
-FROM ubuntu:focal
-
-# setup timezone
-RUN echo 'Etc/UTC' > /etc/timezone && \
-    ln -s /usr/share/zoneinfo/Etc/UTC /etc/localtime && \
-    apt-get update && \
-    apt-get install -q -y --no-install-recommends tzdata && \
-    rm -rf /var/lib/apt/lists/*
+FROM debian:buster
 
 # install packages
 RUN apt-get update && apt-get install -q -y --no-install-recommends \
@@ -15,11 +8,11 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
-
 # setup keys
-RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
+RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 4B63CF8FDE49746E98FA01DDAD19BAB3CBF125EA
+
+# setup sources.list
+RUN echo "deb http://snapshots.ros.org/noetic/final/debian buster main" > /etc/apt/sources.list.d/ros1-snapshots.list
 
 # setup environment
 ENV LANG C.UTF-8
diff --git a/ros_noetic-ros-core-focal/ros_entrypoint.sh b/ros_noetic-ros-core-buster/ros_entrypoint.sh
similarity index 100%
copy from ros_noetic-ros-core-focal/ros_entrypoint.sh
copy to ros_noetic-ros-core-buster/ros_entrypoint.sh
diff --git a/ros_noetic-ros-core-focal/Dockerfile b/ros_noetic-ros-core-focal/Dockerfile
index cb598df..d526d14 100644
--- a/ros_noetic-ros-core-focal/Dockerfile
+++ b/ros_noetic-ros-core-focal/Dockerfile
@@ -15,12 +15,12 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
-
 # setup keys
 RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
 
+# setup sources.list
+RUN echo "deb http://packages.ros.org/ros/ubuntu focal main" > /etc/apt/sources.list.d/ros1-latest.list
+
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8
diff --git a/ros_rolling-ros-core-jammy/Dockerfile b/ros_rolling-ros-core-jammy/Dockerfile
index 7dc8e0c..da46338 100644
--- a/ros_rolling-ros-core-jammy/Dockerfile
+++ b/ros_rolling-ros-core-jammy/Dockerfile
@@ -15,12 +15,12 @@ RUN apt-get update && apt-get install -q -y --no-install-recommends \
     gnupg2 \
     && rm -rf /var/lib/apt/lists/*
 
-# setup sources.list
-RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
-
 # setup keys
 RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
 
+# setup sources.list
+RUN echo "deb http://packages.ros.org/ros2/ubuntu jammy main" > /etc/apt/sources.list.d/ros2-latest.list
+
 # setup environment
 ENV LANG C.UTF-8
 ENV LC_ALL C.UTF-8

Relevant Maintainers:

@yosifkit
Copy link
Member

yosifkit commented Dec 7, 2023

A tiny nitpick (mostly because it increases the chance of build failure, but also because we try to make sure images don't change files from previous layers), dashing and eloquent images install the same gpg key in core and bridge (which is from base which is from core).


I don't think we've mentioned this before, but we now recommend using gpg directly instead of apt-key since apt-key is deprecated. This also allows you to scope the usage of the key to a specific apt repo, like the mysql image.

@mikaelarguedas
Copy link
Contributor Author

Thanks for the pointer!

There is discussion to migrate to a non deprecated approach in the future osrf/docker_images#621 (comment) but this may take a bit of time.

In the meantime to move this across the finish line for the EOL images I see different approaches:

  • is there a path to get this PR to build once as-is disable the builds afterwards?
  • copy logic from the mysql image and hardcode it once in the EOL images to get them to build once
  • move back from fetching packages from the main apt repository (packages.ros.org) in the ros1-bridge instead of the archiving repopsitory (snpashots.ros.org)

If 1 is possible that'd be awesome, otherwise I'll explore 2 or 3 and update this PR accordingly

Copy link
Member

@yosifkit yosifkit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is there a path to get this PR to build once as-is disable the builds afterwards?

LGTM

@yosifkit yosifkit merged commit 7e4a4a0 into docker-library:master Dec 8, 2023
@mikaelarguedas mikaelarguedas deleted the rebuild_snapshots branch December 8, 2023 21:16
@tianon
Copy link
Member

tianon commented Dec 8, 2023 via email

@mikaelarguedas
Copy link
Contributor Author

is there a path to get this PR to build once as-is disable the builds afterwards?

LGTM

Awesome thanks!

Just to be clear, the method to "disable" the builds after they succeed is a new PR that removes them from this file again.

👍 #15871

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants