Repository navigation
Commit 62013ab
committed
Publish dev versions of the ESP-IDF component from the nightly branch
Projects that need the component before the next release can now pin a
dev version from the registry instead of generating the component from
an ExecuTorch checkout. A manual run of publish-espressif-idf.yml on the
nightly branch publishes X.Y.Z-dev.YYYYMMDD of that branch's commit,
through the same packing, testing, review and registry checks as a
release. The generator's new --version-suffix -dev stamps HEAD's commit
date, and like the other published stamps checks the checkout: HEAD must
be on the nightly branch, checked out or fetched from origin, and free
of uncommitted changes to what the generator reads. --allow-dev-stamp
stays the unchecked stamp for local builds.
A dev version's kernel bundles need executorch from the component's
exact commit. ExecuTorch's nightly wheels are built from the nightly
branch's commits, so the plan publishes dev versions only from the
nightly branch, and nothing else from it. That check runs from the
nightly branch's copy of the workflow, which is main's, so it guards
against mistakes rather than changes to it: the runbook protects the
nightly branch with a ruleset before the environment trusts it, and has
the approver of a dev upload review what changed since the last approved
one in every file the environment's jobs run: the workflow, the upload
script and its requirements, and the test script whose fetch mode they
run. Before the build, the new wheel mode of
test_espressif_idf_nightly.sh checks that the nightly index has the
version's wheels for every platform and CPython the wheel workflows
build, and that all of them record that commit, which takes about 30
seconds. It refuses a version dated today, since a second nightly the
same day, which has happened, replaces that day's wheels; the runbook
has the workflow run between 00:00 UTC and the next nightly, and once
with dry_run set before the first dev upload. The nightly matrix gains a
job, which its pull requests run, that checks the wheel check's
refusals, fails if the index's platforms and CPythons of the last 60
days differ from those the check expects, and runs it on the finished
nightlies of the last 60 days that have every wheel, newest first, until
one passes, since a second nightly the same day can leave a day's wheels
from two commits. It fails if none passes, or if the index has every
wheel of a day no nightly commit is dated, which means the dev version's
dates no longer match the wheels'; otherwise nightly wheels can fail to
build for days, so finding none only warns.
ExecuTorch's wheels declare no torch, so the component's VERSION now
records the torch requirement install_requirements.py builds the wheels
against, and the CPU index of its TORCH_URL_BASE, which it installs
torch from and which also serves torch release candidates. The generator
reads both before --version exits, so the stamp checks catch a pin it
cannot read, and counts install_requirements.py among its inputs. The
new torch mode checks that the requirement resolves from that index for
every platform and CPython, in the package job before upload and in the
nightly's prepare job every day, and the component test checks both
lines. The component's README gives the exact pip commands for its
version, a release's, an RC's or a dev version's, and the component test
checks the release's, the RC's and, from a local nightly branch, the dev
version's. The stamp test covers a pin the generator cannot read and an
install_requirements.py that does not import, and test-espressif.yml now
runs for changes to install_requirements.py and install_utils.py. torch
comes from its own index in a command of its own, because
download.pytorch.org's test and release indexes also serve executorch
builds, as X.Y.Z+cpu, which pip would prefer to PyPI's X.Y.Z and which
gen_kernels.py accepts for a release without a commit check. and
gen_kernels.py names the nightly wheel a dev version needs. The nightly
index keeps about 60 days of wheels, of executorch and of a dated torch
alike, which a dev version's README says, so a project moves to a newer
dev version, or to the release, before its pin ages out; firmware builds
from a committed kernel bundle are unaffected.
Dev versions are semver pre-releases, which a version range picks up
only if it opts in, so they go to production without reaching projects
on releases. They read 1.6.0-dev.YYYYMMDD, as the nightly wheels do,
until main's version.txt moves past 1.6.0, and sort below 1.6.0
meanwhile; exact pins are unaffected. Dev runs queue in the nightly
branch's concurrency group, so one cannot replace a pending release run.
Before the first dev upload, a repo admin protects the nightly branch
and adds it to the deployment branches of the esp-component-registry
environment. The workflow accepts -dev once this change reaches the
nightly branch.
Authored with Claude Code.1 parent db8b2f2 commit 62013ab
10 files changed
Lines changed: 470 additions & 57 deletions
File tree
- .ci/scripts
- .github/workflows
- examples/espressif
- idf_component_template
- tools
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
81 | 81 | | |
82 | 82 | | |
83 | 83 | | |
84 | | - | |
| 84 | + | |
| 85 | + | |
85 | 86 | | |
86 | 87 | | |
87 | 88 | | |
| |||
92 | 93 | | |
93 | 94 | | |
94 | 95 | | |
95 | | - | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
96 | 99 | | |
97 | 100 | | |
98 | 101 | | |
99 | | - | |
| 102 | + | |
100 | 103 | | |
101 | 104 | | |
102 | 105 | | |
103 | 106 | | |
104 | 107 | | |
105 | 108 | | |
| 109 | + | |
| 110 | + | |
| 111 | + | |
| 112 | + | |
| 113 | + | |
| 114 | + | |
| 115 | + | |
106 | 116 | | |
107 | 117 | | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
108 | 126 | | |
109 | 127 | | |
110 | 128 | | |
| |||
116 | 134 | | |
117 | 135 | | |
118 | 136 | | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
| 148 | + | |
| 149 | + | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
119 | 158 | | |
120 | 159 | | |
121 | 160 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
37 | 55 | | |
38 | 56 | | |
39 | 57 | | |
40 | 58 | | |
41 | | - | |
| 59 | + | |
42 | 60 | | |
43 | 61 | | |
44 | 62 | | |
45 | 63 | | |
46 | 64 | | |
47 | 65 | | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
48 | 71 | | |
49 | 72 | | |
50 | 73 | | |
| |||
414 | 437 | | |
415 | 438 | | |
416 | 439 | | |
| 440 | + | |
| 441 | + | |
| 442 | + | |
| 443 | + | |
| 444 | + | |
| 445 | + | |
| 446 | + | |
| 447 | + | |
| 448 | + | |
| 449 | + | |
| 450 | + | |
| 451 | + | |
| 452 | + | |
| 453 | + | |
| 454 | + | |
| 455 | + | |
| 456 | + | |
| 457 | + | |
| 458 | + | |
| 459 | + | |
| 460 | + | |
| 461 | + | |
| 462 | + | |
| 463 | + | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
| 476 | + | |
| 477 | + | |
| 478 | + | |
| 479 | + | |
| 480 | + | |
| 481 | + | |
| 482 | + | |
| 483 | + | |
| 484 | + | |
| 485 | + | |
| 486 | + | |
| 487 | + | |
| 488 | + | |
| 489 | + | |
| 490 | + | |
| 491 | + | |
| 492 | + | |
| 493 | + | |
| 494 | + | |
| 495 | + | |
| 496 | + | |
| 497 | + | |
| 498 | + | |
| 499 | + | |
| 500 | + | |
| 501 | + | |
| 502 | + | |
| 503 | + | |
| 504 | + | |
| 505 | + | |
| 506 | + | |
| 507 | + | |
| 508 | + | |
| 509 | + | |
| 510 | + | |
| 511 | + | |
| 512 | + | |
| 513 | + | |
| 514 | + | |
| 515 | + | |
| 516 | + | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
| 520 | + | |
| 521 | + | |
| 522 | + | |
| 523 | + | |
| 524 | + | |
| 525 | + | |
| 526 | + | |
| 527 | + | |
| 528 | + | |
| 529 | + | |
| 530 | + | |
| 531 | + | |
| 532 | + | |
| 533 | + | |
| 534 | + | |
| 535 | + | |
| 536 | + | |
| 537 | + | |
| 538 | + | |
| 539 | + | |
| 540 | + | |
| 541 | + | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
| 587 | + | |
| 588 | + | |
| 589 | + | |
| 590 | + | |
| 591 | + | |
| 592 | + | |
| 593 | + | |
| 594 | + | |
| 595 | + | |
| 596 | + | |
| 597 | + | |
| 598 | + | |
| 599 | + | |
| 600 | + | |
| 601 | + | |
| 602 | + | |
| 603 | + | |
| 604 | + | |
| 605 | + | |
| 606 | + | |
| 607 | + | |
| 608 | + | |
| 609 | + | |
| 610 | + | |
| 611 | + | |
| 612 | + | |
| 613 | + | |
| 614 | + | |
417 | 615 | | |
418 | 616 | | |
419 | 617 | | |
| |||
448 | 646 | | |
449 | 647 | | |
450 | 648 | | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
451 | 652 | | |
452 | 653 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
| 53 | + | |
53 | 54 | | |
54 | 55 | | |
55 | 56 | | |
| |||
65 | 66 | | |
66 | 67 | | |
67 | 68 | | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
68 | 89 | | |
69 | 90 | | |
70 | 91 | | |
| |||
0 commit comments