Skip to content

ci(mavros): merge mission+offboard into one workflow, migrate to noetic and Python 3#27038

Merged
mrpollo merged 1 commit intomainfrom
mrpollo/ci-mavros-ros-migration
Apr 10, 2026
Merged

ci(mavros): merge mission+offboard into one workflow, migrate to noetic and Python 3#27038
mrpollo merged 1 commit intomainfrom
mrpollo/ci-mavros-ros-migration

Conversation

@mrpollo
Copy link
Copy Markdown
Contributor

@mrpollo mrpollo commented Apr 10, 2026

Merges mavros_mission_tests.yml and mavros_offboard_tests.yml into a single mavros_tests.yml with a matrix strategy, and migrates from the ROS Melodic container to Noetic. Ports the orchestrator's mavros-tests job (mrpollo/ci_orchestration, #26257) to mainline.

The current MAVROS workflows run builds inside docker run --rm px4io/px4-dev-ros-melodic:2021-09-08, which prevents ccache, composite actions, and the build-gazebo-sitl action from working because the compilation happens inside a throwaway container invisible to the host runner. The orchestrator solved this by switching to a native container: block with px4io/px4-dev-ros-noetic:2021-09-08, which lets GitHub Actions steps run inside the container directly.

The consolidated workflow uses a two-entry matrix (Mission and Offboard) instead of two separate workflow files. Each matrix entry gets setup-ccache / save-ccache wired with ccache-sitl-gazebo-classic at 350M (self-seeding, since mainline has no upstream seeder job), the build-gazebo-sitl composite action replacing explicit make invocations, pip3 install -r Tools/setup/requirements.txt for Python dependencies the noetic image needs, and a 10-minute step timeout on the test run. The runner is already on RunsOn 4cpu with s3-cache from the previous PR.

The five MAVROS test scripts in integrationtests/python_src/px4_it/mavros/ are migrated from Python 2 to Python 3 to match the noetic container (which ships Python 3). Changes are mechanical: shebang updates, dropping from __future__ import division and from six.moves import xrange, replacing xrange() with range(). mission_test.py replaces the px4tools.ulog dependency (Python 2 only, unmaintained) with pyulog and NumPy for quaternion-to-euler conversion and attitude error analysis.

Also bumps stefanzweifel/git-auto-commit-action from v4 to v7 in ekf_update_change_indicator.yml. v4 uses Node 16 which is past GitHub's deprecation deadline.

…ic and Python 3

Consolidate mavros_mission_tests.yml and mavros_offboard_tests.yml into a
single mavros_tests.yml with a matrix strategy. Switch from docker-in-docker
with px4-dev-ros-melodic to a native container using px4-dev-ros-noetic,
enabling ccache and composite actions (setup-ccache, build-gazebo-sitl,
save-ccache). Migrate all five MAVROS Python test files from Python 2 to
Python 3 (remove six/xrange, from __future__ imports, replace px4tools
with pyulog for estimator analysis). Bump git-auto-commit-action from v4
to v7 in ekf_update_change_indicator.yml.

Signed-off-by: Ramon Roche <mrpollo@gmail.com>
@mrpollo mrpollo force-pushed the mrpollo/ci-mavros-ros-migration branch from e2da771 to 6659b83 Compare April 10, 2026 05:02
@mrpollo mrpollo merged commit 0f15eea into main Apr 10, 2026
70 checks passed
@mrpollo mrpollo deleted the mrpollo/ci-mavros-ros-migration branch April 10, 2026 06:47
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