Files
ardupilot/.github/workflows/test_dds.yml
T
James HarveyandClaude Opus 5 20fe331ef4 .github: do not run CI on tag pushes
The release procedure pushes about twenty tags at a single commit: the
per-vehicle -stable and -beta tags and the numbered ones such as
Copter-4.7.1.  Only pre-commit.yml's push trigger carries a branch
filter, so every other workflow runs for each of those tag pushes, and
path filters are not evaluated for tag pushes, so the paths-ignore
lists do not thin them out.  The 4.7.1 release produced 438 push-event
runs for one commit; 18 came from the ArduPilot-4.7 branch push and
the other 420 from the tags, each re-running the same jobs on the same
commit.  4.7.0 produced 437, and the pattern goes back to at least
4.6.2.

Filter push triggers to branches.  '**' matches every branch, so branch
pushes behave exactly as before; tag pushes stop triggering workflows.
The tags still show the commit's checks, since check results attach to
the commit; those are the release-branch push's runs, trimmed by the
usual path filters as on any other branch.

test_scripts.yml used the list form of 'on', which cannot carry a
filter, so it is expanded to the mapping form.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-05 09:09:22 +10:00

202 lines
5.8 KiB
YAML

name: test dds
on:
push:
branches: ['**'] # excludes tag pushes
paths-ignore:
# remove not tests vehicles
- 'AntennaTracker/**'
- 'ArduSub/**'
- 'Blimp/**'
- 'Rover/**'
# remove esp32 HAL
- 'libraries/AP_HAL_ESP32/**'
# remove non SITL directories
- 'Tools/AP_Bootloader/**'
- 'Tools/AP_Periph/**'
- 'Tools/bootloaders/**'
- 'Tools/cameras_gimbals/**'
- 'Tools/CHDK-Scripts/**'
- 'Tools/CodeStyle/**'
- 'Tools/completion/**'
- 'Tools/CPUInfo/**'
- 'Tools/debug/**'
- 'Tools/environment_install/**'
- 'Tools/FilterTestTool/**'
- 'Tools/Frame_params/**'
- 'Tools/geotag/**'
- 'Tools/GIT_Test/**'
- 'Tools/gittools/**'
- 'Tools/Hello/**'
- 'Tools/IO_Firmware/**'
- 'Tools/Linux_HAL_Essentials/**'
- 'Tools/mavproxy_modules/**'
- 'Tools/Pozyx/**'
- 'Tools/PrintVersion.py'
- 'Tools/Replay/**'
- 'Tools/simulink/**'
- 'Tools/terrain-tools/**'
- 'Tools/UDP_Proxy/**'
- 'Tools/vagrant/**'
- 'Tools/Vicon/**'
# Discard python file from Tools/scripts as not used
- 'Tools/scripts/**.py'
- 'Tools/scripts/build_sizes/**'
- 'Tools/scripts/build_tests/**'
- 'Tools/scripts/CAN/**'
- 'Tools/scripts/signing/**'
# Remove autotests stuff
- 'Tools/autotest/**'
# Remove markdown files as irrelevant
- '**.md'
# Remove dotfile at root directory
- '.dir-locals.el'
- '.dockerignore'
- '.editorconfig'
- '.flake8'
- '.gitattributes'
- '.gitignore'
- '.pre-commit-config.yaml'
- '.pydevproject'
- '.valgrind-suppressions'
- '.valgrindrc'
- 'Dockerfile'
- 'Vagrantfile'
- 'Makefile'
# Remove some directories check
- '.vscode/**'
# Remove change on other workflows
- '.github/**'
- '!.github/actions/**' # except actions
- '!.github/workflows/test_dds.yml' # except this one
pull_request:
paths-ignore:
# remove not tests vehicles
- 'AntennaTracker/**'
- 'ArduSub/**'
- 'Rover/**'
- 'Blimp/**'
# remove esp32 HAL
- 'libraries/AP_HAL_ESP32/**'
# remove non SITL directories
- 'Tools/AP_Bootloader/**'
- 'Tools/AP_Periph/**'
- 'Tools/bootloaders/**'
- 'Tools/cameras_gimbals/**'
- 'Tools/CHDK-Scripts/**'
- 'Tools/CodeStyle/**'
- 'Tools/completion/**'
- 'Tools/CPUInfo/**'
- 'Tools/debug/**'
- 'Tools/environment_install/**'
- 'Tools/FilterTestTool/**'
- 'Tools/Frame_params/**'
- 'Tools/geotag/**'
- 'Tools/GIT_Test/**'
- 'Tools/gittools/**'
- 'Tools/Hello/**'
- 'Tools/IO_Firmware/**'
- 'Tools/Linux_HAL_Essentials/**'
- 'Tools/mavproxy_modules/**'
- 'Tools/Pozyx/**'
- 'Tools/PrintVersion.py'
- 'Tools/Replay/**'
- 'Tools/simulink/**'
- 'Tools/terrain-tools/**'
- 'Tools/UDP_Proxy/**'
- 'Tools/vagrant/**'
- 'Tools/Vicon/**'
# Discard python file from Tools/scripts as not used
- 'Tools/scripts/**.py'
- 'Tools/scripts/build_sizes/**'
- 'Tools/scripts/build_tests/**'
- 'Tools/scripts/CAN/**'
- 'Tools/scripts/signing/**'
# Remove autotests stuff
- 'Tools/autotest/**'
# Remove markdown files as irrelevant
- '**.md'
# Remove dotfile at root directory
- '.dir-locals.el'
- '.dockerignore'
- '.editorconfig'
- '.flake8'
- '.gitattributes'
- '.gitignore'
- '.pre-commit-config.yaml'
- '.pydevproject'
- '.valgrind-suppressions'
- '.valgrindrc'
- 'Dockerfile'
- 'Vagrantfile'
- 'Makefile'
# Remove some directories check
- '.vscode/**'
# Remove change on other workflows
- '.github/**'
- '!.github/actions/**' # except actions
- '!.github/workflows/test_dds.yml' # except this one
workflow_dispatch:
concurrency:
group: ci-${{github.workflow}}-${{ github.ref }}
cancel-in-progress: true
permissions:
contents: read # checkout; jobs that save ccache add actions:write per-job
jobs:
build:
permissions:
contents: read
actions: write # save-ccache prunes the previous cache entry
runs-on: ubuntu-22.04
container:
image: ardupilot/ardupilot-dev-ros:latest
options: --user 1001
strategy:
fail-fast: false # don't cancel if a job from the matrix fails
matrix:
config: [
sitl,
stm32h7
]
steps:
# git checkout the PR
- uses: actions/checkout@v7
with:
submodules: 'recursive'
- uses: ./.github/actions/setup-ccache
with:
key-suffix: ${{ matrix.config }}
# install Micro-XRCE-DDS-Gen from source until image is updated
- name: install Micro-XRCE-DDS-Gen from source
run: |
cd /tmp
git clone --depth 1 --recurse-submodules --branch v4.7.1 https://github.com/ardupilot/Micro-XRCE-DDS-Gen.git
cd Micro-XRCE-DDS-Gen
./gradlew assemble
- name: test ${{matrix.config}}
env:
CI_BUILD_TARGET: dds-${{matrix.config}}
shell: 'script -q -e -c "bash {0}"'
run: |
git config --global --add safe.directory ${GITHUB_WORKSPACE}
PATH="/github/home/.local/bin:$PATH"
PATH="/tmp/Micro-XRCE-DDS-Gen/scripts:$PATH"
which microxrceddsgen
Tools/scripts/build_ci.sh
- uses: ./.github/actions/save-ccache
with:
key-suffix: ${{ matrix.config }}
- name: Archive buildlog artifacts
uses: actions/upload-artifact@v7
if: failure()
with:
name: ${{ github.workflow }}-fail-${{matrix.config}}
path: /tmp/buildlogs
retention-days: 14