From 823da3b5f6c8795cebf5d16995ecbf1943f12c68 Mon Sep 17 00:00:00 2001 From: Nathan Brooks Date: Sun, 2 Aug 2026 19:24:58 -0600 Subject: [PATCH] ci: cover every released distro with binary debs This repo ships a single `ros2` branch to five distros but only tested two, and neither gave a Resolute signal: humble 4.1.2-1 tested (humble-source image) jazzy 4.1.2-1 NOT tested kilted 4.1.2-2 NOT tested lyrical 4.1.2-3 NOT tested rolling 4.1.2-2 tested (rolling-source image -- see below) Move the whole matrix to plain ROS_DISTRO/ROS_REPO jobs, matching PickNikRobotics/rviz_visual_tools#301 and PickNikRobotics/graph_msgs#20: humble-main jammy blocking jazzy-main noble blocking kilted-main noble blocking (takes over CLANG_TIDY) lyrical-main resolute non-blocking rolling-testing resolute non-blocking The rolling-source job had to go. With a *prebuilt* image, ROS_DISTRO: rolling does not imply Resolute the way it does for a bare-OS job -- the OS comes from the image. moveit/moveit2:rolling-source is Ubuntu noble, built 2026-01-24, with MoveIt compiled inside it, so the job never asked apt for ros-rolling-moveit-core and never touched Resolute. Rolling moved to Resolute, so it was testing a distro/OS pairing that no longer ships, and reporting green for it -- concealing the blocker below. It could not self-heal either: moveit2's docker.yaml is 12 successes to 85 failures, and even its last success (2026-06-24) did not refresh that tag. The usual argument for a source image -- exercising MoveIt main -- was not being served by a January snapshot. Dropping humble-source too keeps the matrix uniform and removes this repo's last dependency on the moveit2 image pipeline. MoveIt is released as debs on every distro here (humble 2.5.9, jazzy 2.12.4, kilted 2.14.3), so binary jobs test what users actually install. moveit_visual_tools.repos still source-builds rviz_visual_tools and graph_msgs, which is where the unreleased fixes live. With no image left, DOCKER_IMAGE, UNDERLAY (and its AFTER_SETUP_UPSTREAM_WORKSPACE_EMBED predecessor) and the IMAGE fallbacks in CACHE_PREFIX / name are all removed as dead plumbing. lyrical and rolling both fail today for the same reason: E: Unable to locate package ros-lyrical-moveit-core Only moveit_common, moveit_configs_utils, moveit_msgs and moveit_resources are published for Resolute; moveit_core is not. That blocks every downstream package on Resolute -- lyrical as well as rolling. Both jobs are non-blocking and will start passing on their own once moveit2 is released there. Co-Authored-By: Claude Opus 5 (1M context) --- .github/workflows/build_and_test.yaml | 31 +++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/.github/workflows/build_and_test.yaml b/.github/workflows/build_and_test.yaml index 56d3b75..637504a 100644 --- a/.github/workflows/build_and_test.yaml +++ b/.github/workflows/build_and_test.yaml @@ -16,22 +16,41 @@ jobs: fail-fast: false matrix: env: - - IMAGE: humble-source - - IMAGE: rolling-source + - ROS_DISTRO: humble + ROS_REPO: main + - ROS_DISTRO: jazzy + ROS_REPO: main + - ROS_DISTRO: kilted + ROS_REPO: main CLANG_TIDY: true + # moveit_core has no Resolute deb yet, so these two cannot pass until + # moveit2 is released for Resolute. Keep them non-blocking until then; + # they are the only jobs here that exercise Resolute at all. + - ROS_DISTRO: lyrical + ROS_REPO: main + OS_CODE_NAME: resolute + NONBLOCKING: true + - ROS_DISTRO: rolling + ROS_REPO: testing + OS_CODE_NAME: resolute + NONBLOCKING: true env: - DOCKER_IMAGE: moveit/moveit2:${{ matrix.env.IMAGE }} UPSTREAM_WORKSPACE: moveit_visual_tools.repos + # upstream_ws is restored from cache with different ownership than the + # container user, so vcs trips git's dubious-ownership check. The moveit2 + # images set this at build time; bare OS images do not. Written directly + # because git is not installed yet at this point. + AFTER_INIT: printf '[safe]\n\tdirectory = *\n' >> ~/.gitconfig AFTER_SETUP_UPSTREAM_WORKSPACE: vcs pull $BASEDIR/upstream_ws/src - AFTER_SETUP_UPSTREAM_WORKSPACE_EMBED: set +u && source ~/ws_moveit/install/setup.bash && set - u CCACHE_DIR: ${{ github.workspace }}/.ccache BASEDIR: ${{ github.workspace }}/.work - CACHE_PREFIX: ${{ matrix.env.IMAGE }} + CACHE_PREFIX: ${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }} CLANG_TIDY_BASE_REF: ${{ github.base_ref || github.ref }} - name: ${{ matrix.env.IMAGE }}${{ matrix.env.CLANG_TIDY && ' + clang-tidy' || '' }} + name: ${{ matrix.env.ROS_DISTRO }}-${{ matrix.env.ROS_REPO }}${{ matrix.env.CLANG_TIDY && ' + clang-tidy' || '' }} runs-on: ubuntu-latest + continue-on-error: ${{ matrix.env.NONBLOCKING || false }} steps: - uses: actions/checkout@v4 with: