From a00fd810df1289d2c92e26db10f7da3a518f5e0f Mon Sep 17 00:00:00 2001 From: spomichter Date: Tue, 17 Feb 2026 16:57:02 +0000 Subject: [PATCH 1/2] test: md-only change to verify ci-complete gate --- docs/ci-gate-test.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 docs/ci-gate-test.md diff --git a/docs/ci-gate-test.md b/docs/ci-gate-test.md new file mode 100644 index 0000000000..136f0b1a22 --- /dev/null +++ b/docs/ci-gate-test.md @@ -0,0 +1 @@ +# CI Gate Test\n\nThis file exists solely to test that md-only PRs pass the ci-complete gate without running the full test suite.\n\nDelete after verification. From 5ffc199b8cb236b385c33b3aa787e61fc5baf6e7 Mon Sep 17 00:00:00 2001 From: spomichter Date: Tue, 17 Feb 2026 17:23:53 +0000 Subject: [PATCH 2/2] fix: use path filter outputs for test should-run instead of upstream job results The test caller should-run expressions relied on dev.result == 'success' to determine if tests should run. But with if: always() on build jobs, the reusable workflow reports 'success' even when should-run=false and all steps are skipped. This caused md-only PRs to trigger the full test suite. Replace upstream result checks with direct path filter output checks: - Non-ROS tests: tests || python || dev - ROS tests + mypy: tests || ros || python || dev This correctly evaluates to false when only .md files change. --- .github/workflows/docker.yml | 38 +++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index a769519b8c..cf3e1cdcae 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -150,9 +150,10 @@ jobs: with: should-run: ${{ needs.check-changes.result == 'success' && - ((needs.ros-dev.result == 'success') || - (needs.ros-dev.result == 'skipped' && - needs.check-changes.outputs.tests == 'true')) + (needs.check-changes.outputs.tests == 'true' || + needs.check-changes.outputs.ros == 'true' || + needs.check-changes.outputs.python == 'true' || + needs.check-changes.outputs.dev == 'true') }} cmd: "pytest && pytest -m ros" # run tests that depend on ros as well dev-image: ros-dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true' || needs.check-changes.outputs.ros == 'true') && needs.ros-dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} @@ -165,9 +166,9 @@ jobs: with: should-run: ${{ needs.check-changes.result == 'success' && - ((needs.dev.result == 'success') || - (needs.dev.result == 'skipped' && - needs.check-changes.outputs.tests == 'true')) + (needs.check-changes.outputs.tests == 'true' || + needs.check-changes.outputs.python == 'true' || + needs.check-changes.outputs.dev == 'true') }} cmd: "pytest" dev-image: dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true') && needs.dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} @@ -181,9 +182,9 @@ jobs: with: should-run: ${{ needs.check-changes.result == 'success' && - ((needs.dev.result == 'success') || - (needs.dev.result == 'skipped' && - needs.check-changes.outputs.tests == 'true')) + (needs.check-changes.outputs.tests == 'true' || + needs.check-changes.outputs.python == 'true' || + needs.check-changes.outputs.dev == 'true') }} cmd: "pytest -m heavy" dev-image: dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true') && needs.dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} @@ -196,9 +197,9 @@ jobs: with: should-run: ${{ needs.check-changes.result == 'success' && - ((needs.dev.result == 'success') || - (needs.dev.result == 'skipped' && - needs.check-changes.outputs.tests == 'true')) + (needs.check-changes.outputs.tests == 'true' || + needs.check-changes.outputs.python == 'true' || + needs.check-changes.outputs.dev == 'true') }} cmd: "pytest -m lcm" dev-image: dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true') && needs.dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} @@ -211,9 +212,9 @@ jobs: with: should-run: ${{ needs.check-changes.result == 'success' && - ((needs.dev.result == 'success') || - (needs.dev.result == 'skipped' && - needs.check-changes.outputs.tests == 'true')) + (needs.check-changes.outputs.tests == 'true' || + needs.check-changes.outputs.python == 'true' || + needs.check-changes.outputs.dev == 'true') }} cmd: "pytest -m integration" dev-image: dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true') && needs.dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }} @@ -226,9 +227,10 @@ jobs: with: should-run: ${{ needs.check-changes.result == 'success' && - ((needs.ros-dev.result == 'success') || - (needs.ros-dev.result == 'skipped' && - needs.check-changes.outputs.tests == 'true')) + (needs.check-changes.outputs.tests == 'true' || + needs.check-changes.outputs.ros == 'true' || + needs.check-changes.outputs.python == 'true' || + needs.check-changes.outputs.dev == 'true') }} cmd: "MYPYPATH=/opt/ros/humble/lib/python3.10/site-packages mypy dimos" dev-image: ros-dev:${{ (needs.check-changes.outputs.python == 'true' || needs.check-changes.outputs.dev == 'true' || needs.check-changes.outputs.ros == 'true') && needs.ros-dev.result == 'success' && needs.check-changes.outputs.branch-tag || 'dev' }}