Skip to content

Use Ubuntu 24.04 for ROS image#2423

Open
Dreamsorcerer wants to merge 1 commit into
mainfrom
fix-ros-build
Open

Use Ubuntu 24.04 for ROS image#2423
Dreamsorcerer wants to merge 1 commit into
mainfrom
fix-ros-build

Conversation

@Dreamsorcerer
Copy link
Copy Markdown
Collaborator

Missed changing the base image for the build.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Jun 8, 2026

Greptile Summary

This PR fixes a missed base-image update in the CI workflow: the ros build job was still passing ubuntu:22.04 as the FROM image override while docker/ros/Dockerfile already sets ARG FROM_IMAGE=ubuntu:24.04 and installs ROS_DISTRO=jazzy, which targets Ubuntu 24.04 (Noble).

  • The single-line change brings the CI from-image for the ros job into alignment with the Dockerfile default and prevents the ROS Jazzy packages from being installed on an Ubuntu 22.04 (Jammy) base, which would have caused apt failures or missing packages.
  • The python job at line 115 still targets ubuntu:22.04, which appears intentional — that image chain is separate and has its own Dockerfile.

Confidence Score: 5/5

Safe to merge — this is a one-line correction that aligns the CI workflow with the Dockerfile's already-established Ubuntu 24.04 base and ROS Jazzy configuration.

The change is minimal and correct: the Dockerfile explicitly defaults to ubuntu:24.04 and installs ros-jazzy-* packages, so the prior ubuntu:22.04 override in the workflow would have caused package-resolution failures. The fix is a direct alignment with existing Dockerfile intent, with no logic changes or side effects on other jobs.

No files require special attention.

Important Files Changed

Filename Overview
.github/workflows/docker-build.yml Updates the ros job's from-image from ubuntu:22.04 to ubuntu:24.04, aligning the CI workflow with the Dockerfile default and its pinned ROS_DISTRO=jazzy.

Reviews (1): Last reviewed commit: "Use Ubuntu 24.04 for ROS image" | Re-trigger Greptile

@codecov
Copy link
Copy Markdown

codecov Bot commented Jun 8, 2026

❌ 1 Tests Failed:

Tests completed Failed Passed Skipped
2118 1 2117 72
View the top 1 failed test(s) by shortest run time
dimos.e2e_tests.test_dimsim_walk_forward::test_walk_forward
Stack Traces | 213s run time
lcm_spy = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x703e06732de0>
start_blueprint = <function start_blueprint.<locals>.set_name_and_start at 0x703e055fd800>
human_input = <function human_input.<locals>.send_human_input at 0x703e055ff240>
dim_sim = <dimos.e2e_tests.dim_sim_client.DimSimClient object at 0x703e05e86e70>

    @pytest.mark.self_hosted_large
    def test_walk_forward(lcm_spy, start_blueprint, human_input, dim_sim) -> None:
        start_blueprint(
            "run",
            "--disable",
            "spatial-memory",
            "--disable",
            "security-module",
            "unitree-go2-agentic",
            simulator="dimsim",
        )
        lcm_spy.save_topic(".../McpClient/on_system_modules/res")
        lcm_spy.wait_for_saved_topic(".../McpClient/on_system_modules/res", timeout=1200.0)
    
        origin_x, origin_y = 1, 2
        dim_sim.set_agent_position(origin_x, origin_y)
    
        human_input("move forward 3 meter")
    
>       lcm_spy.wait_until_odom_position(origin_x + 3, origin_y, threshold=0.4, timeout=120)

dim_sim    = <dimos.e2e_tests.dim_sim_client.DimSimClient object at 0x703e05e86e70>
human_input = <function human_input.<locals>.send_human_input at 0x703e055ff240>
lcm_spy    = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x703e06732de0>
origin_x   = 1
origin_y   = 2
start_blueprint = <function start_blueprint.<locals>.set_name_and_start at 0x703e055fd800>

dimos/e2e_tests/test_dimsim_walk_forward.py:37: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
dimos/e2e_tests/lcm_spy.py:182: in wait_until_odom_position
    self.wait_for_message_result(
        predicate  = <function LcmSpy.wait_until_odom_position.<locals>.predicate at 0x703e055fefc0>
        self       = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x703e06732de0>
        threshold  = 0.4
        timeout    = 120
        x          = 4
        y          = 2
dimos/e2e_tests/lcm_spy.py:168: in wait_for_message_result
    self.wait_until(
        event      = <threading.Event at 0x703e05e85a60: unset>
        fail_message = 'Failed to get to position x=4, y=2'
        listener   = <function LcmSpy.wait_for_message_result.<locals>.listener at 0x703e055ff740>
        predicate  = <function LcmSpy.wait_until_odom_position.<locals>.predicate at 0x703e055fefc0>
        self       = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x703e06732de0>
        timeout    = 120
        topic      = '/odom#geometry_msgs.PoseStamped'
        type       = <class 'dimos.msgs.geometry_msgs.PoseStamped.PoseStamped'>
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x703e06732de0>

    def wait_until(
        self,
        *,
        condition: Callable[[], bool],
        timeout: float,
        error_message: str,
        poll_interval: float = 0.1,
    ) -> None:
        start_time = time.time()
        while time.time() - start_time < timeout:
            if condition():
                return
            time.sleep(poll_interval)
>       raise TimeoutError(error_message)
E       TimeoutError: Failed to get to position x=4, y=2

condition  = <bound method Event.is_set of <threading.Event at 0x703e05e85a60: unset>>
error_message = 'Failed to get to position x=4, y=2'
poll_interval = 0.1
self       = <dimos.e2e_tests.lcm_spy.LcmSpy object at 0x703e06732de0>
start_time = 1780930312.2287993
timeout    = 120

dimos/e2e_tests/lcm_spy.py:105: TimeoutError

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant