ci: update actions and images

Updates some actions to run build steps in container instead of the
whole workflow.
This commit is contained in:
Ramon Roche
2024-11-25 10:20:47 -08:00
committed by Daniel Agar
parent d416cd2a6c
commit 28487350d3
10 changed files with 142 additions and 312 deletions
+20 -21
View File
@@ -25,28 +25,27 @@ jobs:
"NO_NINJA_BUILD=1 px4_fmu-v5_default", "NO_NINJA_BUILD=1 px4_fmu-v5_default",
"NO_NINJA_BUILD=1 px4_sitl_default", "NO_NINJA_BUILD=1 px4_sitl_default",
"px4_sitl_allyes", "px4_sitl_allyes",
"airframe_metadata",
"module_documentation", "module_documentation",
"parameters_metadata",
] ]
container:
image: px4io/px4-dev-nuttx-focal:2022-08-12
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v4
with: with:
token: ${{ secrets.ACCESS_TOKEN }} fetch-depth: 0
- name: check environment - name: Building [${{ matrix.check }}]
run: | uses: addnab/docker-run-action@v3
export with:
ulimit -a image: px4io/px4-dev-nuttx-focal:2022-08-12
- name: ${{matrix.check}} options: -v ${{ github.workspace }}:/workspace
run: make ${{matrix.check}} run: |
- name: upload coverage cd /workspace
if: contains(matrix.check, 'coverage') git config --global --add safe.directory /workspace
uses: codecov/codecov-action@v1 make ${{ matrix.check }}
with:
token: ${{ secrets.CODECOV_TOKEN }} - name: Uploading Coverage to Codecov.io
flags: unittests if: contains(matrix.check, 'coverage')
file: coverage/lcov.info uses: codecov/codecov-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
flags: unittests
file: coverage/lcov.info
+10 -6
View File
@@ -11,13 +11,17 @@ on:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: px4io/px4-dev-clang:2021-09-08
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v4
with: with:
token: ${{secrets.ACCESS_TOKEN}} fetch-depth: 0
- uses: corrupt952/actions-retry-command@v1.0.7 - name: Testing (clang-tidy-quiet)
uses: addnab/docker-run-action@v3
with: with:
command: make clang-tidy-quiet image: px4io/px4-dev-clang:2021-09-08
max_attempts: 3 options: -v ${{ github.workspace }}:/workspace
run: |
cd /workspace
git config --global --add safe.directory /workspace
make clang-tidy-quiet
+3 -5
View File
@@ -19,13 +19,11 @@ jobs:
] ]
steps: steps:
- name: install Python 3.10 - name: install Python 3.10
uses: actions/setup-python@v4 uses: actions/setup-python@v5
with: with:
python-version: "3.10" python-version: "3.10"
- uses: actions/checkout@v1 - uses: actions/checkout@v4
with:
token: ${{secrets.ACCESS_TOKEN}}
- name: setup - name: setup
run: ./Tools/setup/macos.sh; ./Tools/setup/macos.sh run: ./Tools/setup/macos.sh; ./Tools/setup/macos.sh
@@ -37,7 +35,7 @@ jobs:
string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC) string(TIMESTAMP current_date "%Y-%m-%d-%H;%M;%S" UTC)
message("::set-output name=timestamp::${current_date}") message("::set-output name=timestamp::${current_date}")
- name: ccache cache files - name: ccache cache files
uses: actions/cache@v2 uses: actions/cache@v4
with: with:
path: ~/.ccache path: ~/.ccache
key: macos_${{matrix.config}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}} key: macos_${{matrix.config}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}}
@@ -1,21 +1,28 @@
name: EKF Change Indicator name: EKF Change Indicator
on: pull_request on:
pull_request:
branches:
- '*'
jobs: jobs:
unit_tests: unit_tests:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: px4io/px4-dev-base-focal:2021-09-08
steps: steps:
- uses: actions/checkout@v2.3.1 - uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- name: checkout newest version of branch
run: |
git fetch origin pull/${{github.event.pull_request.number}}/head:${{github.head_ref}}
git checkout ${GITHUB_HEAD_REF}
- name: main test - name: main test
run: make tests TESTFILTER=EKF uses: addnab/docker-run-action@v3
with:
image: px4io/px4-dev-base-focal:2021-09-08
options: -v ${{ github.workspace }}:/workspace
run: |
cd /workspace
git config --global --add safe.directory /workspace
make tests TESTFILTER=EKF
- name: Check if there is a functional change - name: Check if there is a functional change
run: git diff --exit-code run: git diff --exit-code
working-directory: src/modules/ekf2/test/change_indication working-directory: src/modules/ekf2/test/change_indication
@@ -5,25 +5,40 @@ on: push
jobs: jobs:
unit_tests: unit_tests:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: px4io/px4-dev-base-focal:2021-09-08
env: env:
GIT_COMMITTER_EMAIL: bot@px4.io GIT_COMMITTER_EMAIL: bot@px4.io
GIT_COMMITTER_NAME: PX4BuildBot GIT_COMMITTER_NAME: PX4BuildBot
steps: steps:
- uses: actions/checkout@v2.3.1 - uses: actions/checkout@v4
with: with:
fetch-depth: 0 fetch-depth: 0
- name: main test updates change indication files
run: make tests TESTFILTER=EKF - name: main test
uses: addnab/docker-run-action@v3
with:
image: px4io/px4-dev-base-focal:2021-09-08
options: -v ${{ github.workspace }}:/workspace
run: |
cd /workspace
git config --global --add safe.directory /workspace
make tests TESTFILTER=EKF
- name: Check if there exists diff and save result in variable - name: Check if there exists diff and save result in variable
run: echo "CHANGE_INDICATED=$(git diff --exit-code --output=/dev/null || echo $?)" >> $GITHUB_ENV id: diff-check
run: echo "CHANGE_INDICATED=$(git diff --exit-code --output=/dev/null || echo $?)" >> $GITHUB_OUTPUT
working-directory: src/modules/ekf2/test/change_indication working-directory: src/modules/ekf2/test/change_indication
- name: auto-commit any changes to change indication - name: auto-commit any changes to change indication
uses: stefanzweifel/git-auto-commit-action@v4 uses: stefanzweifel/git-auto-commit-action@v4
with: with:
commit_message: '[AUTO COMMIT] update change indication' file_pattern: 'src/modules/ekf2/test/change_indication/*.csv'
commit_user_name: ${GIT_COMMITTER_NAME} commit_user_name: ${GIT_COMMITTER_NAME}
commit_user_email: ${GIT_COMMITTER_EMAIL} commit_user_email: ${GIT_COMMITTER_EMAIL}
- if: ${{env.CHANGE_INDICATED}} commit_message: |
name: if there is a functional change, fail check '[AUTO COMMIT] update change indication'
See .github/workflopws/ekf_update_change_indicator.yml for more details
- name: if there is a functional change, fail check
if: ${{ steps.diff-check.outputs.CHANGE_INDICATED }}
run: exit 1 run: exit 1
+19 -17
View File
@@ -24,21 +24,23 @@ jobs:
image: px4io/px4-dev-nuttx-focal:2022-08-12 image: px4io/px4-dev-nuttx-focal:2022-08-12
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
steps: steps:
- uses: actions/checkout@v1 - name: Install Node v20.18.0
with: uses: actions/setup-node@v4
token: ${{ secrets.ACCESS_TOKEN }} with:
node-version: 20.18.0
- name: check environment - uses: actions/checkout@v4
run: | with:
export fetch-depth: 0
ulimit -a
- name: install emscripten - name: Install empscripten
run: | run: |
git clone https://github.com/emscripten-core/emsdk.git _emscripten_sdk git clone https://github.com/emscripten-core/emsdk.git _emscripten_sdk
cd _emscripten_sdk cd _emscripten_sdk
./emsdk install latest ./emsdk install latest
./emsdk activate latest ./emsdk activate latest
- name: ${{matrix.check}}
run: | - name: Testing [${{ matrix.check }}]
. ./_emscripten_sdk/emsdk_env.sh run: |
make ${{matrix.check}} . ./_emscripten_sdk/emsdk_env.sh
make ${{ matrix.check }}
+14 -119
View File
@@ -11,131 +11,26 @@ on:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
env:
ACTIONS_ALLOW_USE_UNSECURE_NODE_VERSION: true
strategy: strategy:
fail-fast: false fail-fast: false
matrix: matrix:
config: config:
- {vehicle: "iris", mission: "MC_mission_box", build_type: "RelWithDebInfo"} - {vehicle: "iris", mission: "MC_mission_box"}
- {vehicle: "rover", mission: "rover_mission_1", build_type: "RelWithDebInfo"} - {vehicle: "rover", mission: "rover_mission_1"}
#- {vehicle: "plane", mission: "FW_mission_1", build_type: "RelWithDebInfo"}
#- {vehicle: "plane_catapult",mission: "FW_mission_1", build_type: "RelWithDebInfo"}
#- {vehicle: "standard_vtol", mission: "VTOL_mission_1", build_type: "Coverage"}
#- {vehicle: "standard_vtol", mission: "VTOL_mission_1", build_type: "AddressSanitizer"}
#- {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:2021-09-08
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v4
with: with:
token: ${{ secrets.ACCESS_TOKEN }} fetch-depth: 0
- name: Prepare ccache timestamp - name: Build SITL and Run Tests
id: ccache_cache_timestamp uses: addnab/docker-run-action@v3
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: with:
path: ~/.ccache image: px4io/px4-dev-ros-melodic:2021-09-08
key: sitl_tests-${{matrix.config.build_type}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}} options: -v ${{ github.workspace }}:/workspace
restore-keys: sitl_tests-${{matrix.config.build_type}}-ccache- run: |
- name: setup ccache cd /workspace
run: | git config --global --add safe.directory /workspace
mkdir -p ~/.ccache make px4_sitl_default
echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf make px4_sitl_default sitl_gazebo-classic
echo "compression = true" >> ~/.ccache/ccache.conf ./test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=${{matrix.config.mission}} vehicle:=${{matrix.config.vehicle}}
echo "compression_level = 6" >> ~/.ccache/ccache.conf
echo "max_size = 100M" >> ~/.ccache/ccache.conf
echo "hash_dir = false" >> ~/.ccache/ccache.conf
ccache -s
ccache -z
- name: check environment
run: |
export
ulimit -a
- name: Build PX4 and sitl_gazebo-classic
env:
PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
run: |
ccache -z
make px4_sitl_default
make px4_sitl_default sitl_gazebo-classic
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}}
run: |
export
./test/rostest_px4_run.sh mavros_posix_test_mission.test mission:=${{matrix.config.mission}} vehicle:=${{matrix.config.vehicle}}
timeout-minutes: 45
- 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@v3
with:
name: coredump
path: px4.core
- name: ecl EKF analysis
if: always()
run: ./Tools/ecl_ekf/process_logdata_ekf.py ~/.ros/log/*/*.ulg || true
- name: Upload logs to flight review
if: always()
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
- name: Upload px4 binary
if: failure()
uses: actions/upload-artifact@v3
with:
name: binary
path: build/px4_sitl_default/bin/px4
- name: Store PX4 log
if: failure()
uses: actions/upload-artifact@v3
with:
name: px4_log
path: ~/.ros/log/*/*.ulg
- name: Store ROS log
if: failure()
uses: actions/upload-artifact@v3
with:
name: ros_log
path: ~/.ros/**/rostest-*.log
# 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: mavros_mission
file: coverage/lcov.info
+13 -112
View File
@@ -17,120 +17,21 @@ jobs:
fail-fast: false fail-fast: false
matrix: matrix:
config: config:
- {test_file: "mavros_posix_tests_offboard_posctl.test", vehicle: "iris", build_type: "RelWithDebInfo"} - {test_file: "mavros_posix_tests_offboard_posctl.test", vehicle: "iris"}
#- {test_file: "mavros_posix_tests_offboard_attctl.test", vehicle: "iris", build_type: "RelWithDebInfo"}
#- {test_file: "mavros_posix_tests_offboard_rpyrt_ctl.test", vehicle: "iris", build_type: "RelWithDebInfo"}
container:
image: px4io/px4-dev-ros-melodic:2021-09-08
options: --privileged --ulimit core=-1 --security-opt seccomp=unconfined
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v4
with: with:
token: ${{ secrets.ACCESS_TOKEN }} fetch-depth: 0
- name: Prepare ccache timestamp - name: Build PX4 and Run Tests
id: ccache_cache_timestamp uses: addnab/docker-run-action@v3
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: with:
path: ~/.ccache image: px4io/px4-dev-ros-melodic:2021-09-08
key: sitl_tests-${{matrix.config.build_type}}-ccache-${{steps.ccache_cache_timestamp.outputs.timestamp}} options: -v ${{ github.workspace }}:/workspace
restore-keys: sitl_tests-${{matrix.config.build_type}}-ccache- run: |
- name: setup ccache cd /workspace
run: | git config --global --add safe.directory /workspace
mkdir -p ~/.ccache make px4_sitl_default
echo "base_dir = ${GITHUB_WORKSPACE}" > ~/.ccache/ccache.conf make px4_sitl_default sitl_gazebo-classic
echo "compression = true" >> ~/.ccache/ccache.conf ./test/rostest_px4_run.sh ${{matrix.config.test_file}} vehicle:=${{matrix.config.vehicle}}
echo "compression_level = 6" >> ~/.ccache/ccache.conf
echo "max_size = 100M" >> ~/.ccache/ccache.conf
echo "hash_dir = false" >> ~/.ccache/ccache.conf
ccache -s
ccache -z
- name: check environment
run: |
export
ulimit -a
- name: Build PX4 and sitl_gazebo-classic
env:
PX4_CMAKE_BUILD_TYPE: ${{matrix.config.build_type}}
run: |
ccache -z
make px4_sitl_default
make px4_sitl_default sitl_gazebo-classic
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}}
run: |
export
./test/rostest_px4_run.sh ${{matrix.config.test_file}} vehicle:=${{matrix.config.vehicle}}
timeout-minutes: 45
- 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@v3
with:
name: coredump
path: px4.core
- name: ecl EKF analysis
if: always()
run: ./Tools/ecl_ekf/process_logdata_ekf.py ~/.ros/log/*/*.ulg || true
- name: Upload logs to flight review
if: always()
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
- name: Upload px4 binary
if: failure()
uses: actions/upload-artifact@v3
with:
name: binary
path: build/px4_sitl_default/bin/px4
- name: Store PX4 log
if: failure()
uses: actions/upload-artifact@v3
with:
name: px4_log
path: ~/.ros/log/*/*.ulg
- name: Store ROS log
if: failure()
uses: actions/upload-artifact@v3
with:
name: ros_log
path: ~/.ros/**/rostest-*.log
# 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: mavros_offboard
file: coverage/lcov.info
+19 -14
View File
@@ -11,22 +11,27 @@ on:
jobs: jobs:
build: build:
runs-on: ubuntu-latest runs-on: ubuntu-latest
container: px4io/px4-dev-nuttx-focal:2022-08-12
strategy: strategy:
matrix: matrix:
config: [ config: [
px4_fmu-v5, px4_fmu-v5_default,
] ]
steps:
- uses: actions/checkout@v1
with:
token: ${{secrets.ACCESS_TOKEN}}
- name: make ${{matrix.config}} steps:
env: - uses: actions/checkout@v4
PX4_EXTRA_NUTTX_CONFIG: "CONFIG_NSH_LOGIN_PASSWORD=\"test\";CONFIG_NSH_CONSOLE_LOGIN=y" with:
run: | fetch-depth: 0
echo "PX4_EXTRA_NUTTX_CONFIG: $PX4_EXTRA_NUTTX_CONFIG"
make ${{matrix.config}} nuttx_context - name: Build PX4 and Run Test [${{ matrix.config }}]
# Check that the config option is set uses: addnab/docker-run-action@v3
grep CONFIG_NSH_LOGIN_PASSWORD build/${{matrix.config}}_default/NuttX/nuttx/.config with:
image: px4io/px4-dev-nuttx-focal:2022-08-12
options: -v ${{ github.workspace }}:/workspace
run: |
cd /workspace
git config --global --add safe.directory /workspace
export PX4_EXTRA_NUTTX_CONFIG="CONFIG_NSH_LOGIN_PASSWORD=\"test\";CONFIG_NSH_CONSOLE_LOGIN=y"
echo "PX4_EXTRA_NUTTX_CONFIG: $PX4_EXTRA_NUTTX_CONFIG"
make ${{ matrix.config }} nuttx_context
echo "Check that the config option is set"
grep CONFIG_NSH_LOGIN_PASSWORD build/${{ matrix.config }}/NuttX/nuttx/.config
+6 -2
View File
@@ -12,14 +12,18 @@ jobs:
build: build:
runs-on: ubuntu-24.04 runs-on: ubuntu-24.04
steps: steps:
- uses: actions/checkout@v1 - uses: actions/checkout@v4
with: with:
token: ${{ secrets.ACCESS_TOKEN }} fetch-depth: 0
- name: Install Python3 - name: Install Python3
run: sudo apt-get install python3 python3-setuptools python3-pip -y run: sudo apt-get install python3 python3-setuptools python3-pip -y
- name: Install tools - name: Install tools
run: python3 -m pip install mypy types-requests flake8 --break-system-packages run: python3 -m pip install mypy types-requests flake8 --break-system-packages
- name: Check MAVSDK test scripts with mypy - name: Check MAVSDK test scripts with mypy
run: $HOME/.local/bin/mypy --strict test/mavsdk_tests/*.py run: $HOME/.local/bin/mypy --strict test/mavsdk_tests/*.py
- name: Check MAVSDK test scripts with flake8 - name: Check MAVSDK test scripts with flake8
run: $HOME/.local/bin/flake8 test/mavsdk_tests/*.py run: $HOME/.local/bin/flake8 test/mavsdk_tests/*.py