From 5616914e75efeb9b318e5c1d13d4359e83e016e7 Mon Sep 17 00:00:00 2001 From: Daniel Agar Date: Sat, 20 Jun 2020 18:25:24 -0400 Subject: [PATCH] start migrating MAVROS SITL tests to Github Actions --- .github/workflows/mavros_sitl_tests.yml | 122 ++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 .github/workflows/mavros_sitl_tests.yml diff --git a/.github/workflows/mavros_sitl_tests.yml b/.github/workflows/mavros_sitl_tests.yml new file mode 100644 index 0000000000..cce34b92a2 --- /dev/null +++ b/.github/workflows/mavros_sitl_tests.yml @@ -0,0 +1,122 @@ +name: MAVROS SITL Tests + +on: + push: + branches: + - 'master' + pull_request: + branches: + - '*' + +jobs: + build: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + config: + - {vehicle: "iris", mission: "MC_mission_box", build_type: "RelWithDebInfo"} + - {vehicle: "rover", mission: "rover_mission_1", build_type: "RelWithDebInfo"} + - {vehicle: "plane", mission: "FW_mission_1", build_type: "RelWithDebInfo"} + - {vehicle: "standard_vtol", mission: "VTOL_mission_1", build_type: "RelWithDebInfo"} + #- {vehicle: "tailsitter", mission: "VTOL_mission_1", build_type: "RelWithDebInfo"} + #- {vehicle: "tiltrotor", mission: "VTOL_mission_1", build_type: "RelWithDebInfo"} + + container: + image: px4io/px4-dev-ros-melodic:2020-04-01 + options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined + steps: + - uses: actions/checkout@v1 + with: + token: ${{ secrets.ACCESS_TOKEN }} + + - name: Prepare ccache timestamp + id: ccache_cache_timestamp + shell: cmake -P {0} + run: | + string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) + message("::set-output name=timestamp::${current_date}") + - name: ccache cache files + uses: actions/cache@v2 + with: + path: ~/.ccache + key: sitl_tests-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}} + restore-keys: sitl_tests-ccache- + - name: setup ccache + run: | + mkdir -p ~/.ccache + echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf + echo "compression = true" >> ~/.ccache/ccache.conf + echo "compression_level = 6" >> ~/.ccache/ccache.conf + echo "max_size = 400M" >> ~/.ccache/ccache.conf + ccache -s + ccache -z + + - name: check environment + run: export + - name: Build PX4 + env: + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}} + run: make px4_sitl_default + - name: ccache post-run px4/firmware + run: ccache -s + - name: Build SITL Gazebo + env: + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}} + run: make px4_sitl_default sitl_gazebo + - name: ccache post-run sitl_gazebo + run: ccache -s + + - name: Core dump settings + run: | + ulimit -c unlimited + echo "`pwd`/%e.core" > /proc/sys/kernel/core_pattern + + - name: Run SITL tests + env: + PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}} + TEST_FILE: "mavros_posix_test_mission.test" + TEST_MISSION: ${{matrix.config.mission}} + TEST_VEHICLE: ${{matrix.config.vehicle}} + run: | + export + make rostest_run + + - name: Look at core files + if: failure() + run: gdb build/px4_sitl_default/bin/px4 px4.core -ex "thread apply all bt" -ex "quit" + - name: Upload px4 coredump + if: failure() + uses: actions/upload-artifact@v2-preview + with: + name: coredump + path: px4.core + + - name: Upload logs to flight review + #run: ./Tools/upload_log.py -q --description "${GITHUB_WORKFLOW} ${GITHUB_RUN_ID}" --feedback "${GITHUB_WORKFLOW} ${GITHUB_RUN_ID} ${GITHUB_REPOSITORY} ${GITHUB_REF}" --source CI .ros/log/*/*.ulg + run: find . -name \*.ulg + + - name: Upload px4 binary + if: failure() + uses: actions/upload-artifact@v2-preview + with: + name: binary + path: build/px4_sitl_default/bin/px4 + + # Report test coverage + - name: Upload coverage + 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@v1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + flags: mavsdk + file: coverage/lcov.info