Repository navigation
feat(m5stack-tab5): optional audio playback / recording and DPI DMA2D #2573
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Build | |
| on: | |
| pull_request: | |
| branches: [main] | |
| # ready_for_review is included so that marking a draft PR "Ready for | |
| # review" triggers a build (the draft guard below skips draft PRs); | |
| # it is not in GitHub's default set (opened/synchronize/reopened). | |
| types: [opened, synchronize, reopened, ready_for_review] | |
| paths: | |
| - 'components/**' | |
| - 'external/**' | |
| - '.github/workflows/build.yml' | |
| - '!**/idf_component.yml' | |
| - '!**/README.md' | |
| # Non-build content inside components never affects the ESP example | |
| # builds: hosted web apps (docs pipeline), interop harnesses (their own | |
| # workflows), host-side python packages, host-only unit tests, and | |
| # markdown docs. Skip the full build matrix when a change touches only | |
| # these. (paths negations: last match wins, so these come after the | |
| # components/** include.) | |
| - '!components/*/web/**' | |
| - '!components/*/interop/**' | |
| - '!components/*/python/**' | |
| - '!components/*/test/**' | |
| - '!components/**/*.md' | |
| # Least-privilege default: these jobs only check out the repo and build/upload | |
| # artifacts, so read-only access to repository contents is sufficient. | |
| permissions: | |
| contents: read | |
| # Supersede in-progress runs: a new commit on the same PR cancels the earlier, | |
| # now-stale build. Keyed by the workflow (so it never cross-cancels other | |
| # workflows) + the PR number, which is globally unique - unlike the head branch | |
| # name, two fork PRs can't collide on it. For non-PR events (push, release) we | |
| # fall back to github.run_id, which is unique per run, so those runs each get | |
| # their own group and never serialize or cancel each other. | |
| # cancel-in-progress is gated to pull_request events only so that push-to-main | |
| # runs are never cancelled. | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.run_id }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| build: | |
| # Skip build CI for draft PRs; still runs on push-to-main and non-draft PRs. | |
| if: github.event_name != 'pull_request' || github.event.pull_request.draft == false | |
| runs-on: ubuntu-latest | |
| continue-on-error: true | |
| strategy: | |
| matrix: | |
| test: | |
| - path: 'components/adc/example' | |
| target: esp32 | |
| - path: 'components/adc/example' | |
| target: esp32s3 | |
| - path: 'components/adc/example' | |
| target: esp32p4 | |
| - path: 'components/adc/example' | |
| target: esp32c6 | |
| - path: 'components/adrc/example' | |
| target: esp32 | |
| - path: 'components/ads1x15/example' | |
| target: esp32 | |
| - path: 'components/ads7138/example' | |
| target: esp32s3 | |
| - path: 'components/adxl345/example' | |
| target: esp32s3 | |
| - path: 'components/as5600/example' | |
| target: esp32s3 | |
| - path: 'components/at581x/example' | |
| target: esp32s3 | |
| - path: 'components/aw9523/example' | |
| target: esp32 | |
| - path: 'components/basicmicro/example' | |
| target: esp32 | |
| - path: 'components/mcp266/example' | |
| target: esp32 | |
| - path: 'components/mcp266/webapp_example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/bdc_driver/example' | |
| target: esp32s3 | |
| - path: 'components/binary-log/example' | |
| target: esp32s3 | |
| - path: 'components/bldc_current_sense/example' | |
| target: esp32s3 | |
| - path: 'components/bldc_haptics/example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/bldc_motor/example' | |
| target: esp32s3 | |
| - path: 'components/ble_gatt_server/example' | |
| target: esp32s3 | |
| - path: 'components/bm8563/example' | |
| target: esp32 | |
| - path: 'components/bmi270/example' | |
| target: esp32p4 | |
| - path: 'components/bno055/example' | |
| target: esp32p4 | |
| - path: 'components/bq27220/example' | |
| target: esp32 | |
| - path: 'components/button/example' | |
| target: esp32 | |
| - path: 'components/byte90/example' | |
| target: esp32s3 | |
| - path: 'components/canopen/can_bridge_example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/canopen/can_bridge_example' | |
| target: esp32s3 | |
| command: >- | |
| IDF_COMPONENT_MANAGER=0 idf.py | |
| -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.defaults.simulated" build | |
| - path: 'components/canopen/example' | |
| target: esp32 | |
| - path: 'components/chsc6x/example' | |
| target: esp32s3 | |
| - path: 'components/cdr/example' | |
| target: esp32 | |
| - path: 'components/cli/example' | |
| target: esp32 | |
| - path: 'components/cobs/example' | |
| target: esp32s3 | |
| - path: 'components/color/example' | |
| target: esp32 | |
| - path: 'components/controller/example' | |
| target: esp32s3 | |
| - path: 'components/coredump/example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/cst816/example' | |
| target: esp32s3 | |
| - path: 'components/csv/example' | |
| target: esp32 | |
| - path: 'components/desktop/example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/dispatcher/example' | |
| target: esp32 | |
| - path: 'components/display_drivers/example' | |
| target: esp32 | |
| - path: 'components/dns_server/example' | |
| target: esp32s3 | |
| - path: 'components/drv2605/example' | |
| target: esp32 | |
| - path: 'components/encoder/example' | |
| target: esp32 | |
| - path: 'components/esp32-p4-eth/example' | |
| target: esp32p4 | |
| - path: 'components/esp32-p4-function-ev-board/example' | |
| target: esp32p4 | |
| - path: 'components/esp32-p4-module-dev-kit/example' | |
| target: esp32p4 | |
| - path: 'components/esp32-p4-nano/example' | |
| target: esp32p4 | |
| - path: 'components/esp32-p4-wifi6-dev-kit/example' | |
| target: esp32p4 | |
| - path: 'components/esp32-p4-wifi6-poe-eth/example' | |
| target: esp32p4 | |
| - path: 'components/esp32-timer-cam/example' | |
| target: esp32 | |
| - path: 'components/esp-box/example' | |
| target: esp32s3 | |
| - path: 'components/ethernet/example' | |
| target: esp32 | |
| - path: 'components/event_manager/example' | |
| target: esp32 | |
| - path: 'components/expressive_eyes/example' | |
| target: esp32s3 | |
| - path: 'components/file_system/example' | |
| target: esp32 | |
| - path: 'components/filters/example' | |
| target: esp32 | |
| - path: 'components/ftp/example' | |
| target: esp32 | |
| - path: 'components/ft5x06/example' | |
| target: esp32s3 | |
| - path: 'components/gfps_service/example' | |
| target: esp32s3 | |
| - path: 'components/gps/example' | |
| target: esp32s3 | |
| - path: 'components/gt911/example' | |
| target: esp32s3 | |
| - path: 'components/hid-rp/example' | |
| target: esp32s3 | |
| - path: 'components/hid_service/example' | |
| target: esp32s3 | |
| # build variants of the i2c example for the different configurations to | |
| # ensure they're all built and tested | |
| - path: 'components/i2c/example' | |
| target: esp32 | |
| command: idf.py -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.defaults.legacy_api" build | |
| - path: 'components/i2c/example' | |
| target: esp32 | |
| command: idf.py -DSDKCONFIG_DEFAULTS="sdkconfig.defaults;sdkconfig.defaults.new_api" build | |
| - path: 'components/icm20948/example' | |
| target: esp32s3 | |
| - path: 'components/icm42607/example' | |
| target: esp32s3 | |
| - path: 'components/ina226/example' | |
| target: esp32p4 | |
| - path: 'components/interrupt/example' | |
| target: esp32s3 | |
| - path: 'components/iperf_menu/example' | |
| target: esp32s3 | |
| - path: 'components/joystick/example' | |
| target: esp32 | |
| - path: 'components/kts1622/example' | |
| target: esp32 | |
| - path: 'components/led/example' | |
| target: esp32 | |
| - path: 'components/led_strip/example' | |
| target: esp32 | |
| - path: 'components/lilygo-t5-47/example' | |
| target: esp32s3 | |
| - path: 'components/logger/example' | |
| target: esp32 | |
| - path: 'components/lp5817/example' | |
| target: esp32 | |
| - path: 'components/lsm6dso/example' | |
| target: esp32s3 | |
| - path: 'components/m5stack-cardputer/example' | |
| target: esp32s3 | |
| - path: 'components/m5stack-tab5/example' | |
| target: esp32p4 | |
| - path: 'components/math/example' | |
| target: esp32 | |
| - path: 'components/matouch-rotary-display/example' | |
| target: esp32s3 | |
| - path: 'components/max1704x/example' | |
| target: esp32 | |
| - path: 'components/monitor/example' | |
| target: esp32 | |
| - path: 'components/motorgo-axis/example' | |
| target: esp32s3 | |
| - path: 'components/motorgo-mini/example' | |
| target: esp32s3 | |
| - path: 'components/motorgo-plink/example' | |
| target: esp32s3 | |
| - path: 'components/mcp23x17/example' | |
| target: esp32s3 | |
| - path: 'components/meshtastic/example' | |
| target: esp32s3 | |
| - path: 'components/mt6701/example' | |
| target: esp32s3 | |
| - path: 'components/neopixel/example' | |
| target: esp32s3 | |
| - path: 'components/nvs/example' | |
| target: esp32s3 | |
| - path: 'components/persistent_data/example' | |
| target: esp32s3 | |
| - path: 'components/odrive_ascii/example' | |
| target: esp32 | |
| - path: 'components/odrive_native/example' | |
| target: esp32 | |
| - path: 'components/odrive_native/usb_example' | |
| target: esp32s3 | |
| - path: 'components/ota/example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/pca9535/example' | |
| target: esp32s3 | |
| - path: 'components/pcf85063/example' | |
| target: esp32s3 | |
| - path: 'components/pi4ioe5v/example' | |
| target: esp32 | |
| - path: 'components/pid/example' | |
| target: esp32 | |
| - path: 'components/ping/example' | |
| target: esp32s3 | |
| - path: 'components/provisioning/example' | |
| target: esp32s3 | |
| - path: 'components/qmi8658/example' | |
| target: esp32s3 | |
| - path: 'components/qtpy/example' | |
| target: esp32 | |
| - path: 'components/qtpy/example' | |
| target: esp32s3 | |
| - path: 'components/qwiicnes/example' | |
| target: esp32 | |
| - path: 'components/remote_debug/example' | |
| target: esp32s3 | |
| - path: 'components/rmt/example' | |
| target: esp32s3 | |
| - path: 'components/rtps/example' | |
| target: esp32 | |
| - path: 'components/rtsp/example' | |
| target: esp32 | |
| - path: 'components/runqueue/example' | |
| target: esp32 | |
| - path: 'components/rx8130ce/example' | |
| target: esp32s3 | |
| - path: 'components/sdcard/example' | |
| target: esp32s3 | |
| - path: 'components/seeed-studio-round-display/example' | |
| target: esp32s3 | |
| - path: 'components/serialization/example' | |
| target: esp32 | |
| - path: 'components/smartpanlee-sc01-plus/example' | |
| target: esp32s3 | |
| - path: 'components/socket/example' | |
| target: esp32 | |
| - path: 'components/spi/example' | |
| target: esp32s3 | |
| - path: 'components/st25dv/example' | |
| target: esp32s3 | |
| - path: 'components/st7123touch/example' | |
| target: esp32s3 | |
| - path: 'components/state_machine/example' | |
| target: esp32 | |
| # this example GENERATES its state machine from Complex.json | |
| # at configure time, and the esp-idf image has no node | |
| command: >- | |
| node_major=$(node -v 2>/dev/null | sed -E "s/^v([0-9]+).*/\1/"); | |
| if [ "${node_major:-0}" -lt 18 ]; then | |
| apt-get update && | |
| apt-get install -y ca-certificates curl gnupg && | |
| install -d -m 0755 /etc/apt/keyrings && | |
| curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | | |
| gpg --dearmor --yes -o /etc/apt/keyrings/nodesource.gpg && | |
| chmod a+r /etc/apt/keyrings/nodesource.gpg && | |
| printf "%s\n" "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_20.x nodistro main" | | |
| tee /etc/apt/sources.list.d/nodesource.list >/dev/null && | |
| apt-get update && | |
| apt-get install -y nodejs; | |
| fi && | |
| IDF_COMPONENT_MANAGER=0 idf.py build | |
| - path: 'components/stream_frame/example' | |
| target: esp32 | |
| - path: 'components/switch2_pro/example' | |
| target: esp32s3 | |
| - path: 'components/switch2_pro/example' | |
| target: esp32c6 | |
| - path: 'components/switch_pro/example' | |
| target: esp32s3 | |
| - path: 'components/sx126x/example' | |
| target: esp32s3 | |
| - path: 'components/system/example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/t-deck/example' | |
| target: esp32s3 | |
| - path: 'components/t-dongle-s3/example' | |
| target: esp32s3 | |
| - path: 'components/t_keyboard/example' | |
| target: esp32s3 | |
| - path: 'components/tabulate/example' | |
| target: esp32 | |
| - path: 'components/task/example' | |
| target: esp32 | |
| - path: 'components/telemetry/example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/thermistor/example' | |
| target: esp32 | |
| - path: 'components/thread_pool/example' | |
| target: esp32 | |
| - path: 'components/timer/example' | |
| target: esp32 | |
| - path: 'components/trajectory_planner/example' | |
| target: esp32 | |
| - path: 'components/touch/example' | |
| target: esp32 | |
| - path: 'components/tla2528/example' | |
| target: esp32 | |
| - path: 'components/tt21100/example' | |
| target: esp32s3 | |
| - path: 'components/twai/example' | |
| target: esp32 | |
| - path: 'components/usb_device/example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/usb_device/msc_example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/usb_device/xinput_example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/usb_host/example' | |
| target: esp32s3 | |
| - path: 'components/usb_host/tab5_example' | |
| target: esp32p4 | |
| - path: 'components/vl53l/example' | |
| target: esp32s3 | |
| - path: 'components/vl53l/vl53l5cx_example' | |
| target: esp32s3 | |
| - path: 'components/vl53l/vl53l5cx_webapp_example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/wdi/ble_example' | |
| target: esp32s3 | |
| - path: 'components/wdi/ble_central_example' | |
| target: esp32s3 | |
| - path: 'components/wdi/usb_example' | |
| target: esp32s3 | |
| command: 'IDF_COMPONENT_MANAGER=0 idf.py build' | |
| - path: 'components/wdi/usb_host_example' | |
| target: esp32s3 | |
| - path: 'components/wifi/example' | |
| target: esp32 | |
| - path: 'components/wrover-kit/example' | |
| target: esp32 | |
| - path: 'components/ws-s3-geek/example' | |
| target: esp32s3 | |
| - path: 'components/ws-s3-lcd-1-47/example' | |
| target: esp32s3 | |
| - path: 'components/ws-s3-touch/example' | |
| target: esp32s3 | |
| - path: 'components/xiao-esp32s3-sense/example' | |
| target: esp32s3 | |
| steps: | |
| - name: Checkout repo | |
| uses: actions/checkout@v7 | |
| with: | |
| submodules: 'recursive' | |
| - name: Build Examples | |
| uses: espressif/esp-idf-ci-action@v1 | |
| with: | |
| # Default to ESP-IDF v6.1. Individual matrix entries can still pin a | |
| # different IDF via matrix.test.idf_version if an example ever needs one. | |
| esp_idf_version: ${{ matrix.test.idf_version || 'v6.1' }} | |
| target: ${{ matrix.test.target }} | |
| path: ${{ matrix.test.path }} | |
| command: ${{ matrix.test.command || 'idf.py build' }} |