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, OPENSSL] 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 env: { 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 upload-coverage TFLAGS=-DNO_SNTP_CHECK SSL=OPENSSL ASAN_OPTIONS= OPENSSL=`echo /usr/local/Cellar/openssl*/*` - if: ${{ env.GO == 1 }} run: make test SSL=MBEDTLS TFLAGS=-DNO_SNTP_CHECK ASAN_OPTIONS= MBEDTLS=`echo /usr/local/Cellar/mbedtls*/*` - if: ${{ env.GO == 1 }} run: make mg_prefix windows: 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: make vc98 vc17 vc22 mingw mingw++ arduino-xiao: 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 arduino-xiao 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 clean examples - run: make clean test MG_ENABLE_POLL=1 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" ; 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-freertos test VCON_API_KEY=${{secrets.VCON_API_KEY}} - if: ${{ env.GO == 1 }} run: make -C examples/stm32/nucleo-f746zg-freertos-tcp test VCON_API_KEY=${{secrets.VCON_API_KEY}} - run: echo GO=0 >> $GITHUB_ENV ; if ./test/match_changed_files.sh '^src|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 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 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" ; 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-freertos test VCON_API_KEY=${{secrets.VCON_API_KEY}} - run: echo GO=0 >> $GITHUB_ENV ; if ./test/match_changed_files.sh '^src|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 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 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" ; 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}} - run: echo GO=0 >> $GITHUB_ENV ; if ./test/match_changed_files.sh '^src|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 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 VCON_API_KEY=${{secrets.VCON_API_KEY}} DEVICE=6 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 - run: echo GO=0 > $GITHUB_ENV ; if ./test/match_changed_files.sh "^src|examples/ti/ek-tm4c1294xl-baremetal" ; then echo GO=1 > $GITHUB_ENV ; fi - if: ${{ env.GO == 1 }} run: make -C examples/ti/ek-tm4c1294xl-baremetal test VCON_API_KEY=${{secrets.VCON_API_KEY}} - run: echo GO=0 > $GITHUB_ENV ; if ./test/match_changed_files.sh "^src|examples/ti/ek-tm4c1294xl-freertos" ; then echo GO=1 > $GITHUB_ENV ; fi - if: ${{ env.GO == 1 }} run: make -C examples/ti/ek-tm4c1294xl-freertos 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}} 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: stm32/nucleo-f429zi-make-baremetal-builtin - path: stm32/nucleo-f429zi-freertos - path: stm32/nucleo-f429zi-rndis - path: stm32/nucleo-f746zg-make-baremetal-builtin - path: stm32/nucleo-f746zg-freertos - path: stm32/nucleo-f746zg-freertos-tcp - path: stm32/nucleo-f746zg-rndis - path: stm32/nucleo-h743zi-make-baremetal-builtin - 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: infineon/infineon-xmc4700_4800-lwip-rtx-rtos - path: ti/ti-ek-tm4c1294xl-http-server - path: ti/ek-tm4c1294xl-baremetal - path: ti/ek-tm4c1294xl-freertos - path: rp2040/pico-rmii - path: rp2040/pico-rndis-dashboard - path: rp2040/pico-w - path: rp2040/pico-w5500 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