diff --git a/.github/workflows/cifuzz.yml b/.github/workflows/cifuzz.yml index be1f49f2..26eedfee 100644 --- a/.github/workflows/cifuzz.yml +++ b/.github/workflows/cifuzz.yml @@ -1,9 +1,10 @@ name: CIFuzz on: - pull_request: - paths: - - "mongoose.c" - - "mongoose.h" + schedule: + - cron: '0 2 * * *' # run at 2 AM UTC + # Allow manual runs + workflow_dispatch: + jobs: Fuzzing: runs-on: ubuntu-latest diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 09dcf3d3..8adbcc1f 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -2,13 +2,10 @@ name: "CodeQL Scanning" # https://github.com/github/codeql-action on: - push: - paths: - - "Makefile" - - "mongoose.c" - - "mongoose.h" - - test/unit-test - - test/mip-test + schedule: + - cron: '30 2 * * *' # run at 2:30 AM UTC + # Allow manual runs + workflow_dispatch: env: IPV6: 0 diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml new file mode 100644 index 00000000..ba4bcd10 --- /dev/null +++ b/.github/workflows/nightly.yml @@ -0,0 +1,744 @@ +name: Full build and test +on: + schedule: + - cron: '0 1 * * *' # run at 1 AM UTC + # Allow manual runs + workflow_dispatch: + +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, 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, OPENSSL] + select: [-DMG_ENABLE_POLL=0, -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 -Wno-sign-conversion # Workaround for MbedTLS 3.5.0 + 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 + + + arduino: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/arduino" ; then + echo GO=1 >> $GITHUB_ENV + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/arduino'; then + make -C examples/arduino arduino-xiao + fi +# - if: ${{ env.GO == 1 }} +# run: | +# if ./test/match_changed_files.sh '^src|examples/arduino'; then +# make -C examples/arduino arduino-nano +# fi + - if: ${{ env.GO == 1 }} + run: make -C examples/arduino clean + + + generic_examples: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: esp32/uart-bridge + - path: esp32/micropython + - path: esp8266/http-client-server + name: ${{ matrix.example.path }} + env: + GO: 0 + 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: | + # nothing specific to install or do + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + + generic_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: microchip/same54-xpro/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: stm32/nucleo-f429zi-make-baremetal-builtin-rndis + - path: stm32/nucleo-f746zg-make-baremetal-builtin-rndis + - path: stm32/nucleo-g031-make-baremetal-builtin + - path: ti/ti-ek-tm4c1294xl-http-server + - path: ti/ek-tm4c1294xl-make-baremetal-builtin-rndis + name: ${{ matrix.example.path }} + env: + GO: 0 + 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 + + device_dashboard_examples: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: esp32/device-dashboard + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + + device_dashboard_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: microchip/same54-xpro/device-dashboard + - path: nxp/rt1020-evk-make-baremetal-builtin + - path: nxp/rt1020-evk-make-freertos-builtin + - path: nxp/rt1060-evk-make-baremetal-builtin + - path: nxp/rt1060-evk-make-freertos-builtin + - 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-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-cmsis_driver + - path: stm32/nucleo-h563zi-make-baremetal-builtin + - path: stm32/nucleo-h563zi-make-freertos-builtin + - path: stm32/nucleo-h723zg-make-freertos-builtin + - path: stm32/nucleo-h743zi-make-baremetal-builtin + - path: stm32/nucleo-h743zi-make-freertos-builtin + - path: stm32/stm32h573i-dk-make-baremetal-builtin + - path: stm32/stm32h573i-dk-make-freertos-builtin + - path: ti/ek-tm4c1294xl-make-baremetal-builtin + - path: ti/ek-tm4c1294xl-make-freertos-builtin + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + +# mqtt_dashboard_examples: +# runs-on: ubuntu-latest +# strategy: +# fail-fast: false +# matrix: +# example: +# - path: +# name: ${{ matrix.example.path }} +# env: +# GO: 0 +# steps: +# - uses: actions/checkout@v3 +# with: { fetch-depth: 2 } +# - run: | +# if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then +# echo GO=1 >> $GITHUB_ENV +# # nothing specific to install or do +# fi +# - if: ${{ env.GO == 1 }} +# run: make -C examples/${{ matrix.example.path }} build + + mqtt_dashboard_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: rp2040/pico-rndis-device + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + +# dual_examples: +# runs-on: ubuntu-latest +# strategy: +# fail-fast: false +# matrix: +# example: +# - path: +# name: ${{ matrix.example.path }} +# env: +# GO: 0 +# steps: +# - uses: actions/checkout@v3 +# with: { fetch-depth: 2 } +# - run: | +# if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then +# echo GO=1 >> $GITHUB_ENV +# # nothing specific to install or do +# fi +# - if: ${{ env.GO == 1 }} +# run: | +# if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then +# make -C examples/${{ matrix.example.path }} device_dashboard +# fi +# - if: ${{ env.GO == 1 }} +# run: | +# if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then +# make -C examples/${{ matrix.example.path }} mqtt_dashboard +# fi + + dual_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: stm32/nucleo-h723zg-make-baremetal-builtin + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then + make -C examples/${{ matrix.example.path }} device_dashboard + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then + make -C examples/${{ matrix.example.path }} mqtt_dashboard + fi + + cube_examples: + runs-on: ubuntu-latest + env: + GO: 0 + 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 + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: cd test/cube && make + + zephyr_examples: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src/.*.[ch]|^examples/zephyr'; then + echo GO=1 >> $GITHUB_ENV + 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 + + test_f7: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-f7.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-make-baremetal-builtin'; then + make -C examples/stm32/nucleo-f746zg-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-make-freertos-builtin'; then + make -C examples/stm32/nucleo-f746zg-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-make-freertos-tcp'; then + make -C examples/stm32/nucleo-f746zg-make-freertos-tcp test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - name: Cube + 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 + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-cube-baremetal-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5 + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-cube-freertos-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5 + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-cube-freertos-lwip'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-freertos-lwip VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5 + fi + + + test_f4: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-f4.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f429zi-make-baremetal-builtin'; then + make -C examples/stm32/nucleo-f429zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f429zi-make-freertos-builtin'; then + make -C examples/stm32/nucleo-f429zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - name: Cube + 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 + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f429zi-cube-baremetal-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2 + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f429zi-cube-freertos-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2 + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f429zi-cube-freertos-lwip'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-freertos-lwip VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2 + fi + + test_h743: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 3 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-h74.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h743zi-make-baremetal-builtin'; then + make -C examples/stm32/nucleo-h743zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h743zi-make-freertos-builtin'; then + make -C examples/stm32/nucleo-h743zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - name: Cube + run: | + echo GO=0 >> $GITHUB_ENV + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h74.*-cube-'; then + echo GO=1 >> $GITHUB_ENV + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h743zi-cube-baremetal-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-h743zi-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=6 + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h743zi-cube-freertos-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-h743zi-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=6 + fi + + test_h723: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 3 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-h72.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h723zg-make-baremetal-builtin'; then + make -C examples/stm32/nucleo-h723zg-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h723zg-make-freertos-builtin'; then + make -C examples/stm32/nucleo-h723zg-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + + test_h5: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 3 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-h5.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h563zi-make-baremetal-builtin'; then + make -C examples/stm32/nucleo-h563zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h563zi-make-freertos-builtin'; then + make -C examples/stm32/nucleo-h563zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + + test_rt1020: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 3 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/nxp/rt1020.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + #if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/nxp/rt1020-evk-make-baremetal-builtin'; then + if ./test/match_changed_files.sh '^src|examples/nxp/rt1020-evk-make-baremetal-builtin'; then + make -C examples/nxp/rt1020-evk-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + #if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/nxp/rt1020-evk-make-freertos-builtin'; then + if ./test/match_changed_files.sh '^src|examples/nxp/rt1020-evk-make-freertos-builtin'; then + make -C examples/nxp/rt1020-evk-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + + test_rt1060: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 3 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/nxp/rt1060.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/nxp/rt1060-evk-make-baremetal-builtin'; then + make -C examples/nxp/rt1060-evk-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/nxp/rt1060-evk-make-freertos-builtin'; then + make -C examples/nxp/rt1060-evk-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + + test_tm4c: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/ti/ek-tm4c.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/ti/ek-tm4c1294xl-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + - if: ${{ env.GO == 1 }} + run: make -C examples/ti/ek-tm4c1294xl-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + + test_same54: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/microchip/same54-xpro" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/microchip/same54-xpro/device-dashboard test VCON_API_KEY=${{secrets.VCON_API_KEY}} + - if: ${{ env.GO == 1 }} + run: make -C examples/microchip/same54-xpro/mqtt-client test VCON_API_KEY=${{secrets.VCON_API_KEY}} + + test_pico_w5500: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - name: SDK + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/rp2040/pico-w5500" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/rp2040/pico-w5500 test VCON_API_KEY=${{secrets.VCON_API_KEY}} + diff --git a/.github/workflows/quicktest.yml b/.github/workflows/quicktest.yml new file mode 100644 index 00000000..3ee320a8 --- /dev/null +++ b/.github/workflows/quicktest.yml @@ -0,0 +1,674 @@ +name: Build and test - essentials +on: + push: + paths: + - "**Makefile" + - "**.c" + - "**.h" +env: + IPV6: 0 +jobs: + linux: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + cc: [gcc, clang++] + target: [test, mip_test] + ssl: ["", MBEDTLS] + name: linux ${{ matrix.target }} CC=${{ matrix.cc }} SSL=${{ matrix.ssl }}} + env: + CC: ${{ matrix.cc }} + SSL: ${{ matrix.ssl }} + 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] + name: macos SSL=${{ matrix.ssl }} + env: + SSL: ${{ matrix.ssl }} + TFLAGS: -DNO_SNTP_CHECK -Wno-sign-conversion # Workaround for MbedTLS 3.5.0 + 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, vc22, mingw++] + name: windows ${{ matrix.target }} + 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 + + + arduino: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/arduino" ; then + echo GO=1 >> $GITHUB_ENV + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/arduino'; then + make -C examples/arduino arduino-xiao + fi +# - if: ${{ env.GO == 1 }} +# run: | +# if ./test/match_changed_files.sh '^src|examples/arduino'; then +# make -C examples/arduino arduino-nano +# fi + - if: ${{ env.GO == 1 }} + run: make -C examples/arduino clean + + + generic_examples: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: esp32/uart-bridge + - path: esp8266/http-client-server + name: ${{ matrix.example.path }} + env: + GO: 0 + 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: | + # nothing specific to install or do + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + + generic_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: infineon/infineon-xmc4700_4800-lwip-rtx-rtos + - path: stm32/nucleo-g031-make-baremetal-builtin + name: ${{ matrix.example.path }} + env: + GO: 0 + 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 + + device_dashboard_examples: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: esp32/device-dashboard + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + + device_dashboard_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: microchip/same54-xpro/device-dashboard + - path: nxp/rt1020-evk-make-baremetal-builtin + - path: nxp/rt1020-evk-make-freertos-builtin + - path: nxp/rt1060-evk-make-baremetal-builtin + - path: nxp/rt1060-evk-make-freertos-builtin + - 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-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-cmsis_driver + - path: stm32/nucleo-h563zi-make-baremetal-builtin + - path: stm32/nucleo-h563zi-make-freertos-builtin + - path: stm32/nucleo-h723zg-make-freertos-builtin + - path: stm32/nucleo-h743zi-make-baremetal-builtin + - path: stm32/nucleo-h743zi-make-freertos-builtin + - path: stm32/stm32h573i-dk-make-baremetal-builtin + - path: stm32/stm32h573i-dk-make-freertos-builtin + - path: ti/ek-tm4c1294xl-make-baremetal-builtin + - path: ti/ek-tm4c1294xl-make-freertos-builtin + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + +# mqtt_dashboard_examples: +# runs-on: ubuntu-latest +# strategy: +# fail-fast: false +# matrix: +# example: +# - path: +# name: ${{ matrix.example.path }} +# env: +# GO: 0 +# steps: +# - uses: actions/checkout@v3 +# with: { fetch-depth: 2 } +# - run: | +# if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then +# echo GO=1 >> $GITHUB_ENV +# # nothing specific to install or do +# fi +# - if: ${{ env.GO == 1 }} +# run: make -C examples/${{ matrix.example.path }} build + + mqtt_dashboard_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: rp2040/pico-rndis-device + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + +# dual_examples: +# runs-on: ubuntu-latest +# strategy: +# fail-fast: false +# matrix: +# example: +# - path: +# name: ${{ matrix.example.path }} +# env: +# GO: 0 +# steps: +# - uses: actions/checkout@v3 +# with: { fetch-depth: 2 } +# - run: | +# if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then +# echo GO=1 >> $GITHUB_ENV +# # nothing specific to install or do +# fi +# - if: ${{ env.GO == 1 }} +# run: | +# if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then +# make -C examples/${{ matrix.example.path }} device_dashboard +# fi +# - if: ${{ env.GO == 1 }} +# run: | +# if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then +# make -C examples/${{ matrix.example.path }} mqtt_dashboard +# fi + + dual_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: stm32/nucleo-h723zg-make-baremetal-builtin + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then + make -C examples/${{ matrix.example.path }} device_dashboard + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then + make -C examples/${{ matrix.example.path }} mqtt_dashboard + fi + + cube_examples: + runs-on: ubuntu-latest + env: + GO: 0 + 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 + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: cd test/cube && make + + test_f7: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32|examples/nxp|examples/ti|examples/microchip/same" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + # always run baremetal on core or dashboard or specific example changes; other examples only on specific example changes + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f746zg-make-baremetal-builtin'; then + make -C examples/stm32/nucleo-f746zg-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-f746zg-make-freertos-builtin'; then + make -C examples/stm32/nucleo-f746zg-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-f746zg-make-freertos-tcp'; then + make -C examples/stm32/nucleo-f746zg-make-freertos-tcp test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - name: Cube + run: | + echo GO=0 >> $GITHUB_ENV + if ./test/match_changed_files.sh 'examples/stm32/nucleo-f7.*-cube-'; then + echo GO=1 >> $GITHUB_ENV + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-f746zg-cube-baremetal-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5 + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-f746zg-cube-freertos-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5 + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-f746zg-cube-freertos-lwip'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f746zg-cube-freertos-lwip VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=5 + fi + + + test_f4: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-f4.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-f429zi-make-baremetal-builtin'; then + make -C examples/stm32/nucleo-f429zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-f429zi-make-freertos-builtin'; then + make -C examples/stm32/nucleo-f429zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - name: Cube + run: | + echo GO=0 >> $GITHUB_ENV + if ./test/match_changed_files.sh 'examples/stm32/nucleo-f4.*-cube-'; then + echo GO=1 >> $GITHUB_ENV + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-f429zi-cube-baremetal-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2 + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-f429zi-cube-freertos-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2 + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-f429zi-cube-freertos-lwip'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-f429zi-cube-freertos-lwip VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=2 + fi + + test_h743: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 3 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-h74.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h743zi-make-baremetal-builtin'; then + make -C examples/stm32/nucleo-h743zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-h743zi-make-freertos-builtin'; then + make -C examples/stm32/nucleo-h743zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - name: Cube + run: | + echo GO=0 >> $GITHUB_ENV + if ./test/match_changed_files.sh 'examples/stm32/nucleo-h74.*-cube-'; then + echo GO=1 >> $GITHUB_ENV + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-h743zi-cube-baremetal-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-h743zi-cube-baremetal-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=6 + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-h743zi-cube-freertos-builtin'; then + make -C test/cube test PROJECTS=../../examples/stm32/nucleo-h743zi-cube-freertos-builtin VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=6 + fi + + test_h723: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 3 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-h72.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h723zg-make-baremetal-builtin'; then + make -C examples/stm32/nucleo-h723zg-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-h723zg-make-freertos-builtin'; then + make -C examples/stm32/nucleo-h723zg-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + + test_h5: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 3 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/stm32/nucleo-h5.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/stm32/nucleo-h563zi-make-baremetal-builtin'; then + make -C examples/stm32/nucleo-h563zi-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/stm32/nucleo-h563zi-make-freertos-builtin'; then + make -C examples/stm32/nucleo-h563zi-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + + test_rt1020: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 3 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/nxp/rt1020.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/nxp/rt1020-evk-make-baremetal-builtin'; then + make -C examples/nxp/rt1020-evk-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/nxp/rt1020-evk-make-freertos-builtin'; then + make -C examples/nxp/rt1020-evk-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + + test_rt1060: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 3 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/nxp/rt1060.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/nxp/rt1060-evk-make-baremetal-builtin'; then + make -C examples/nxp/rt1060-evk-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/nxp/rt1060-evk-make-freertos-builtin'; then + make -C examples/nxp/rt1060-evk-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + + test_tm4c: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/ti/ek-tm4c.*-make-" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/ti/ek-tm4c1294xl-make-baremetal-builtin'; then + make -C examples/ti/ek-tm4c1294xl-make-baremetal-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/ti/ek-tm4c1294xl-make-freertos-builtin'; then + make -C examples/ti/ek-tm4c1294xl-make-freertos-builtin test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + + test_same54: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - name: baremetal + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/microchip/same54-xpro" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/microchip/same54-xpro/device-dashboard'; then + make -C examples/microchip/same54-xpro/device-dashboard test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh 'examples/microchip/same54-xpro/mqtt-client'; then + make -C examples/microchip/same54-xpro/mqtt-client test VCON_API_KEY=${{secrets.VCON_API_KEY}} + fi + + test_pico_w5500: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - name: SDK + run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/rp2040/pico-w5500" ; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/rp2040/pico-w5500 test VCON_API_KEY=${{secrets.VCON_API_KEY}} + diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1c22459d..5e1e7a1d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,10 +1,7 @@ -name: build +name: original workflow, updated on: - push: - paths: - - "**Makefile" - - "**.c" - - "**.h" + workflow_dispatch: + env: IPV6: 0 jobs: @@ -149,6 +146,310 @@ jobs: - run: make clean_examples_mac + arduino: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/arduino" ; then + echo GO=1 >> $GITHUB_ENV + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/arduino'; then + make -C examples/arduino arduino-xiao + fi +# - if: ${{ env.GO == 1 }} +# run: | +# if ./test/match_changed_files.sh '^src|examples/arduino'; then +# make -C examples/arduino arduino-nano +# fi + - if: ${{ env.GO == 1 }} + run: make -C examples/arduino clean + + + generic_examples: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: esp32/uart-bridge + - path: esp32/micropython + - path: esp8266/http-client-server + name: ${{ matrix.example.path }} + env: + GO: 0 + 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: | + # nothing specific to install or do + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + + generic_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: microchip/same54-xpro/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: stm32/nucleo-f429zi-make-baremetal-builtin-rndis + - path: stm32/nucleo-f746zg-make-baremetal-builtin-rndis + - path: stm32/nucleo-g031-make-baremetal-builtin + - path: ti/ti-ek-tm4c1294xl-http-server + - path: ti/ek-tm4c1294xl-make-baremetal-builtin-rndis + name: ${{ matrix.example.path }} + env: + GO: 0 + 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 + + device_dashboard_examples: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: esp32/device-dashboard + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + + device_dashboard_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: microchip/same54-xpro/device-dashboard + - path: nxp/rt1020-evk-make-baremetal-builtin + - path: nxp/rt1020-evk-make-freertos-builtin + - path: nxp/rt1060-evk-make-baremetal-builtin + - path: nxp/rt1060-evk-make-freertos-builtin + - 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-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-cmsis_driver + - path: stm32/nucleo-h563zi-make-baremetal-builtin + - path: stm32/nucleo-h563zi-make-freertos-builtin + - path: stm32/nucleo-h723zg-make-freertos-builtin + - path: stm32/nucleo-h743zi-make-baremetal-builtin + - path: stm32/nucleo-h743zi-make-freertos-builtin + - path: stm32/stm32h573i-dk-make-baremetal-builtin + - path: stm32/stm32h573i-dk-make-freertos-builtin + - path: ti/ek-tm4c1294xl-make-baremetal-builtin + - path: ti/ek-tm4c1294xl-make-freertos-builtin + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + +# mqtt_dashboard_examples: +# runs-on: ubuntu-latest +# strategy: +# fail-fast: false +# matrix: +# example: +# - path: +# name: ${{ matrix.example.path }} +# env: +# GO: 0 +# steps: +# - uses: actions/checkout@v3 +# with: { fetch-depth: 2 } +# - run: | +# if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then +# echo GO=1 >> $GITHUB_ENV +# # nothing specific to install or do +# fi +# - if: ${{ env.GO == 1 }} +# run: make -C examples/${{ matrix.example.path }} build + + mqtt_dashboard_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: rp2040/pico-rndis-device + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: make -C examples/${{ matrix.example.path }} build + +# dual_examples: +# runs-on: ubuntu-latest +# strategy: +# fail-fast: false +# matrix: +# example: +# - path: +# name: ${{ matrix.example.path }} +# env: +# GO: 0 +# steps: +# - uses: actions/checkout@v3 +# with: { fetch-depth: 2 } +# - run: | +# if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then +# echo GO=1 >> $GITHUB_ENV +# # nothing specific to install or do +# fi +# - if: ${{ env.GO == 1 }} +# run: | +# if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then +# make -C examples/${{ matrix.example.path }} device_dashboard +# fi +# - if: ${{ env.GO == 1 }} +# run: | +# if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then +# make -C examples/${{ matrix.example.path }} mqtt_dashboard +# fi + + dual_examples_arm: + runs-on: ubuntu-latest + strategy: + fail-fast: false + matrix: + example: + - path: stm32/nucleo-h723zg-make-baremetal-builtin + name: ${{ matrix.example.path }} + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then + echo GO=1 >> $GITHUB_ENV + sudo apt -y update && sudo apt -y install gcc-arm-none-eabi + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then + make -C examples/${{ matrix.example.path }} device_dashboard + fi + - if: ${{ env.GO == 1 }} + run: | + if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then + make -C examples/${{ matrix.example.path }} mqtt_dashboard + fi + + cube_examples: + runs-on: ubuntu-latest + env: + GO: 0 + 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 + # nothing specific to install or do + fi + - if: ${{ env.GO == 1 }} + run: cd test/cube && make + + zephyr_examples: + runs-on: ubuntu-latest + env: + GO: 0 + steps: + - uses: actions/checkout@v3 + with: { fetch-depth: 2 } + - run: | + if ./test/match_changed_files.sh '^src/.*.[ch]|^examples/zephyr'; then + echo GO=1 >> $GITHUB_ENV + 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 + test_f7: runs-on: ubuntu-latest env: @@ -438,218 +739,3 @@ jobs: - if: ${{ env.GO == 1 }} run: make -C examples/rp2040/pico-w5500 test VCON_API_KEY=${{secrets.VCON_API_KEY}} - - arduino: - runs-on: ubuntu-latest - env: - GO: 0 - steps: - - uses: actions/checkout@v3 - with: { fetch-depth: 2 } - - run: | - if ./test/match_changed_files.sh "^src|examples/device-dashboard|examples/arduino" ; then - echo GO=1 >> $GITHUB_ENV - # nothing specific to install or do - fi - - if: ${{ env.GO == 1 }} - run: | - if ./test/match_changed_files.sh '^src|examples/arduino'; then - make -C examples/arduino arduino-xiao - fi -# - if: ${{ env.GO == 1 }} -# run: | -# if ./test/match_changed_files.sh '^src|examples/arduino'; then -# make -C examples/arduino arduino-nano -# fi - - if: ${{ env.GO == 1 }} - run: make -C examples/arduino clean - - - generic_examples: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - example: - - path: esp32/uart-bridge - - path: esp32/micropython - - path: esp8266/http-client-server - - path: microchip/same54-xpro/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: stm32/nucleo-f429zi-make-baremetal-builtin-rndis - - path: stm32/nucleo-f746zg-make-baremetal-builtin-rndis - - path: stm32/nucleo-g031-make-baremetal-builtin - - path: ti/ti-ek-tm4c1294xl-http-server - - path: ti/ek-tm4c1294xl-make-baremetal-builtin-rndis - name: ${{ matrix.example.path }} - env: - GO: 0 - 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 - - device_dashboard_examples: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - example: - - path: esp32/device-dashboard - - path: microchip/same54-xpro/device-dashboard - - path: nxp/rt1020-evk-make-baremetal-builtin - - path: nxp/rt1020-evk-make-freertos-builtin - - path: nxp/rt1060-evk-make-baremetal-builtin - - path: nxp/rt1060-evk-make-freertos-builtin - - 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-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-cmsis_driver - - path: stm32/nucleo-h563zi-make-baremetal-builtin - - path: stm32/nucleo-h563zi-make-freertos-builtin - - path: stm32/nucleo-h723zg-make-freertos-builtin - - path: stm32/nucleo-h743zi-make-baremetal-builtin - - path: stm32/nucleo-h743zi-make-freertos-builtin - - path: stm32/stm32h573i-dk-make-baremetal-builtin - - path: stm32/stm32h573i-dk-make-freertos-builtin - - path: ti/ek-tm4c1294xl-make-baremetal-builtin - - path: ti/ek-tm4c1294xl-make-freertos-builtin - name: ${{ matrix.example.path }} - env: - GO: 0 - steps: - - uses: actions/checkout@v3 - with: { fetch-depth: 2 } - - run: | - if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then - echo GO=1 >> $GITHUB_ENV - sudo apt -y update && sudo apt -y install gcc-arm-none-eabi - fi - - if: ${{ env.GO == 1 }} - run: make -C examples/${{ matrix.example.path }} build - - mqtt_dashboard_examples: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - example: - - path: rp2040/pico-rndis-device - name: ${{ matrix.example.path }} - env: - GO: 0 - steps: - - uses: actions/checkout@v3 - with: { fetch-depth: 2 } - - run: | - if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then - echo GO=1 >> $GITHUB_ENV - sudo apt -y update && sudo apt -y install gcc-arm-none-eabi - fi - - if: ${{ env.GO == 1 }} - run: make -C examples/${{ matrix.example.path }} build - - dual_examples: - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - example: - - path: stm32/nucleo-h723zg-make-baremetal-builtin - name: ${{ matrix.example.path }} - env: - GO: 0 - steps: - - uses: actions/checkout@v3 - with: { fetch-depth: 2 } - - run: | - if ./test/match_changed_files.sh '^src|examples/device-dashboard|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then - echo GO=1 >> $GITHUB_ENV - sudo apt -y update && sudo apt -y install gcc-arm-none-eabi - fi - - if: ${{ env.GO == 1 }} - run: | - if ./test/match_changed_files.sh '^src|examples/device-dashboard|^examples/${{ matrix.example.path }}'; then - make -C examples/${{ matrix.example.path }} device_dashboard - fi - - if: ${{ env.GO == 1 }} - run: | - if ./test/match_changed_files.sh '^src|examples/mqtt-dashboard/device|^examples/${{ matrix.example.path }}'; then - make -C examples/${{ matrix.example.path }} mqtt_dashboard - fi - - cube_examples: - runs-on: ubuntu-latest - env: - GO: 0 - 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 - # nothing specific to install or do - fi - - if: ${{ env.GO == 1 }} - run: cd test/cube && make - - zephyr_examples: - runs-on: ubuntu-latest - env: - GO: 0 - steps: - - uses: actions/checkout@v3 - with: { fetch-depth: 2 } - - run: | - if ./test/match_changed_files.sh '^src/.*.[ch]|^examples/zephyr'; then - echo GO=1 >> $GITHUB_ENV - 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