name: "esp-modem: build/host-tests" on: push: branches: - master pull_request: types: [opened, synchronize, reopened, labeled] jobs: build_esp_modem: if: contains(github.event.pull_request.labels.*.name, 'modem') name: Build strategy: matrix: idf_ver: ["latest", "release-v4.2", "release-v4.3", "release-v4.4", "release-v5.0"] example: ["pppos_client", "modem_console", "ap_to_pppos", "simple_cmux_client"] exclude: - idf_ver: "release-v4.2" example: simple_cmux_client include: - idf_ver: "release-v4.2" skip_config: usb - idf_ver: "release-v4.3" skip_config: usb - idf_ver: "release-v5.0" example: "simple_cmux_client" warning: "Warning: The smallest app partition is nearly full" runs-on: ubuntu-20.04 container: espressif/idf:${{ matrix.idf_ver }} steps: - name: Checkout esp-protocols uses: actions/checkout@v3 with: path: protocols - if: ${{ matrix.skip_config }} run: rm -f $GITHUB_WORKSPACE/protocols/components/esp_modem/examples/${{ matrix.example }}/sdkconfig.ci.${{ matrix.skip_config }}* - name: Build ${{ matrix.example }} with IDF-${{ matrix.idf_ver }} env: EXPECTED_WARNING: ${{ matrix.warning }} shell: bash run: | . ${IDF_PATH}/export.sh python -m pip install idf-build-apps cd $GITHUB_WORKSPACE/protocols python ./ci/build_apps.py components/esp_modem/examples/${{ matrix.example }} host_test_esp_modem: if: contains(github.event.pull_request.labels.*.name, 'modem') name: Host Tests runs-on: ubuntu-20.04 container: espressif/idf:release-v4.3 env: lwip: lwip-2.1.2 lwip_contrib: contrib-2.1.0 lwip_uri: http://download.savannah.nongnu.org/releases/lwip COMP_DIR: esp-protocols/components/esp_modem steps: - name: Checkout esp-protocols uses: actions/checkout@master with: path: esp-protocols - name: Build and Test shell: bash run: | apt-get update && apt-get install -y gcc-8 g++-8 update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 export LWIP_PATH=`pwd`/${{ env.lwip }} export LWIP_CONTRIB_PATH=`pwd`/${{ env.lwip_contrib }} . ${IDF_PATH}/export.sh $GITHUB_WORKSPACE/${{ env.COMP_DIR }}/test/host_test/env.sh $lwip $lwip_uri $lwip_contrib cd $GITHUB_WORKSPACE/esp-protocols/components/esp_modem/examples/linux_modem idf.py build cd $GITHUB_WORKSPACE/esp-protocols/components/esp_modem/test/host_test idf.py build ./build/host_modem_test.elf -r junit -o junit.xml - name: Publish Results uses: EnricoMi/publish-unit-test-result-action@v1 if: always() with: files: esp-protocols/components/esp_modem/test/host_test/junit.xml host_test_gcov_esp_modem: if: contains(github.event.pull_request.labels.*.name, 'modem') name: Run gcovr on esp modem host test runs-on: ubuntu-22.04 container: espressif/idf:release-v4.3 env: lwip: lwip-2.1.2 lwip_contrib: contrib-2.1.0 lwip_uri: http://download.savannah.nongnu.org/releases/lwip COMP_DIR: esp-protocols/components/esp_modem steps: - name: Checkout esp-protocols uses: actions/checkout@v3 with: path: esp-protocols persist-credentials: false - name: Build and Test shell: bash run: | apt-get update apt-get update && apt-get install -y gcc-8 g++-8 python3-pip apt-get install -y rsync update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8 export DEBIAN_FRONTEND=noninteractive export LWIP_PATH=`pwd`/${{ env.lwip }} export LWIP_CONTRIB_PATH=`pwd`/${{ env.lwip_contrib }} . ${IDF_PATH}/export.sh ${{ env.COMP_DIR }}/test/host_test/env.sh $lwip $lwip_uri $lwip_contrib cd $GITHUB_WORKSPACE/${{ env.COMP_DIR }}/test/host_test cat sdkconfig.ci.coverage >> sdkconfig.defaults idf.py build ./build/host_modem_test.elf - name: Run gcovr shell: bash run: | python -m pip install gcovr cd $GITHUB_WORKSPACE/${{ env.COMP_DIR }} gcov-8 `find . -name "esp_modem*gcda" -printf '%h\n' | head -n 1`/* gcovr --gcov-ignore-parse-errors -g -k -r . --html index.html -x esp_modem_coverage.xml mkdir docs_gcovr cp $GITHUB_WORKSPACE/${{ env.COMP_DIR }}/index.html docs_gcovr touch docs_gcovr/.nojekyll - name: Code Coverage Summary Report uses: irongut/CodeCoverageSummary@v1.3.0 with: filename: esp-protocols/**/esp_modem_coverage.xml badge: true fail_below_min: false format: markdown hide_branch_rate: false hide_complexity: false indicators: true output: both thresholds: '60 80' - name: Write to Job Summary run: cat code-coverage-results.md >> $GITHUB_STEP_SUMMARY - name: Upload artifacts uses: actions/upload-artifact@v3 if: always() with: name: docs_gcovr path: | ${{ env.COMP_DIR }}/docs_gcovr if-no-files-found: error # show_report_data: # name: Publish-Results # if: github.ref == 'refs/heads/master' || github.repository != 'espressif/esp-protocols' # runs-on: ubuntu-22.04 # needs: gcovr_analyzer_esp_modem # steps: # - name: Checkout 🛎️ # uses: actions/checkout@v3 # with: # persist-credentials: false # - name: Download Artifacts # uses: actions/download-artifact@v1 # with: # name: docs_gcovr # # - name: Deploy generated docs # uses: JamesIves/github-pages-deploy-action@v4 # with: # branch: gh-pages # folder: 'docs_gcovr'