Repository navigation
Commit 3d08409
committed
Add a nightly matrix for the ESP-IDF component
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
registry validation (compote component upload --dry-run
--allow-existing) runs here on the packed archive. 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 e69d00d commit 3d08409
22 files changed
Lines changed: 676 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