Repository: ros2/ci
Pull request #811: Use connextdds 7.3.0 for Rolling
Author: login: lobolanja
Created: 2025-03-31T22:31:52Z | Merged: 2025-04-08T05:49:48Z

This PR aims to update the CI to enable testing of rmw_connext once the rti_connext_dds-7.3.0 packages are available in the upstream ROS 2 repositories.

On Linux, Humble and Jazzy will continue to use Connext 6. On Windows, much of the plumbing to support multiple connext versions was lost in the Conda transition since there was only one version to support.

We've made the decision to merge as-is, which means that Humble and Jazzy CI on Windows will build with Connext 7.3 until changes are made. There's an initial draft in #812.

Resolves: ros2/ci#804


Diff:
diff --git a/.gitmodules b/.gitmodules
index 4aefa708..5e57ccf1 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -1,7 +1,7 @@
 [submodule "linux_docker_resources/rticonnextdds-src"]
 	path = linux_docker_resources/rticonnextdds-src
 	url = git@github.com:osrf/rticonnextdds-bins.git
-	branch = binaries/linux/amd64/6.0.1
+	branch = binaries/linux/amd64/omnibus
 [submodule "linux_docker_resources/rticonnextdds-license"]
 	path = linux_docker_resources/rticonnextdds-license
 	url = git@github.com:osrf/rticonnextdds-license.git
diff --git a/linux_docker_resources/Dockerfile b/linux_docker_resources/Dockerfile
index b4961356..ae425d90 100644
--- a/linux_docker_resources/Dockerfile
+++ b/linux_docker_resources/Dockerfile
@@ -153,8 +153,15 @@ RUN apt-get update && apt-get install --no-install-recommends -y lcov
 # merged use the fork with the fix.
 RUN pip3 install -U git+https://github.com/ahcorde/lcov-to-cobertura-xml@master
 
-# Install the Connext binary from the OSRF repositories.
-RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; fi
+# Install the Connext binary from the OSRF repositories. if ROS_DISTRO is humble or jazzy
+# install rti-connext-dds-6.0.1 else install rti-connext-dds-7.3.0-ros.
+RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then \
+  if test \( ${ROS_DISTRO} = humble -o ${ROS_DISTRO} = jazzy \); then \
+    apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; \
+  else \
+    apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-7.3.0-ros; \
+  fi; \
+    fi
 
 # Install the RTI dependencies.
 RUN if test ${PLATFORM} = x86; then apt-get update && apt-get install --no-install-recommends -y default-jre-headless; fi
@@ -162,16 +169,28 @@ RUN if test ${PLATFORM} = x86; then apt-get update && apt-get install --no-insta
 # Install dependencies for RTI web binaries install script.
 RUN apt-get update && apt-get install --no-install-recommends -y python3-pexpect
 
-# Get and install the RTI web binaries.
-# Connext 6.0.1 for jammy, the evaluation bundles don't contain security extensions so we need to distribute the pro binaries to ourselves.
+# Get and install the RTI Connext web binaries.
+# RTI Connext web binaries installation is only supported on x86_64.
 COPY rticonnextdds-src/ /tmp/rticonnextdds-src
-RUN for splitpkg in \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+
+# Join the correct Connext version files based on the value of ROS_DISTRO.
+RUN if test ${ROS_DISTRO} = jazzy -o ${ROS_DISTRO} = humble; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    else \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
     cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
-  done
-RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run
+  done; \
+    fi
+
+# Make the RTI Connext installation script executable. For any version of Connext.
+RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-*-pro-host-x64Linux.run
 
 # Add the connextdds installation script used in entry_point.sh
 ADD rti_web_binaries_install_script.py /tmp/rti_web_binaries_install_script.py
@@ -226,6 +245,9 @@ RUN apt-get update && apt-get install -y \
 RUN update-ccache-symlinks
 
 ENV DISPLAY=:99
+# Making the RTI Connext env variable to the entry_point.sh script so that it can be used to run
+# the RTI Connext installation script.
+ENV ROS_DISTRO=${ROS_DISTRO}
 
 # Create a user to own the build output.
 RUN useradd -u 1234 -m rosbuild
diff --git a/linux_docker_resources/Dockerfile-RHEL b/linux_docker_resources/Dockerfile-RHEL
index b279a74b..cfc3f507 100644
--- a/linux_docker_resources/Dockerfile-RHEL
+++ b/linux_docker_resources/Dockerfile-RHEL
@@ -185,17 +185,29 @@ RUN dnf install \
     python3-pexpect \
     --refresh -y
 
-# Get and install the RTI web binaries.
-# Connext 6.0.1 for humble and beyond, the evaluation bundles don't contain security extensions so we need to distribute the pro binaries to ourselves.
+# Get and install the RTI Connext web binaries.
+# RTI Connext web binaries installation is only supported on x86_64.
 COPY rticonnextdds-src/ /tmp/rticonnextdds-src
-RUN for splitpkg in \
-      /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
-      /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
-      /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; \
-    do \
-      cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
-    done; \
-    chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run;
+
+# Join the correct Connext version files based on the value of ROS_DISTRO.
+RUN if test ${ROS_DISTRO} = jazzy -o ${ROS_DISTRO} = humble; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    else \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    fi
+
+# Make the RTI Connext installation script executable. For any version of Connext.
+RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-*-pro-host-x64Linux.run
+
 ADD rti_web_binaries_install_script.py /tmp/rti_web_binaries_install_script.py
 
 # Add the RTI license file.
diff --git a/linux_docker_resources/entry_point.sh b/linux_docker_resources/entry_point.sh
index 78da433b..88cba9f0 100755
--- a/linux_docker_resources/entry_point.sh
+++ b/linux_docker_resources/entry_point.sh
@@ -39,30 +39,51 @@ if [ "${ARCH}" = "x86_64" -a "${ID}" = "ubuntu" ]; then
     # Install RTI Connext DDS if we didn't find 'rmw_connextdds' within the "ignore-rmw" option strings.
     if [ -z "${IGNORE_CONNEXTDDS}" ]; then
         echo "Installing Connext..."
+
+        export CONNEXT_FULL_VERSION="7.3.0"
+        export CONNEXT_DISPLAY_VERSION="$CONNEXT_FULL_VERSION"
+        if [ "${ROS_DISTRO}" = "jazzy" ] || [ "${ROS_DISTRO}" = "humble" ]; then
+            export CONNEXT_FULL_VERSION="6.0.1.25"
+            export CONNEXT_DISPLAY_VERSION="${CONNEXT_FULL_VERSION%.*}"
+        fi
+
         case "${CI_ARGS}" in
           *--connext-debs*)
             echo "Using Debian package of Connext"
-            if test -r /opt/rti.com/rti_connext_dds-6.0.1/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh; then
-                echo "Sourcing RTI setenv script /opt/rti.com/rti_connext_dds-6.0.1/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh"
-                . /opt/rti.com/rti_connext_dds-6.0.1/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh
+            if test -r /opt/rti.com/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh; then
+                echo "Sourcing RTI setenv script /opt/rti.com/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh"
+                . /opt/rti.com/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}/resource/scripts/rtisetenv_x64Linux4gcc7.3.0.sh
             fi
             ;;
           *)
             echo "Installing Connext binaries off RTI website..."
-            if test -x /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run; then
-                python3 -u /tmp/rti_web_binaries_install_script.py /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
-                    /home/rosbuild/rti_connext_dds-6.0.1 --rtipkg_paths \
-                    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
-                    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg \
-                    /tmp/rticonnextdds-src/openssl-1.1.1k-6.0.1.25-host-x64Linux.rtipkg \
-                    /tmp/rticonnextdds-src/rti_security_plugins-6.0.1.25-host-x64Linux.rtipkg \
-                    /tmp/rticonnextdds-src/rti_security_plugins-6.0.1.25-target-x64Linux4gcc7.3.0.rtipkg
+            if test -x /tmp/rticonnextdds-src/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}-pro-host-x64Linux.run; then
+                rtipkg_list="\
+                /tmp/rticonnextdds-src/openssl-3.0.12-${CONNEXT_FULL_VERSION}-host-x64Linux.rtipkg \
+                /tmp/rticonnextdds-src/openssl-3.0.12-${CONNEXT_FULL_VERSION}-target-x64Linux4gcc7.3.0.rtipkg \
+                /tmp/rticonnextdds-src/rti_security_plugins-${CONNEXT_FULL_VERSION}-host-openssl-3.0-x64Linux.rtipkg \
+                /tmp/rticonnextdds-src/rti_security_plugins-${CONNEXT_FULL_VERSION}-target-openssl-3.0-x64Linux4gcc7.3.0.rtipkg \
+                "
+                connext_base_architecture="x64Linux3gcc4.8.2"
+                if [ "${CONNEXT_FULL_VERSION}" = "6.0.1.25" ]; then
+                    rtipkg_list="\
+                    /tmp/rticonnextdds-src/rti_connext_dds-${CONNEXT_FULL_VERSION}-pro-host-x64Linux.rtipkg \
+                    /tmp/rticonnextdds-src/openssl-1.1.1k-${CONNEXT_FULL_VERSION}-host-x64Linux.rtipkg \
+                    /tmp/rticonnextdds-src/rti_security_plugins-${CONNEXT_FULL_VERSION}-host-x64Linux.rtipkg \
+                    /tmp/rticonnextdds-src/rti_security_plugins-${CONNEXT_FULL_VERSION}-target-x64Linux4gcc7.3.0.rtipkg \
+                    "
+                    connext_base_architecture="x64Linux2.6gcc4.4.5"
+                fi
+                python3 -u /tmp/rti_web_binaries_install_script.py /tmp/rticonnextdds-src/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}-pro-host-x64Linux.run \
+                    /home/rosbuild/rti_connext_dds-${CONNEXT_DISPLAY_VERSION} --rtipkg_paths \
+                    /tmp/rticonnextdds-src/rti_connext_dds-${CONNEXT_FULL_VERSION}-pro-target-x64Linux4gcc7.3.0.rtipkg \
+                    $rtipkg_list
                 if [ $? -ne 0 ]; then
                     echo "Connext not installed correctly (maybe you're on an ARM machine?)." >&2
                     exit 1
                 fi
-                export CONNEXTDDS_DIR=/home/rosbuild/rti_connext_dds-6.0.1
-                export RTI_OPENSSL_LIBS=$CONNEXTDDS_DIR/resource/app/lib/x64Linux2.6gcc4.4.5
+                export CONNEXTDDS_DIR=/home/rosbuild/rti_connext_dds-${CONNEXT_DISPLAY_VERSION}
+                export RTI_OPENSSL_LIBS=$CONNEXTDDS_DIR/resource/app/lib/${connext_base_architecture}
             else
                 echo "No connext installation files found found." >&2
                 exit 1
@@ -84,4 +105,4 @@ sed -i -e "s/rosbuild:x:$ORIG_GID:/rosbuild:x:$GID:/" /etc/group
 chown -R ${UID}:${GID} "${ORIG_HOME}"
 echo "done."
 
-exec sudo -H -u rosbuild -E -- xvfb-run -s "-ac -screen 0 1280x1024x24" /bin/sh -c "$*"
\ No newline at end of file
+exec sudo -H -u rosbuild -E -- xvfb-run -s "-ac -screen 0 1280x1024x24" /bin/sh -c "$*"
diff --git a/linux_docker_resources/rticonnextdds-src b/linux_docker_resources/rticonnextdds-src
index c8a7784e..3d367af7 160000
--- a/linux_docker_resources/rticonnextdds-src
+++ b/linux_docker_resources/rticonnextdds-src
@@ -1 +1 @@
-Subproject commit c8a7784e759cd275712d394e48c5b2f6612cea56
+Subproject commit 3d367af76020d1d174c36987f4fdff1d7aa2dbce
diff --git a/windows_docker_resources/Dockerfile b/windows_docker_resources/Dockerfile
index cf48f6db..691e5b97 100644
--- a/windows_docker_resources/Dockerfile
+++ b/windows_docker_resources/Dockerfile
@@ -43,24 +43,24 @@ RUN pixi --color never --no-progress -q list
 
 # Setup environment variables needed for Connext
 ENV RTI_LICENSE_FILE C:\connext\rti_license.dat
-ENV CONNEXTDDS_DIR C:\connext\rti_connext_dds-6.0.1
-ENV RTI_OPENSSL_BIN C:\connext\openssl-1.1.1k\x64Win64VS2017\bin
-ENV RTI_OPENSSL_LIB C:\connext\openssl-1.1.1k\x64Win64VS2017\lib
+ENV CONNEXTDDS_DIR C:\connext\rti_connext_dds-7.3.0
+ENV RTI_OPENSSL_BIN C:\connext\openssl-3.0.12\x64Win64VS2017\bin
+ENV RTI_OPENSSL_LIB C:\connext\openssl-3.0.12\x64Win64VS2017\lib
 
 # Copy over necessary Connext files into container
 RUN IF NOT EXIST "C:\TEMP" mkdir C:\TEMP
 COPY rticonnextdds-src\ C:\TEMP\rticonnextdds-src
-RUN copy /b C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-host-x64Win64.exe.??? C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-host-x64Win64.exe
-RUN copy /b C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-target-x64Win64VS2017.rtipkg.??? C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-target-x64Win64VS2017.rtipkg
+RUN copy /b C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-host-x64Win64.exe.??? C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-host-x64Win64.exe
+RUN copy /b C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-target-x64Win64VS2017.rtipkg.??? C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-target-x64Win64VS2017.rtipkg
 COPY rticonnextdds-license\rti_license.dat $RTI_LICENSE_FILE
 
 # Install Connext
-RUN pixi run 7z x -oC:\connext C:\TEMP\rticonnextdds-src\openssl-1.1.1k-target-x64Win64VS2017.zip
-RUN C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-host-x64Win64.exe --mode unattended --unattendedmodeui minimalWithDialogs --prefix C:\connext
-RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\openssl-1.1.1k-6.0.1.25-host-x64Win64.rtipkg
-RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_connext_dds-6.0.1-pro-target-x64Win64VS2017.rtipkg
-RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_security_plugins-6.0.1.25-host-x64Win64.rtipkg
-RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_security_plugins-6.0.1.25-target-x64Win64VS2017.rtipkg
+RUN C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-host-x64Win64.exe --mode unattended --unattendedmodeui minimalWithDialogs --prefix C:\connext
+RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\openssl-3.0.12-7.3.0-host-x64Win64.rtipkg
+RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\openssl-3.0.12-7.3.0-target-x64Win64VS2017.rtipkg
+RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_connext_dds-7.3.0-pro-target-x64Win64VS2017.rtipkg
+RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_security_plugins-7.3.0-host-x64Win64.rtipkg
+RUN %CONNEXTDDS_DIR%\bin\rtipkginstall.bat -u C:\TEMP\rticonnextdds-src\rti_security_plugins-7.3.0-target-x64Win64VS2017.rtipkg
 
 # Note that this *must* be in shell form, not exec form, so Docker on Windows appropriately substitutes %CI_ARGS%
 WORKDIR C:\ci
diff --git a/windows_docker_resources/rticonnextdds-src b/windows_docker_resources/rticonnextdds-src
index d28e1bd3..78e9410a 160000
--- a/windows_docker_resources/rticonnextdds-src
+++ b/windows_docker_resources/rticonnextdds-src
@@ -1 +1 @@
-Subproject commit d28e1bd3b5ba6e71bc90687f481b5531111cd95f
+Subproject commit 78e9410a73b11666fbd196a0af1d926620cbfe91


Reviews:
user: login: clalancette
state: CHANGES_REQUESTED
author_association: CONTRIBUTOR
submitted_at: 2025-03-31T23:29:11Z
user: login: nuclearsandwich
body: Nothing wrong with this PR, but the Windows agents have not yet been updated to supply connext 7.3.0 yet so even once this is updated to conditionally use the target version of connext we'll need infra changes before this can merge.
state: DISMISSED
author_association: MEMBER
submitted_at: 2025-04-03T18:44:40Z
user: login: lobolanja
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-04T16:35:28Z
user: login: nuclearsandwich
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-05T15:10:09Z
user: login: lobolanja
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-07T11:34:30Z
user: login: lobolanja
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-07T11:43:26Z
user: login: lobolanja
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-07T11:56:31Z
user: login: lobolanja
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-07T12:18:40Z
user: login: lobolanja
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-07T12:24:38Z
user: login: lobolanja
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-07T12:24:58Z
user: login: nuclearsandwich
state: COMMENTED
author_association: MEMBER
submitted_at: 2025-04-07T13:55:07Z
user: login: lobolanja
state: COMMENTED
author_association: CONTRIBUTOR
submitted_at: 2025-04-07T16:14:51Z

Review comments:
diff_hunk: @@ -153,7 +153,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y lcov
 RUN pip3 install -U git+https://github.com/ahcorde/lcov-to-cobertura-xml@master
 
 # Install the Connext binary from the OSRF repositories.
-RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; fi
+RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-7.3.0; fi
path: linux_docker_resources/Dockerfile
user: login: clalancette
body: Note that we are going to have to leave support for 6.0.1 for the older releases of Humble and Jazzy here, so the logic will need to take that into account (the same goes for the things below).
created_at: 2025-03-31T23:29:08Z
author_association: CONTRIBUTOR
diff_hunk: @@ -153,7 +153,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y lcov
 RUN pip3 install -U git+https://github.com/ahcorde/lcov-to-cobertura-xml@master
 
 # Install the Connext binary from the OSRF repositories.
-RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; fi
+RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-7.3.0; fi
path: linux_docker_resources/Dockerfile
user: login: lobolanja
body: Thanks for the note :) 
created_at: 2025-04-04T16:35:28Z
author_association: CONTRIBUTOR
diff_hunk: @@ -1,7 +1,7 @@
 [submodule "linux_docker_resources/rticonnextdds-src"]
 	path = linux_docker_resources/rticonnextdds-src
 	url = git@github.com:osrf/rticonnextdds-bins.git
-	branch = binaries/linux/amd64/6.0.1
+	branch = binaries/linux/amd64/7.3.0
path: .gitmodules
user: login: nuclearsandwich
body: ```suggestion
	branch = binaries/linux/amd64/omnibus
```

This change is already made on the ros2/ci copy of this branch along with updating the specific submodule commit.
created_at: 2025-04-05T15:03:05Z
author_association: MEMBER
diff_hunk: @@ -152,8 +152,15 @@ RUN apt-get update && apt-get install --no-install-recommends -y lcov
 # merged use the fork with the fix.
 RUN pip3 install -U git+https://github.com/ahcorde/lcov-to-cobertura-xml@master
 
-# Install the Connext binary from the OSRF repositories.
-RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; fi
+# Install the Connext binary from the OSRF repositories. if ROS_DISTRO is rolling install 
+# rti-connext-dds-7.3.0-ros else if is humble or jazzy install rti-connext-dds-6.0.1
+RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then \
path: linux_docker_resources/Dockerfile
user: login: nuclearsandwich
body: Now that we have an arm64 deb for connext we don't need the platform check here. If we want to punt on removing this until we bring up full support for connext I'm okay with that.
created_at: 2025-04-05T15:04:10Z
author_association: MEMBER
diff_hunk: @@ -152,8 +152,15 @@ RUN apt-get update && apt-get install --no-install-recommends -y lcov
 # merged use the fork with the fix.
 RUN pip3 install -U git+https://github.com/ahcorde/lcov-to-cobertura-xml@master
 
-# Install the Connext binary from the OSRF repositories.
-RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; fi
+# Install the Connext binary from the OSRF repositories. if ROS_DISTRO is rolling install 
+# rti-connext-dds-7.3.0-ros else if is humble or jazzy install rti-connext-dds-6.0.1
+RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then \
+  if test \( ${ROS_DISTRO} = rolling \); then \
+    apt-get update && RTI_LICENSE_AGREEMENT_ACCEPTED=accepted apt-get install -y rti-connext-dds-7.3.0-ros; \
+  elif test \( ${ROS_DISTRO} = humble -o ${ROS_DISTRO} = jazzy \); then \
+    apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; \
+  fi; \
path: linux_docker_resources/Dockerfile
user: login: nuclearsandwich
body: Rephrasing this conditional such that the special case is humble and jazzy will forestall the need to update this when kilted comes up later this month.

```suggestion
  if test \( ${ROS_DISTRO} = humble -o ${ROS_DISTRO} = jazzy \); then \
    apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; \
  else \
    apt-get update && RTI_LICENSE_AGREEMENT_ACCEPTED=accepted apt-get install -y rti-connext-dds-7.3.0-ros; \
  fi; \
```
created_at: 2025-04-05T15:07:25Z
author_association: MEMBER
diff_hunk: @@ -162,15 +169,26 @@ RUN if test ${PLATFORM} = x86; then apt-get update && apt-get install --no-insta
 RUN apt-get update && apt-get install --no-install-recommends -y python3-pexpect
 
 # Get and install the RTI web binaries.
-# Connext 6.0.1 for jammy, the evaluation bundles don't contain security extensions so we need to distribute the pro binaries to ourselves.
 COPY rticonnextdds-src/ /tmp/rticonnextdds-src
-RUN for splitpkg in \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+
+# Join the correct Connext version files based on the value of ROS_DISTRO.
+RUN if test ${ROS_DISTRO} = rolling; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    elif test ${ROS_DISTRO} = jazzy -o ${ROS_DISTRO} = humble; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
     cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
-  done
-RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run
+  done; \
+    fi
path: linux_docker_resources/Dockerfile
user: login: nuclearsandwich
body: Same suggestion as above. Rephrasing the conditional so that 7.3.0 is the default case will let us bring kilted up without needing an explicit change.
created_at: 2025-04-05T15:08:13Z
author_association: MEMBER
diff_hunk: @@ -162,15 +169,26 @@ RUN if test ${PLATFORM} = x86; then apt-get update && apt-get install --no-insta
 RUN apt-get update && apt-get install --no-install-recommends -y python3-pexpect
 
 # Get and install the RTI web binaries.
-# Connext 6.0.1 for jammy, the evaluation bundles don't contain security extensions so we need to distribute the pro binaries to ourselves.
 COPY rticonnextdds-src/ /tmp/rticonnextdds-src
-RUN for splitpkg in \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+
+# Join the correct Connext version files based on the value of ROS_DISTRO.
+RUN if test ${ROS_DISTRO} = rolling; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    elif test ${ROS_DISTRO} = jazzy -o ${ROS_DISTRO} = humble; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
     cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
-  done
-RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run
+  done; \
+    fi
+
+# Make the RTI Connext installation script executable. For any version of Connext.
+RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-*-pro-host-x64Linux.run
path: linux_docker_resources/Dockerfile
user: login: nuclearsandwich
body: ```suggestion
RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-*-pro-host-x64Linux.run
```

As with all other arm64 comments, this can be punted to a follow-up PR but I think the arm64 file won't match this pattern.
created_at: 2025-04-05T15:09:33Z
author_association: MEMBER
diff_hunk: @@ -185,16 +185,25 @@ RUN dnf install \
     --refresh -y
 
 # Get and install the RTI web binaries.
-# Connext 6.0.1 for humble and beyond, the evaluation bundles don't contain security extensions so we need to distribute the pro binaries to ourselves.
 COPY rticonnextdds-src/ /tmp/rticonnextdds-src
-RUN for splitpkg in \
-      /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
-      /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
-      /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; \
-    do \
-      cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
-    done; \
-    chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run;
+# Join the correct Connext version files based on the value of ROS_DISTRO.
+RUN if test ${ROS_DISTRO} = rolling; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    elif test ${ROS_DISTRO} = jazzy -o ${ROS_DISTRO} = humble; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    fi
path: linux_docker_resources/Dockerfile-RHEL
user: login: nuclearsandwich
body: Same structure comments as the Ubuntu Dockerfile.
created_at: 2025-04-05T15:09:56Z
author_association: MEMBER
diff_hunk: @@ -1,7 +1,7 @@
 [submodule "linux_docker_resources/rticonnextdds-src"]
 	path = linux_docker_resources/rticonnextdds-src
 	url = git@github.com:osrf/rticonnextdds-bins.git
-	branch = binaries/linux/amd64/6.0.1
+	branch = binaries/linux/amd64/7.3.0
path: .gitmodules
user: login: lobolanja
body: applied from ros2/ci copy of this branch, @nuclearsandwich thanks!!
created_at: 2025-04-07T11:34:29Z
author_association: CONTRIBUTOR
diff_hunk: @@ -152,8 +152,15 @@ RUN apt-get update && apt-get install --no-install-recommends -y lcov
 # merged use the fork with the fix.
 RUN pip3 install -U git+https://github.com/ahcorde/lcov-to-cobertura-xml@master
 
-# Install the Connext binary from the OSRF repositories.
-RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; fi
+# Install the Connext binary from the OSRF repositories. if ROS_DISTRO is rolling install 
+# rti-connext-dds-7.3.0-ros else if is humble or jazzy install rti-connext-dds-6.0.1
+RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then \
path: linux_docker_resources/Dockerfile
user: login: lobolanja
body: @nuclearsandwich 

It depends. I assume you’re **not running security-related** tests when using the .deb packages. If that’s the case, we can rely on the ARM Debian package without issues.

Supporting ARM for security testing would be a different matter, since the regular Connext installers are designed for cross-compilation in mind for ARM architectures.

So, as long as our goal is to support basic or non-security testing, we can safely skip the platform check here.

I’ll apply the change in an isolated commit, just in case we need or want to revert it based on your input.
created_at: 2025-04-07T11:43:26Z
author_association: CONTRIBUTOR
diff_hunk: @@ -152,8 +152,15 @@ RUN apt-get update && apt-get install --no-install-recommends -y lcov
 # merged use the fork with the fix.
 RUN pip3 install -U git+https://github.com/ahcorde/lcov-to-cobertura-xml@master
 
-# Install the Connext binary from the OSRF repositories.
-RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; fi
+# Install the Connext binary from the OSRF repositories. if ROS_DISTRO is rolling install 
+# rti-connext-dds-7.3.0-ros else if is humble or jazzy install rti-connext-dds-6.0.1
+RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then \
+  if test \( ${ROS_DISTRO} = rolling \); then \
+    apt-get update && RTI_LICENSE_AGREEMENT_ACCEPTED=accepted apt-get install -y rti-connext-dds-7.3.0-ros; \
+  elif test \( ${ROS_DISTRO} = humble -o ${ROS_DISTRO} = jazzy \); then \
+    apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; \
+  fi; \
path: linux_docker_resources/Dockerfile
user: login: lobolanja
body: @​nuclearsandwich Good point! We’ve reverted to using the same variable for accepting the license as well. I’ll apply this in a single commit. https://github.com/ros2/ci/pull/811/commits/683cd99983fc7a84085f288e8a63f2188c7e9468
created_at: 2025-04-07T11:56:31Z
author_association: CONTRIBUTOR
diff_hunk: @@ -162,15 +169,26 @@ RUN if test ${PLATFORM} = x86; then apt-get update && apt-get install --no-insta
 RUN apt-get update && apt-get install --no-install-recommends -y python3-pexpect
 
 # Get and install the RTI web binaries.
-# Connext 6.0.1 for jammy, the evaluation bundles don't contain security extensions so we need to distribute the pro binaries to ourselves.
 COPY rticonnextdds-src/ /tmp/rticonnextdds-src
-RUN for splitpkg in \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+
+# Join the correct Connext version files based on the value of ROS_DISTRO.
+RUN if test ${ROS_DISTRO} = rolling; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    elif test ${ROS_DISTRO} = jazzy -o ${ROS_DISTRO} = humble; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
     cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
-  done
-RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run
+  done; \
+    fi
+
+# Make the RTI Connext installation script executable. For any version of Connext.
+RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-*-pro-host-x64Linux.run
path: linux_docker_resources/Dockerfile
user: login: lobolanja
body: @​nuclearsandwich Please take into account that ARM support will be provided exclusively through Debian packages.
We can revisit this after the Kilted release to discuss a better approach for adding ARM support using the regular RTI Connext installers, as those are primarily designed for cross-compilation scenarios.
created_at: 2025-04-07T12:18:40Z
author_association: CONTRIBUTOR
diff_hunk: @@ -185,16 +185,25 @@ RUN dnf install \
     --refresh -y
 
 # Get and install the RTI web binaries.
-# Connext 6.0.1 for humble and beyond, the evaluation bundles don't contain security extensions so we need to distribute the pro binaries to ourselves.
 COPY rticonnextdds-src/ /tmp/rticonnextdds-src
-RUN for splitpkg in \
-      /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
-      /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
-      /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; \
-    do \
-      cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
-    done; \
-    chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run;
+# Join the correct Connext version files based on the value of ROS_DISTRO.
+RUN if test ${ROS_DISTRO} = rolling; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    elif test ${ROS_DISTRO} = jazzy -o ${ROS_DISTRO} = humble; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    fi
path: linux_docker_resources/Dockerfile-RHEL
user: login: lobolanja
body: done in https://github.com/ros2/ci/pull/811/commits/14623b7772502f79a0d687a550bc3060a73f462d
created_at: 2025-04-07T12:24:38Z
author_association: CONTRIBUTOR
diff_hunk: @@ -162,15 +169,26 @@ RUN if test ${PLATFORM} = x86; then apt-get update && apt-get install --no-insta
 RUN apt-get update && apt-get install --no-install-recommends -y python3-pexpect
 
 # Get and install the RTI web binaries.
-# Connext 6.0.1 for jammy, the evaluation bundles don't contain security extensions so we need to distribute the pro binaries to ourselves.
 COPY rticonnextdds-src/ /tmp/rticonnextdds-src
-RUN for splitpkg in \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+
+# Join the correct Connext version files based on the value of ROS_DISTRO.
+RUN if test ${ROS_DISTRO} = rolling; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    elif test ${ROS_DISTRO} = jazzy -o ${ROS_DISTRO} = humble; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
     cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
-  done
-RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run
+  done; \
+    fi
path: linux_docker_resources/Dockerfile
user: login: lobolanja
body: done in https://github.com/ros2/ci/pull/811/commits/14623b7772502f79a0d687a550bc3060a73f462d
created_at: 2025-04-07T12:24:58Z
author_association: CONTRIBUTOR
diff_hunk: @@ -162,15 +169,26 @@ RUN if test ${PLATFORM} = x86; then apt-get update && apt-get install --no-insta
 RUN apt-get update && apt-get install --no-install-recommends -y python3-pexpect
 
 # Get and install the RTI web binaries.
-# Connext 6.0.1 for jammy, the evaluation bundles don't contain security extensions so we need to distribute the pro binaries to ourselves.
 COPY rticonnextdds-src/ /tmp/rticonnextdds-src
-RUN for splitpkg in \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
-  /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+
+# Join the correct Connext version files based on the value of ROS_DISTRO.
+RUN if test ${ROS_DISTRO} = rolling; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-7.3.0-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
+    cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
+  done; \
+    elif test ${ROS_DISTRO} = jazzy -o ${ROS_DISTRO} = humble; then \
+  for splitpkg in \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-host-x64Linux.rtipkg \
+    /tmp/rticonnextdds-src/rti_connext_dds-6.0.1.25-pro-target-x64Linux4gcc7.3.0.rtipkg; do \
     cat $(echo ${splitpkg}.0?? | sort) > $splitpkg; \
-  done
-RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-6.0.1-pro-host-x64Linux.run
+  done; \
+    fi
+
+# Make the RTI Connext installation script executable. For any version of Connext.
+RUN chmod 755 /tmp/rticonnextdds-src/rti_connext_dds-*-pro-host-x64Linux.run
path: linux_docker_resources/Dockerfile
user: login: nuclearsandwich
body: Ah, I didn't realize that. Sounds good to me. In that case it probably only needs an advisory comment that the RTI binaries are only provided for amd64 and not arm64.
created_at: 2025-04-07T13:55:07Z
author_association: MEMBER
diff_hunk: @@ -153,7 +153,7 @@ RUN apt-get update && apt-get install --no-install-recommends -y lcov
 RUN pip3 install -U git+https://github.com/ahcorde/lcov-to-cobertura-xml@master
 
 # Install the Connext binary from the OSRF repositories.
-RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-6.0.1; fi
+RUN if test \( ${PLATFORM} = x86 -a ${INSTALL_CONNEXT_DEBS} = true \); then apt-get update && RTI_NC_LICENSE_ACCEPTED=yes apt-get install -y rti-connext-dds-7.3.0; fi
path: linux_docker_resources/Dockerfile
user: login: lobolanja
body: addressed. 
created_at: 2025-04-07T16:14:50Z
author_association: CONTRIBUTOR

PR comments:
user: login: lobolanja
created_at: 2025-04-04T14:49:13Z
body: > Nothing wrong with this PR, but the Windows agents have not yet been updated to supply connext 7.3.0 yet so even once this is updated to conditionally use the target version of connext we'll need infra changes before this can merge.

@​nuclearsandwich Does that mean we don’t need to change the logic to support Humble and Jazzy, as mentioned in this comment?
https://github.com/ros2/ci/pull/811#discussion_r2021906357 
author_association: CONTRIBUTOR
user: login: nuclearsandwich
created_at: 2025-04-04T15:01:31Z
body: > Does that mean we don’t need to change the logic to support Humble and Jazzy, as mentioned in this comment?

Sorry for making that ambiguity. I should have said that my comment does not reflect changes needed in this PR but changes to the infra to support it's work. We do still need to install 6.0.1 for Humble and Jazzy.

author_association: MEMBER
user: login: lobolanja
created_at: 2025-04-04T16:34:46Z
body: @​nuclearsandwich I’m making the necessary changes to install 6.0.1 for Humble and Jazzy.
author_association: CONTRIBUTOR
user: login: nuclearsandwich
created_at: 2025-04-04T21:41:32Z
body: @lobolanja if you cherry-pick 85140fc80f054c589b0301b7ba013ea1703cf65d from the `windows-connext-7.3.0` branch onto this PR it includes the private submodule update that makes all 7.3.0 files available on Windows. You can use the same pattern to include them in `windows_docker_resources/Dockerfile` that the existing packages use (the files are split and need to be recombined when copying).

author_association: MEMBER
user: login: nuclearsandwich
created_at: 2025-04-05T00:21:05Z
body: Another random note while I'm thinking of it. We historically have not had RTI connext working on arm64 and it's still forcibly disabled in the ci_launcher: https://github.com/ros2/ci/blob/cab2da7ecea03936e50103df6ee91d9489a2c617/job_templates/ci_launcher_job.xml.em#L101-L110

I actually think we should leave that as-is for this PR because even though RTI is available it's not necessarily supported / tested by ROS 2 yet.

author_association: MEMBER
user: login: nuclearsandwich
created_at: 2025-04-05T00:34:12Z
body: It took ruthlessly commenting out the re-assembly of the sideloaded RTI connext packages (I wonder if, in generally, we should not be installing those when using the debs. May be we do skip installing those downstream I can't remember)

But there's now a job running beyond package installation.

 [![Build Status](https://ci.ros2.org/job/ci_linux/23037/badge/icon)](https://ci.ros2.org/job/ci_linux/23037/)

Just to be safe after bringing back the other changes.  [![Build Status](https://ci.ros2.org/buildStatus/icon?job=ci_linux&build=23042)](https://ci.ros2.org/job/ci_linux/23042/) 
 
author_association: MEMBER
user: login: nuclearsandwich
created_at: 2025-04-05T00:37:36Z
body: Windows with the relevant cherry-pick  [![Build Status](https://ci.ros2.org/buildStatus/icon?job=ci_windows&build=23912)](https://ci.ros2.org/job/ci_windows/23912/) 

Made a mistake with the configuration and amended it:  [![Build Status](https://ci.ros2.org/job/ci_windows/23913/badge/icon)](https://ci.ros2.org/job/ci_windows/23913/) 
author_association: MEMBER
user: login: nuclearsandwich
created_at: 2025-04-05T01:26:07Z
body: ~~And one more, Linux CI with the RTI binaries instead of debs:~~ [![Build Status](https://ci.ros2.org/buildStatus/icon?job=ci_linux&build=23039)](https://ci.ros2.org/job/ci_linux/23039/) 

~~Once more un-commenting the stuff I commented out before it worked:~~ [![Build Status](https://ci.ros2.org/buildStatus/icon?job=ci_linux&build=23040)](https://ci.ros2.org/job/ci_linux/23040/) 


[Until the blood runs clear](https://www.youtube.com/watch?v=gtCU4keAkjw)

 [![Build Status](https://ci.ros2.org/buildStatus/icon?job=ci_linux&build=23041)](https://ci.ros2.org/job/ci_linux/23041/) 
author_association: MEMBER
user: login: nuclearsandwich
created_at: 2025-04-05T03:19:55Z
body: RHEL build  [![Build Status](https://ci.ros2.org/buildStatus/icon?job=ci_linux-rhel&build=2519)](https://ci.ros2.org/job/ci_linux-rhel/2519/) 

Fingers still remember the old package name:  [![Build Status](https://ci.ros2.org/job/ci_linux-rhel/2521/badge/icon)](https://ci.ros2.org/job/ci_linux-rhel/2521/) 
author_association: MEMBER
user: login: nuclearsandwich
created_at: 2025-04-05T03:34:34Z
body: @lobolanja I made a few more changes on the main fork's copy of this branch. The easiest thing for you to do may be to pull those changes and force-push them to this branch since it is included in my rebase.

I haven't addressed the version differences in the entry_point.sh as you point out still needs doing, but I did get at least one build up to rmw_connextdds on each platform but ARM (which I think we should punt on as mentioned above).

The next thing to do, in addition to the entry_point.sh script is run a larger CI build that actually exercises the communication tests. This will be much more time consuming so I'll start it off in the morning (I want to scale CI down for the weekend) and I don't want to trigger big jobs right before the nightlies.
author_association: MEMBER
user: login: nuclearsandwich
created_at: 2025-04-05T15:01:19Z
body: Full CI

* Linux [![Build Status](http://ci.ros2.org/buildStatus/icon?job=ci_linux&build=23044)](http://ci.ros2.org/job/ci_linux/23044/)
* Linux-aarch64 [![Build Status](http://ci.ros2.org/buildStatus/icon?job=ci_linux-aarch64&build=17262)](http://ci.ros2.org/job/ci_linux-aarch64/17262/)
* Linux-rhel [![Build Status](http://ci.ros2.org/buildStatus/icon?job=ci_linux-rhel&build=2523)](http://ci.ros2.org/job/ci_linux-rhel/2523/)
* Windows [![Build Status](http://ci.ros2.org/buildStatus/icon?job=ci_windows&build=23915)](http://ci.ros2.org/job/ci_windows/23915/)

author_association: MEMBER
user: login: lobolanja
created_at: 2025-04-07T15:31:46Z
body: @nuclearsandwich  @clalancette 
I’ve updated entry_point.sh as well as the Ubuntu and RHEL Dockerfiles to support Humble and Jazzy. 

⚠️ **Could you run the Ubuntu validation (using the RTI web installers) to confirm I haven’t broken anything?**

Also, it’s still unclear to me whether the Windows Dockerfile (windows_docker_resources/Dockerfile) is expected to support Humble and Jazzy as well.

I’m currently working on the Windows changes, but it’s been a bit of a pain — Windows Dockerfiles are pretty tricky to deal with.
author_association: CONTRIBUTOR
user: login: lobolanja
created_at: 2025-04-07T22:03:42Z
body: Hi @nuclearsandwich 
I’ve spent the whole day trying to get this working on Windows to support Humble and Jazzy, but I haven’t been able to make it work yet.

Would you mind if we go ahead and merge this as-is, and continue working on adding Humble and Jazzy support later this week while we stabilize the rest?
Supporting this on the Windows dockerfile will likely require using some complementary `.bat` file to handle the installation logic, since we’re quite limited with just the Windows Dockerfile syntax.

Let me know your thoughts!
author_association: CONTRIBUTOR
user: login: nuclearsandwich
created_at: 2025-04-08T00:27:01Z
body: Retriggering CI to make sure the current configuration builds with 7.3.0 at least.

* Linux [![Build Status](http://ci.ros2.org/buildStatus/icon?job=ci_linux&build=23075)](http://ci.ros2.org/job/ci_linux/23075/)
* Linux-aarch64 [![Build Status](http://ci.ros2.org/buildStatus/icon?job=ci_linux-aarch64&build=17293)](http://ci.ros2.org/job/ci_linux-aarch64/17293/)
* Linux-rhel [![Build Status](http://ci.ros2.org/buildStatus/icon?job=ci_linux-rhel&build=2553)](http://ci.ros2.org/job/ci_linux-rhel/2553/)
* Windows [![Build Status](http://ci.ros2.org/buildStatus/icon?job=ci_windows&build=23953)](http://ci.ros2.org/job/ci_windows/23953/)

Now with requeues

* Linux   [![Build Status](https://ci.ros2.org/buildStatus/icon?job=ci_linux&build=23077)](https://ci.ros2.org/job/ci_linux/23077/) 
* Linux-aarch64  [![Build Status](https://ci.ros2.org/buildStatus/icon?job=ci_linux-aarch64&build=17296)](https://ci.ros2.org/job/ci_linux-aarch64/17296/) 
* Linux-RHEL  [![Build Status](https://ci.ros2.org/buildStatus/icon?job=ci_linux-rhel&build=2554)](https://ci.ros2.org/job/ci_linux-rhel/2554/) 
author_association: MEMBER
user: login: mjcarroll
created_at: 2025-04-08T01:05:29Z
body: Looks like both Linux and Linux-aarch64 got bounced.
author_association: MEMBER
user: login: nuclearsandwich
created_at: 2025-04-08T05:49:42Z
body: Merging with incomplete final CI based on earlier results.
author_association: MEMBER
user: login: Blast545
created_at: 2025-04-17T03:15:27Z
body: :man_farmer: @lobolanja Is there planned work to get this into the build.ros2.org farm as well?
It seems that after https://github.com/ros2/rmw_connextdds/pull/181 was merged, the `Rci__nightly-connext_ubuntu_noble_amd64` jobs have been failing with:

```
03:21:50 -- Found rmw_implementation_cmake: 7.8.1 (/tmp/ws/install_isolated/rmw_implementation_cmake/share/rmw_implementation_cmake/cmake)
03:21:50 CMake Error at /tmp/ws/install_isolated/rmw_implementation_cmake/share/rmw_implementation_cmake/cmake/get_default_rmw_implementation.cmake:60 (message):
03:21:50   Could not find ROS middleware implementation 'NOTFOUND'.  Choose one of the
03:21:50   following:
03:21:50 Call Stack (most recent call first):
03:21:50   CMakeLists.txt:24 (get_default_rmw_implementation)
03:21:50 
03:21:50 
03:21:50 -- Configuring incomplete, errors occurred!
```

I imagine it's trying to find the previous `rti_connext_dds` packages. Reference: [Rci__nightly-connext_ubuntu_noble_amd64/363](https://build.ros2.org/view/Rci/job/Rci__nightly-connext_ubuntu_noble_amd64/363/)
author_association: CONTRIBUTOR
user: login: lobolanja
created_at: 2025-04-17T17:41:58Z
body: Thanks for flagging this @Blast545!

Just a heads-up—it’s a holiday in Spain until Monday, so we’ll be taking a look at this first thing Monday morning (Spain time).

cc: @fgallegosalido 
author_association: CONTRIBUTOR
user: login: fgallegosalido
created_at: 2025-04-22T10:04:41Z
body: @Blast545 it seems that the CI script is still setting the environment variable `CONNEXTDDS_DIR=/opt/rti.com/rti_connext_dds-6.0.1`, which in rolling is wrong as it downloads Connext 7.3.0.
author_association: CONTRIBUTOR
user: login: Blast545
created_at: 2025-04-25T19:48:48Z
body: This was fixed with: https://github.com/ros2/ros_buildfarm_config/pull/324, @fgallegosalido thanks for taking a look!
author_association: CONTRIBUTOR