From f1c1d48a256af4b0f93a3fe93ac0428a3aff151e Mon Sep 17 00:00:00 2001 From: Roman Leonov Date: Tue, 25 Nov 2025 13:11:18 +0100 Subject: [PATCH 1/5] temp disable all current workflows --- ...est_apps.yml => build_and_run_esp_usb_test_apps.yml.disable} | 2 +- ..._idf_examples.yml => build_and_run_idf_examples.yml.disable} | 0 .../{build_iot_examples.yml => build_iot_examples.yml.disable} | 0 3 files changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{build_and_run_esp_usb_test_apps.yml => build_and_run_esp_usb_test_apps.yml.disable} (99%) rename .github/workflows/{build_and_run_idf_examples.yml => build_and_run_idf_examples.yml.disable} (100%) rename .github/workflows/{build_iot_examples.yml => build_iot_examples.yml.disable} (100%) diff --git a/.github/workflows/build_and_run_esp_usb_test_apps.yml b/.github/workflows/build_and_run_esp_usb_test_apps.yml.disable similarity index 99% rename from .github/workflows/build_and_run_esp_usb_test_apps.yml rename to .github/workflows/build_and_run_esp_usb_test_apps.yml.disable index ee82f26aa7..7ddce247e7 100644 --- a/.github/workflows/build_and_run_esp_usb_test_apps.yml +++ b/.github/workflows/build_and_run_esp_usb_test_apps.yml.disable @@ -2,7 +2,7 @@ # It checks out the latest code from ESP-USB master, builds test apps using Espressif's IDF, # uploads artifacts, and runs tests on self-hosted runners for supported targets. -name: ESP-USB Test Apps [master] +name: ESP-USB Device Test Apps [master] on: pull_request: diff --git a/.github/workflows/build_and_run_idf_examples.yml b/.github/workflows/build_and_run_idf_examples.yml.disable similarity index 100% rename from .github/workflows/build_and_run_idf_examples.yml rename to .github/workflows/build_and_run_idf_examples.yml.disable diff --git a/.github/workflows/build_iot_examples.yml b/.github/workflows/build_iot_examples.yml.disable similarity index 100% rename from .github/workflows/build_iot_examples.yml rename to .github/workflows/build_iot_examples.yml.disable From 2d56bae68c561078a11dfad0e34d545230ba07c4 Mon Sep 17 00:00:00 2001 From: Roman Leonov Date: Tue, 25 Nov 2025 13:11:43 +0100 Subject: [PATCH 2/5] added the usb_host test apps workflow --- .github/workflows/build_and_run_esp_usb_host_test_apps.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 .github/workflows/build_and_run_esp_usb_host_test_apps.yml diff --git a/.github/workflows/build_and_run_esp_usb_host_test_apps.yml b/.github/workflows/build_and_run_esp_usb_host_test_apps.yml new file mode 100644 index 0000000000..e69de29bb2 From d9696d5bec65458978c8f45d301b240e9610e644 Mon Sep 17 00:00:00 2001 From: Roman Leonov Date: Tue, 25 Nov 2025 13:18:33 +0100 Subject: [PATCH 3/5] added the build for latest, upload artifacts --- .../build_and_run_esp_usb_host_test_apps.yml | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/.github/workflows/build_and_run_esp_usb_host_test_apps.yml b/.github/workflows/build_and_run_esp_usb_host_test_apps.yml index e69de29bb2..54b7aa19c8 100644 --- a/.github/workflows/build_and_run_esp_usb_host_test_apps.yml +++ b/.github/workflows/build_and_run_esp_usb_host_test_apps.yml @@ -0,0 +1,61 @@ +# This workflow builds and runs ESP-USB Host test applications for pull requests. +# It checks out the latest code from ESP-USB master, builds the USB Host Library and Classes test applications using Espressif's IDF, +# uploads artifacts, and runs tests on self-hosted runners for supported targets. + +name: ESP-USB Host Test Apps + +on: + pull_request: + types: [opened, reopened, synchronize] + +jobs: + build: + name: Build + strategy: + fail-fast: false + matrix: + # TODO: increase the coverage, for now - latest only + idf_ver: ["latest"] + runs-on: ubuntu-latest + container: espressif/idf:${{ matrix.idf_ver }} + env: + IDF_COMP_MAN_VER: "2.4.3" + IDF_BUILD_APPS_VER: "2.13.3" + # We are cloning esp-usb repo to get the test apps to build, the paths should be configured explicitly + ESP_USB_PATH: esp-usb + ESP_USB_CONFIG_FILE: esp-usb/.idf_build_apps.toml + ESP_USB_MANIFEST: esp-usb/.build-test-rules.yml + ESP_USB_IGNORE_WARNING_FILE: esp-usb/.ignore_build_warnings.txt + ESP_HOST_TEST_APPS: esp-usb/host + steps: + - uses: actions/checkout@v4 + with: + submodules: 'true' + - name: Clone esp-usb repository + run: | + git clone https://github.com/espressif/esp-usb.git + - name: Build + shell: bash + run: | + . ${IDF_PATH}/export.sh + pip install --no-cache-dir idf-component-manager>=${{ env.IDF_COMP_MAN_VER }} idf-build-apps==${{ env.IDF_BUILD_APPS_VER }} pyyaml --upgrade + export PEDANTIC_FLAGS="-DIDF_CI_BUILD -Werror -Werror=deprecated-declarations -Werror=unused-variable -Werror=unused-but-set-variable -Werror=unused-function" + export EXTRA_CFLAGS="${PEDANTIC_FLAGS} -Wstrict-prototypes" + export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" + export ENV_VAR_USB_COMP_MANAGED=yes + + python .github/ci/override_managed_component.py tinyusb . ${{ env.ESP_HOST_TEST_APPS }}/*/ + idf-build-apps find --config-file ${{ env.ESP_USB_CONFIG_FILE }} -p ${{ env.ESP_HOST_TEST_APPS }} -t all --manifest-files ${{ env.ESP_USB_MANIFEST }} --manifest-rootpath ${{ env.ESP_USB_PATH }} + idf-build-apps build --config-file ${{ env.ESP_USB_CONFIG_FILE }} -p ${{ env.ESP_HOST_TEST_APPS }} -t all --manifest-files ${{ env.ESP_USB_MANIFEST }} --manifest-rootpath ${{ env.ESP_USB_PATH }} --ignore-warning-files ${{ env.ESP_USB_IGNORE_WARNING_FILE }} + - uses: actions/upload-artifact@v4 + with: + # Test apps builds live under the repository workspace, we use workspace-relative glob + name: usb_host_test_app_bin_${{ matrix.idf_ver }} + path: | + **/build_esp*/bootloader/bootloader.bin + **/build_esp*/partition_table/partition-table.bin + **/build_esp*/test_app_*.bin + **/build_esp*/test_app_*.elf + **/build_esp*/flasher_args.json + **/build_esp*/config/sdkconfig.json + if-no-files-found: error From 0d605e9d9ff9d809e59615531f7974ec6e246eda Mon Sep 17 00:00:00 2001 From: Roman Leonov Date: Tue, 25 Nov 2025 13:41:33 +0100 Subject: [PATCH 4/5] fixed the path to the host folder to override componnetns --- .github/workflows/build_and_run_esp_usb_host_test_apps.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build_and_run_esp_usb_host_test_apps.yml b/.github/workflows/build_and_run_esp_usb_host_test_apps.yml index 54b7aa19c8..adf710530b 100644 --- a/.github/workflows/build_and_run_esp_usb_host_test_apps.yml +++ b/.github/workflows/build_and_run_esp_usb_host_test_apps.yml @@ -44,7 +44,7 @@ jobs: export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" export ENV_VAR_USB_COMP_MANAGED=yes - python .github/ci/override_managed_component.py tinyusb . ${{ env.ESP_HOST_TEST_APPS }}/*/ + python .github/ci/override_managed_component.py tinyusb . ${{ env.ESP_HOST_TEST_APPS }}/* idf-build-apps find --config-file ${{ env.ESP_USB_CONFIG_FILE }} -p ${{ env.ESP_HOST_TEST_APPS }} -t all --manifest-files ${{ env.ESP_USB_MANIFEST }} --manifest-rootpath ${{ env.ESP_USB_PATH }} idf-build-apps build --config-file ${{ env.ESP_USB_CONFIG_FILE }} -p ${{ env.ESP_HOST_TEST_APPS }} -t all --manifest-files ${{ env.ESP_USB_MANIFEST }} --manifest-rootpath ${{ env.ESP_USB_PATH }} --ignore-warning-files ${{ env.ESP_USB_IGNORE_WARNING_FILE }} - uses: actions/upload-artifact@v4 From 06a3ce48ef2262d0f63d7a8ea4e3cbf4a83cf9cd Mon Sep 17 00:00:00 2001 From: Roman Leonov Date: Tue, 25 Nov 2025 14:12:06 +0100 Subject: [PATCH 5/5] added the path pattern to search the test_app in classes --- .../build_and_run_esp_usb_host_test_apps.yml | 23 +++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build_and_run_esp_usb_host_test_apps.yml b/.github/workflows/build_and_run_esp_usb_host_test_apps.yml index adf710530b..8adce2f923 100644 --- a/.github/workflows/build_and_run_esp_usb_host_test_apps.yml +++ b/.github/workflows/build_and_run_esp_usb_host_test_apps.yml @@ -26,7 +26,7 @@ jobs: ESP_USB_CONFIG_FILE: esp-usb/.idf_build_apps.toml ESP_USB_MANIFEST: esp-usb/.build-test-rules.yml ESP_USB_IGNORE_WARNING_FILE: esp-usb/.ignore_build_warnings.txt - ESP_HOST_TEST_APPS: esp-usb/host + ESP_HOST_CLASS_TEST_APP_PATH: esp-usb/host/class/*/*/test_app steps: - uses: actions/checkout@v4 with: @@ -44,9 +44,24 @@ jobs: export EXTRA_CXXFLAGS="${PEDANTIC_FLAGS}" export ENV_VAR_USB_COMP_MANAGED=yes - python .github/ci/override_managed_component.py tinyusb . ${{ env.ESP_HOST_TEST_APPS }}/* - idf-build-apps find --config-file ${{ env.ESP_USB_CONFIG_FILE }} -p ${{ env.ESP_HOST_TEST_APPS }} -t all --manifest-files ${{ env.ESP_USB_MANIFEST }} --manifest-rootpath ${{ env.ESP_USB_PATH }} - idf-build-apps build --config-file ${{ env.ESP_USB_CONFIG_FILE }} -p ${{ env.ESP_HOST_TEST_APPS }} -t all --manifest-files ${{ env.ESP_USB_MANIFEST }} --manifest-rootpath ${{ env.ESP_USB_PATH }} --ignore-warning-files ${{ env.ESP_USB_IGNORE_WARNING_FILE }} + python .github/ci/override_managed_component.py tinyusb . ${{ env.ESP_HOST_CLASS_TEST_APP_PATH }} + + idf-build-apps find \ + --config-file ${{ env.ESP_USB_CONFIG_FILE }} \ + -p ${{ env.ESP_HOST_CLASS_TEST_APP_PATH }} \ + -t all \ + --manifest-files ${{ env.ESP_USB_MANIFEST }} \ + --manifest-rootpath ${{ env.ESP_USB_PATH }} \ + --disable-targets linux + + idf-build-apps build \ + --config-file ${{ env.ESP_USB_CONFIG_FILE }} \ + -p ${{ env.ESP_HOST_CLASS_TEST_APP_PATH }} \ + -t all \ + --manifest-files ${{ env.ESP_USB_MANIFEST }} \ + --manifest-rootpath ${{ env.ESP_USB_PATH }} \ + --ignore-warning-files ${{ env.ESP_USB_IGNORE_WARNING_FILE }} \ + --disable-targets linux - uses: actions/upload-artifact@v4 with: # Test apps builds live under the repository workspace, we use workspace-relative glob