Optimize test coverage #3194
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: build | |
on: | |
push: | |
paths: | |
- "**Makefile" | |
- "**.c" | |
- "**.h" | |
env: | |
IPV6: 0 | |
jobs: | |
linux: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
cc: [gcc, clang, g++, clang++] | |
target: [test, mip_test] | |
ssl: ["", MBEDTLS] #ssl: ["", MBEDTLS, OPENSSL] | |
select: ["-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=0", "-DMG_ENABLE_POLL=1 -DMG_ENABLE_EPOLL=0", "-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=1"] | |
exclude: | |
- ssl: MBEDTLS | |
select: "-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=0" | |
- ssl: MBEDTLS | |
select: "-DMG_ENABLE_POLL=1 -DMG_ENABLE_EPOLL=0" | |
- ssl: OPENSSL | |
select: "-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=0" | |
- ssl: OPENSSL | |
select: "-DMG_ENABLE_POLL=1 -DMG_ENABLE_EPOLL=0" | |
name: linux ${{ matrix.target }} CC=${{ matrix.cc }} SSL=${{ matrix.ssl }} TFLAGS=${{ matrix.select }} | |
env: | |
CC: ${{ matrix.cc }} | |
SSL: ${{ matrix.ssl }} | |
TFLAGS: ${{ matrix.select }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: ./test/setup_ga_network.sh && sudo apt -y update ; sudo apt -y install libmbedtls-dev && make ${{ matrix.target }} | |
s390: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: sudo apt -y update ; sudo apt -y install qemu binfmt-support qemu-user-static && docker run --rm --privileged multiarch/qemu-user-static --reset -p yes && make s390 | |
armhf: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: sudo apt -y update ; sudo apt -y install qemu binfmt-support qemu-user-static && docker run --rm --privileged multiarch/qemu-user-static --reset -p yes && make armhf | |
linux2: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: sudo apt -y update ; sudo apt -y install libmbedtls-dev valgrind | |
- if: ${{ env.GO == 1 }} | |
run: make unamalgamated && make valgrind && make mg_prefix | |
macos: | |
runs-on: macos-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
ssl: ["", MBEDTLS] #ssl: ["", MBEDTLS, OPENSSL] | |
select: ["-DMG_ENABLE_POLL=0 -DMG_ENABLE_EPOLL=1", -DMG_ENABLE_POLL=1] | |
exclude: | |
- ssl: MBEDTLS | |
select: -DMG_ENABLE_POLL=0 | |
- ssl: OPENSSL | |
select: -DMG_ENABLE_POLL=0 | |
name: macos SSL=${{ matrix.ssl }} TFLAGS=${{ matrix.select }} | |
env: | |
SSL: ${{ matrix.ssl }} | |
TFLAGS: ${{ matrix.select }} -DNO_SNTP_CHECK | |
HOMEBREW_NO_AUTO_UPDATE: 1 | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: brew install jq mbedtls openssl | |
- if: ${{ env.GO == 1 }} | |
run: make test ASAN_OPTIONS= MBEDTLS=`echo /usr/local/Cellar/mbedtls*/*` OPENSSL=`echo /usr/local/Cellar/openssl*/*` | |
- if: ${{ env.GO == 1 }} | |
run: make mg_prefix | |
windows: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
target: [vc98, vc17, vc22, mingw, mingw++] | |
select: [-DMG_ENABLE_POLL=0, -DMG_ENABLE_POLL=1] | |
exclude: | |
- target: vc98 | |
select: -DMG_ENABLE_POLL=1 | |
name: windows ${{ matrix.target }} TFLAGS=${{ matrix.select }} | |
env: | |
TFLAGS: ${{ matrix.select }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh '^test|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: make ${{ matrix.target }} | |
arm: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: make arm | |
riscv: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: make riscv | |
examples: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- run: sudo apt -y install libmbedtls-dev libpcap-dev | |
- run: make examples | |
- run: make clean | |
examples_win: | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
# - uses: egor-tensin/setup-mingw@v2 | |
# with: | |
# platform: x64 | |
- name: test they build | |
run: make examples_win | |
shell: cmd | |
- name: test they clean | |
run: make clean_examples_win | |
shell: cmd | |
examples_mac: | |
runs-on: macos-latest | |
env: { HOMEBREW_NO_AUTO_UPDATE: 1 } | |
steps: | |
- uses: actions/checkout@v3 | |
- run: make examples_mac | |
- run: make clean_examples_mac | |
test_f7: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-f7.*-make-" ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: sudo apt -y update; sudo apt -y install gcc-arm-none-eabi | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/stm32/nucleo-f746zg-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/stm32/nucleo-f746zg-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/stm32/nucleo-f746zg-make-freertos-tcp test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
- run: echo GO=0 >> $GITHUB_ENV ; if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f7.*-cube-'; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5 | |
- if: ${{ env.GO == 1 }} | |
run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5 | |
- if: ${{ env.GO == 1 }} | |
run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-freertos-lwip VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5 | |
test_f4: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-f4.*-make-" ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: sudo apt -y update; sudo apt -y install gcc-arm-none-eabi | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/stm32/nucleo-f429zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/stm32/nucleo-f429zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
- run: echo GO=0 >> $GITHUB_ENV ; if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f4.*-cube-'; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2 | |
- if: ${{ env.GO == 1 }} | |
run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2 | |
- if: ${{ env.GO == 1 }} | |
run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-freertos-lwip VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2 | |
test_h7: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 3 } | |
- run: if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-h7.*-make-" ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: sudo apt -y update; sudo apt -y install gcc-arm-none-eabi | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/stm32/nucleo-h743zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/stm32/nucleo-h743zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
- run: echo GO=0 >> $GITHUB_ENV ; if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h7.*-cube-'; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-h743zi-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=6 | |
- if: ${{ env.GO == 1 }} | |
run: make -C test/cube test PROJECTS=../../examples/stm32/nucleo-h743zi-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=6 | |
test_h5: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 3 } | |
- run: if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-h5.*-make-" ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: sudo apt -y update; sudo apt -y install gcc-arm-none-eabi | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/stm32/nucleo-h563zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
test_tm4c: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/ti/ek-tm4c" ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: sudo apt -y update; sudo apt -y install gcc-arm-none-eabi | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/ti/ek-tm4c1294xl-baremetal test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/ti/ek-tm4c1294xl-freertos test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
test_same54: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/microchip/same54" ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: sudo apt -y update; sudo apt -y install gcc-arm-none-eabi | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/microchip/same54/device-dashboard test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/microchip/same54/mqtt-client test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
test_pico_w5500: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/rp2040/pico-w5500" ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: sudo apt -y update; sudo apt -y install gcc-arm-none-eabi | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/rp2040/pico-w5500 test VCON_API_KEY=${{secrets.VCON_API_KEY}} | |
arduino: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh '^examples/arduino|^src/.*.[ch]' ; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/arduino arduino-xiao | |
# - if: ${{ env.GO == 1 }} | |
# run: make -C examples/arduino arduino-nano | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/arduino clean | |
matrix_examples: | |
runs-on: ubuntu-latest | |
strategy: | |
fail-fast: false | |
matrix: | |
example: | |
- path: esp32/device-dashboard | |
- path: esp32/uart-bridge | |
- path: esp8266/http-client-server | |
- path: microchip/same54/device-dashboard | |
- path: microchip/same54/mqtt-client | |
- path: infineon/infineon-xmc4700_4800-lwip-rtx-rtos | |
- path: nxp/nxp-mimxrt1020-azurertos | |
- path: nxp/nxp-frdmk66f-freertos | |
- path: nxp/nxp-lpcxpresso54s018m-freertos | |
- path: nxp/nxp-mimxrt1020-freertos | |
- path: nxp/nxp-evkbimxrt1050-lwip-freertos | |
- path: nxp/nxp-evkmimxrt1020-lwip-freertos | |
- path: nxp/nxp-evkmimxrt1024-lwip-freertos | |
- path: nxp/nxp-evkmimxrt1060-lwip-freertos | |
- path: nxp/nxp-evkmimxrt1064-lwip-freertos | |
- path: nxp/nxp-evkmimxrt1160-cm7-lwip-freertos | |
- path: nxp/nxp-evkmimxrt1170-cm7-lwip-freertos | |
- path: nxp/nxp-frdmk64f-lwip-freertos | |
- path: nxp/nxp-frdmk66f-lwip-freertos | |
- path: nxp/nxp-lpcxpresso54018-lwip-freertos | |
- path: nxp/nxp-lpcxpresso54608-lwip-freertos | |
- path: nxp/nxp-lpcxpresso54618-lwip-freertos | |
- path: nxp/nxp-lpcxpresso54628-lwip-freertos | |
- path: nxp/nxp-twrk65f180m-lwip-freertos | |
- path: nxp/nxp-twrkv58f220m-lwip-freertos | |
- path: rp2040/pico-rmii | |
- path: rp2040/pico-rndis-dashboard | |
- path: rp2040/pico-w | |
- path: rp2040/pico-w5500 | |
- path: stm32/nucleo-f429zi-make-baremetal-builtin | |
- path: stm32/nucleo-f429zi-make-freertos-builtin | |
- path: stm32/nucleo-f429zi-make-baremetal-builtin-rndis | |
- path: stm32/nucleo-f746zg-make-baremetal-builtin | |
- path: stm32/nucleo-f746zg-make-freertos-builtin | |
- path: stm32/nucleo-f746zg-make-freertos-tcp | |
- path: stm32/nucleo-f746zg-make-baremetal-builtin-rndis | |
- path: stm32/nucleo-h563zi-make-baremetal-builtin | |
- path: stm32/nucleo-h743zi-make-baremetal-builtin | |
- path: stm32/nucleo-h743zi-make-freertos-builtin | |
- path: ti/ti-ek-tm4c1294xl-http-server | |
- path: ti/ek-tm4c1294xl-baremetal | |
- path: ti/ek-tm4c1294xl-freertos | |
name: ${{ matrix.example.path }} | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh '^src|^examples/${{ matrix.example.path }}'; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: sudo apt -y update ; sudo apt -y install gcc-arm-none-eabi | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/${{ matrix.example.path }} build | |
cube_examples: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh '^src|examples/stm32/nucleo-*-cube-*'; then echo GO=1 >> $GITHUB_ENV ; fi | |
- if: ${{ env.GO == 1 }} | |
run: cd test/cube && make | |
zephyr_examples: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v3 | |
with: { fetch-depth: 2 } | |
- run: if ./test/match_changed_files.sh '^src/.*.[ch]|^examples/zephyr'; then sudo apt -y update ; sudo apt -y install gcc-arm-none-eabi ; fi | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/zephyr init | |
- name: minify manifest | |
if: ${{ env.GO == 1 }} | |
uses: mikefarah/yq@master | |
with: | |
cmd: yq -i eval '(.manifest.defaults, .manifest.remotes, .manifest.projects[] | select(.name == "cmsis" or .name == "hal_stm32" or .name == "mbedtls" or .name == "mcuboot" or .name == "picolibc" | del(.null) ), .manifest.self) as $i ireduce({};setpath($i | path; $i)) | del(.manifest.projects.[].null) | del(..|select(length==0))' examples/zephyr/zephyrproject/zephyr/west.yml | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/zephyr update | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/zephyr/device-dashboard build | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/zephyr/http-client build | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/zephyr/http-server build | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/zephyr/mqtt-aws-client build | |
- if: ${{ env.GO == 1 }} | |
run: make -C examples/zephyr/websocket-server build |