99 strategy :
1010 matrix :
1111 idf_ver : ["release-v5.1", "release-v5.2", "release-v5.3", "release-v5.4", "release-v5.5", "latest"]
12- fail-fast : false
1312 runs-on : ubuntu-latest
1413 container : espressif/idf:${{ matrix.idf_ver }}
14+ env :
15+ IDF_COMP_MAN_VER : " 2.4.3"
16+ IDF_BUILD_APPS_VER : " 2.13.1"
17+ CONFIG_PATH : ${{ github.workspace }}/.github/ci/.build_and_run_idf_examples_config.toml
1518 steps :
1619 - uses : actions/checkout@v4
1720 - name : Install Python dependencies
1821 shell : bash
1922 run : |
2023 . ${IDF_PATH}/export.sh
21- pip install --no-cache-dir idf-component-manager>=2.1.2 idf-build-apps==2.4.3 pyyaml --upgrade
24+ pip install --no-cache-dir idf-component-manager>=${{ env.IDF_COMP_MAN_VER }} idf-build-apps==${{ env.IDF_BUILD_APPS_VER }} pyyaml --upgrade
2225 - name : Build Network USB related examples
2326 shell : bash
2427 run : |
2528 . ${IDF_PATH}/export.sh
29+ # Hint: To build network example we just use default config and network build rules provided by IDF
2630 export EXAMPLES_PATH="${IDF_PATH}/examples/network/sta2eth"
2731 export MANIFEST_FILE="${IDF_PATH}/examples/network/.build-test-rules.yml"
28- idf-build-apps find --path ${EXAMPLES_PATH}/ --target esp32s2 --manifest-file ${MANIFEST_FILE}
29- idf-build-apps build --path ${EXAMPLES_PATH}/ --target esp32s2 --manifest-file ${MANIFEST_FILE}
32+ python .github/ci/override_managed_component.py tinyusb . ${EXAMPLES_PATH}
33+ idf-build-apps find -p ${EXAMPLES_PATH} -t esp32s2 --manifest-files ${MANIFEST_FILE} --manifest-rootpath ${IDF_PATH}
34+ idf-build-apps build -p ${EXAMPLES_PATH} -t esp32s2 --manifest-files ${MANIFEST_FILE} --manifest-rootpath ${IDF_PATH}
3035 - name : Build USB Device examples
3136 shell : bash
3237 run : |
3338 . ${IDF_PATH}/export.sh
34- export EXAMPLES_PATH="${IDF_PATH}/examples/peripherals/usb/device"
35- export MANIFEST_FILE="${IDF_PATH}/examples/peripherals/.build-test-rules.yml"
36- python .github/ci/override_managed_component.py tinyusb . ${EXAMPLES_PATH}/tusb_*
37- idf-build-apps find --path ${EXAMPLES_PATH}/ --recursive --target esp32s2 --manifest-file ${MANIFEST_FILE}
38- idf-build-apps build --path ${EXAMPLES_PATH}/ --recursive --target esp32s2 --manifest-file ${MANIFEST_FILE}
39+ python .github/ci/override_managed_component.py tinyusb . ${IDF_PATH}/examples/peripherals/usb/device/tusb_*
40+ idf-build-apps find --config-file ${CONFIG_PATH} --manifest-rootpath ${IDF_PATH}
41+ idf-build-apps build --config-file ${CONFIG_PATH} --manifest-rootpath ${IDF_PATH}
3942 - uses : actions/upload-artifact@v4
43+ env :
44+ IDF_ROOT : " /opt/esp/idf"
4045 with :
4146 # We upload only the USB Device example binaries to run them on the target
42- name : usb_device_tusb_apps_bin_ ${{ matrix.idf_ver }}
47+ name : usb_device_examples_bin_ ${{ matrix.idf_ver }}
4348 path : |
44- /opt/esp/idf/examples/peripherals/usb/device/tusb_*/build /bootloader/bootloader.bin
45- /opt/esp/idf/examples/peripherals/usb/device/tusb_*/build /partition_table/partition-table.bin
46- /opt/esp/idf/examples/peripherals/usb/device/tusb_*/build /tusb_*.bin
47- /opt/esp/idf/examples/peripherals/usb/device/tusb_*/build /tusb_*.elf
48- /opt/esp/idf/examples/peripherals/usb/device/tusb_*/build /flasher_args.json
49- /opt/esp/idf/examples/peripherals/usb/device/tusb_*/build /config/sdkconfig.json
49+ ${{ env.IDF_ROOT }}/**/build_esp* /bootloader/bootloader.bin
50+ ${{ env.IDF_ROOT }}/**/build_esp* /partition_table/partition-table.bin
51+ ${{ env.IDF_ROOT }}/**/build_esp* /tusb_*.bin
52+ ${{ env.IDF_ROOT }}/**/build_esp* /tusb_*.elf
53+ ${{ env.IDF_ROOT }}/**/build_esp* /flasher_args.json
54+ ${{ env.IDF_ROOT }}/**/build_esp* /config/sdkconfig.json
5055 if-no-files-found : error
5156 run-target :
52- name : Run USB Device examples
57+ name : Run
5358 if : ${{ github.repository_owner == 'espressif' }}
5459 needs : build
5560 strategy :
56- fail-fast : false
5761 matrix :
5862 idf_ver : ["release-v5.3", "release-v5.4", "release-v5.5" , "latest"]
5963 idf_target : ["esp32s2"]
6266 container :
6367 image : espressif/idf:${{ matrix.idf_ver }}
6468 options : --privileged --device-cgroup-rule="c 188:* rmw" --device-cgroup-rule="c 166:* rmw"
69+ env :
70+ IDF_ROOT : " /opt/esp/idf"
6571 steps :
6672 - name : ⚙️ Install System tools
6773 run : |
@@ -75,12 +81,13 @@ jobs:
7581 . ./export.sh
7682 pip install --no-cache-dir --only-binary cryptography pytest-embedded pytest-embedded-serial-esp pytest-embedded-jtag pytest-embedded-idf pyserial pyusb python-gitlab minio idf-build-apps idf_ci pytest_ignore_test_results pytest-timeout netifaces
7783 - uses : actions/download-artifact@v4
84+ env :
85+ IDF_ROOT : " /opt/esp/idf"
7886 with :
79- name : usb_device_tusb_apps_bin_ ${{ matrix.idf_ver }}
80- path : /opt/esp/idf/examples/peripherals/usb/device
81- - name : Run USB Test App on target
87+ name : usb_device_examples_bin_ ${{ matrix.idf_ver }}
88+ path : ${{ env.IDF_ROOT }}
89+ - name : Run on target
8290 run : |
8391 cd ${IDF_PATH}
8492 . ./export.sh
85- export EXAMPLES_PATH="${IDF_PATH}/examples/peripherals/usb/device"
86- pytest ${EXAMPLES_PATH} --target ${{ matrix.idf_target }} -m ${{ matrix.runner_tag }} --ignore-result-cases=*ncm_example
93+ pytest --target ${{ matrix.idf_target }} -m ${{ matrix.runner_tag }} --ignore-result-cases=*ncm_example --build-dir=build_${{ matrix.idf_target }}
0 commit comments