mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-07-24 15:27:41 +08:00
This reverts some of the changes to keep runners of classic Gazebo in there but leave it optional, so we can still use it if required.
136 lines
5.2 KiB
YAML
136 lines
5.2 KiB
YAML
# NOTE: this workflow is now running on Dronecode / PX4 AWS account.
|
|
# - If you want to keep the tests running in GitHub Actions you need to uncomment the "runs-on: ubuntu-latest" lines
|
|
# and comment the "runs-on: [runs-on,runner=..." lines.
|
|
# - If you would like to duplicate this setup try setting up "RunsOn" on your own AWS account try https://runs-on.com
|
|
|
|
name: SITL Tests
|
|
|
|
on:
|
|
push:
|
|
branches:
|
|
- 'main'
|
|
paths-ignore:
|
|
- 'docs/**'
|
|
pull_request:
|
|
branches:
|
|
- '**'
|
|
paths-ignore:
|
|
- 'docs/**'
|
|
|
|
concurrency:
|
|
group: ${{ github.workflow }}-${{ github.ref }}
|
|
cancel-in-progress: true
|
|
|
|
jobs:
|
|
build:
|
|
name: Testing PX4 ${{ matrix.config.model }}
|
|
runs-on: [runs-on,runner=8cpu-linux-x64,image=ubuntu24-full-x64,"run-id=${{ github.run_id }}",spot=false,extras=s3-cache]
|
|
container:
|
|
image: px4io/px4-dev-simulation-focal:2021-09-08
|
|
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
|
|
strategy:
|
|
fail-fast: false
|
|
matrix:
|
|
config:
|
|
- {model: "iris", latitude: "59.617693", longitude: "-151.145316", altitude: "48", build_type: "RelWithDebInfo" } # Alaska
|
|
# VTOL/tailsitter disabled: persistent flaky CI failures (timeouts, erratic
|
|
# transitions). Re-enable once the test infrastructure is stabilized.
|
|
# - {model: "tailsitter" , latitude: "29.660316", longitude: "-82.316658", altitude: "30", build_type: "RelWithDebInfo" } # Florida
|
|
# - {model: "standard_vtol", latitude: "47.397742", longitude: "8.545594", altitude: "488", build_type: "Coverage" } # Zurich
|
|
env:
|
|
PX4_CMAKE_BUILD_TYPE: ${{ matrix.config.build_type }}
|
|
PX4_SBOM_DISABLE: 1
|
|
|
|
steps:
|
|
- uses: runs-on/action@v2
|
|
- uses: actions/checkout@v6
|
|
with:
|
|
fetch-depth: 1
|
|
- name: Configure Git Safe Directory
|
|
run: git config --system --add safe.directory '*'
|
|
|
|
- uses: ./.github/actions/setup-ccache
|
|
id: ccache
|
|
with:
|
|
cache-key-prefix: ccache-sitl-gazebo-classic
|
|
max-size: 350M
|
|
|
|
- uses: ./.github/actions/build-gazebo-sitl
|
|
|
|
- name: Download MAVSDK
|
|
run: wget "https://github.com/mavlink/MAVSDK/releases/download/v$(cat test/mavsdk_tests/MAVSDK_VERSION)/libmavsdk-dev_$(cat test/mavsdk_tests/MAVSDK_VERSION)_ubuntu20.04_amd64.deb"
|
|
|
|
- name: Install MAVSDK
|
|
run: dpkg -i "libmavsdk-dev_$(cat test/mavsdk_tests/MAVSDK_VERSION)_ubuntu20.04_amd64.deb"
|
|
|
|
- name: Check PX4 Environment Variables
|
|
env:
|
|
PX4_HOME_LAT: ${{matrix.config.latitude}}
|
|
PX4_HOME_LON: ${{matrix.config.longitude}}
|
|
PX4_HOME_ALT: ${{matrix.config.altitude}}
|
|
run: |
|
|
export
|
|
ulimit -a
|
|
|
|
- name: Build PX4 / MAVSDK tests
|
|
env:
|
|
DONT_RUN: 1
|
|
run: make px4_sitl_default sitl_gazebo-classic mavsdk_tests
|
|
|
|
- uses: ./.github/actions/save-ccache
|
|
if: always()
|
|
with:
|
|
cache-primary-key: ${{ steps.ccache.outputs.cache-primary-key }}
|
|
|
|
- name: Core Dump Settings
|
|
run: |
|
|
ulimit -c unlimited
|
|
echo "`pwd`/%e.core" > /proc/sys/kernel/core_pattern
|
|
|
|
- name: Run SITL / MAVSDK Tests
|
|
env:
|
|
PX4_HOME_LAT: ${{matrix.config.latitude}}
|
|
PX4_HOME_LON: ${{matrix.config.longitude}}
|
|
PX4_HOME_ALT: ${{matrix.config.altitude}}
|
|
run: test/mavsdk_tests/mavsdk_test_runner.py --speed-factor 10 --abort-early --model ${{matrix.config.model}} test/mavsdk_tests/configs/gazebo-classic-sitl.json --verbose --force-color
|
|
timeout-minutes: 45
|
|
|
|
- name: Upload failed logs
|
|
if: failure()
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: failed-${{matrix.config.model}}-logs.zip
|
|
path: |
|
|
logs/**/**/**/*.log
|
|
logs/**/**/**/*.ulg
|
|
build/px4_sitl_default/tmp_mavsdk_tests/rootfs/log/**/*.ulg
|
|
|
|
- name: Look at Core files
|
|
if: failure() && ${{ hashFiles('px4.core') != '' }}
|
|
run: gdb build/px4_sitl_default/bin/px4 px4.core -ex "thread apply all bt" -ex "quit"
|
|
|
|
- name: Upload PX4 coredump
|
|
if: failure() && ${{ hashFiles('px4.core') != '' }}
|
|
uses: actions/upload-artifact@v7
|
|
with:
|
|
name: coredump
|
|
path: px4.core
|
|
|
|
- name: Setup & Generate Coverage Report
|
|
if: contains(matrix.config.build_type, 'Coverage')
|
|
run: |
|
|
git config --global credential.helper "" # disable the keychain credential helper
|
|
git config --global --add credential.helper store # enable the local store credential helper
|
|
echo "https://x-access-token:${{ secrets.ACCESS_TOKEN }}@github.com" >> ~/.git-credentials # add credential
|
|
git config --global url."https://github.com/".insteadof git@github.com: # credentials add credential
|
|
mkdir -p coverage
|
|
lcov --directory build/px4_sitl_default --base-directory build/px4_sitl_default --gcov-tool gcov --capture -o coverage/lcov.info
|
|
|
|
- name: Upload Coverage Information to Codecov
|
|
if: contains(matrix.config.build_type, 'Coverage')
|
|
uses: codecov/codecov-action@v6
|
|
with:
|
|
token: ${{ secrets.CODECOV_TOKEN }}
|
|
flags: mavsdk
|
|
file: coverage/lcov.info
|