Repository navigation
Commit 0fc43f6
authored
Add a nightly matrix for the ESP-IDF component (#24711)
nightly-espressif-idf.yml runs the component across every target,
ESP-IDF release and configuration that the per-PR jobs only sample. A
prepare job generates and packs the component and exports the smoke,
esp_nn:: mul, ESP-NN delegate and Cadence wake word models with their
kernel bundles, plus an all_ops bundle that registers every op of every
kernel library. Twelve build jobs (ESP-IDF 6.0.1, 6.1 and master, four
shards each) take that artifact and nothing else: they serve the archive
from a file:// mirror, list the idf_component_consumer configurations
with idf-build-apps (each sdkconfig.ci.* file for ESP32, -S3, -C3, -C5,
-C6 and -P4, filtered by .build-test-rules.yml), build their shard from
the mirror with ESP-IDF's own Python environment, check that every
setting of its sdkconfig.ci.* file reached the build's sdkconfig, since
ESP-IDF only warns about an unknown symbol, and run each build on QEMU
or esp-emu. Each job records the ESP-IDF commit it tested and uploads
its build and emulator logs to S3, where they stay 14 days instead of
GitHub's 2. The configurations are default (the smoke model alone);
nolog (logging compiled out), perf (ExecuTorch built without -Os, and
the project for speed) and debug (debug assertions, and full program
verification, which the app then runs on each model as it loads it),
which each run all four models, so the delegate and the quantized,
Cadence and esp_nn:: kernels run under each setting; wakeword, delegate
and oplib, each a model with its own bundle, on ESP32-S3 and -C6, since
the four-model configurations already run those models everywhere;
all_ops, also on ESP32-S3 and -C6, with an 8 MB flash layout, so every
vendored kernel compiles under ESP-IDF's flags and every registration
resolves when the image links; plus a build-only ESP32-P4 configuration
for silicon before rev3, which esp-emu does not run.
The consumer takes the model directory as ET_CONSUMER_MODELS_DIR, from
which CONFIG_ET_CONSUMER_MODEL picks a list of models and their combined
bundle. It has its own sdkconfig.defaults instead of overriding
SDKCONFIG_DEFAULTS. The script builds each listed configuration itself
with its own sdkconfig, because idf-build-apps keeps one sdkconfig in
the project directory, which the next build overwrites before the
emulator run needs it, and runs idf-build-apps from a venv of its own so
ESP-IDF's environment stays as ESP-IDF installs it.
Jobs on macOS and Windows configure the two-model idf_component_smoke
project with the packed component, once with its bundle and once in
automatic mode, and check that both select the same kernels. The prepare
job also runs the registry's validation (compote component upload
--dry-run --allow-existing) on the packed archive, and the build jobs
check that ESP-IDF's Python environment cannot import executorch.
setup.sh accepts an ESP-IDF branch such as master. The workflow also
runs for the ciflow/nightly label, and on pull requests that change the
matrix itself (the workflow, its two scripts and
idf_component_consumer/), since workflow_dispatch only works from the
default branch and test-espressif.yml already builds and runs the packed
component on every pull request that can change it. Pull requests skip
ESP-IDF master, which breaks on its own schedule.
Authored with Claude Code.1 parent 495d465 commit 0fc43f6
22 files changed
Lines changed: 674 additions & 14 deletions
File tree
- .ci/scripts
- .github/workflows
- examples/espressif
- idf_component_consumer
- main
- idf_component_smoke/main
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
| 116 | + | |
| 117 | + | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
| 127 | + | |
| 128 | + | |
| 129 | + | |
| 130 | + | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
132 | 132 | | |
133 | 133 | | |
134 | 134 | | |
135 | | - | |
136 | | - | |
| 135 | + | |
137 | 136 | | |
138 | 137 | | |
139 | 138 | | |
| |||
0 commit comments