Skip to content

Build all missing stable versions and filter pre-releases#12

Merged
swoboda1337 merged 5 commits intomainfrom
fix-multi-version-builds
Apr 24, 2026
Merged

Build all missing stable versions and filter pre-releases#12
swoboda1337 merged 5 commits intomainfrom
fix-multi-version-builds

Conversation

@swoboda1337
Copy link
Copy Markdown
Member

@swoboda1337 swoboda1337 commented Apr 24, 2026

Summary

  • check-update.yml now dispatches a build for every stable version newer than the highest existing release, so catch-ups like 2.12.4/5/6 all get built instead of only the latest
  • Pre-release versions are filtered out by rejecting any semver with a - identifier (catches rc, preview, etc.)
  • Explicit permissions: block (contents: read, actions: write) so gh workflow run works regardless of default token scope
  • Added concurrency: groups on the release (cross-run) and manifest/deploy-pages (per-target cross-run) jobs so parallel builds serialize their shared-state writes

Why

On 2026-04-18, Espressif published 3.0.0-rc1. The old script took .versions[0].version (semver-highest, including pre-releases), compared to the current release, and dispatched a build. The slave example was removed in 3.0.0, so every dispatch failed. On 2026-04-22 Espressif published 2.12.4, 2.12.5, and 2.12.6 — but 3.0.0-rc1 was still "latest" to the script, so those three versions were silently skipped.

The workflow only builds forward (versions > highest existing release) rather than filling historical gaps — we don't want to retroactively build every version back to 1.0.0 that was never released.

Test plan

  • 2.12.4, 2.12.5, 2.12.6 built and released manually (pre-dating this PR)
  • Dispatched check-update.yml on this branch — reported empty "Missing versions", skipped dispatch step (run 24891202979)
  • Confirmed 3.0.0-rc1 is filtered from the "Available" list
  • When a future version lands, verify it dispatches a single build
  • When a future cluster of versions lands, verify all dispatch and the release/manifest jobs serialize via the concurrency groups

check-update.yml previously took .versions[0] from the registry, which is
the semver-highest version including pre-releases. When 3.0.0-rc1 was
published it became the 'latest' and every subsequent check kept
dispatching failing 3.0.0-rc1 builds while 2.12.4/5/6 were silently
skipped.

Compute the set of stable versions missing from releases and dispatch a
build per missing version. Add concurrency groups so parallel builds
serialize on the shared release/manifest/pages state instead of racing.
comm requires lexicographic sort but sort -V gives semver order, so the
previous version errored with 'file 1 is not in sorted order'.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Updates the scheduled “check-update” GitHub Actions workflow so it reliably detects all missing stable ESP-Hosted component versions (while excluding pre-releases), and dispatches builds for each missing version. It also serializes release/manifest/pages publishing steps across concurrent build runs to avoid shared-state races.

Changes:

  • Compute “missing versions” as (registry stable versions − existing GitHub releases) and dispatch one build per missing version.
  • Filter out pre-release versions from the ESP component registry results.
  • Add concurrency groups to serialize release, manifest, and deploy-pages jobs across parallel workflow runs.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.

File Description
.github/workflows/check-update.yml Reworks update detection to build all unreleased stable versions and dispatch builds per version.
.github/workflows/build.yml Adds concurrency groups to serialize release publishing, manifest generation, and Pages deployment.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/check-update.yml Outdated
Comment thread .github/workflows/check-update.yml
Comment thread .github/workflows/check-update.yml
The previous logic treated any version in the registry without a matching
release tag as 'missing', which would dispatch builds for every historical
version we never built (1.0.0 through 2.11.2, dozens of them). Those old
versions likely don't build under current ESP-IDF and aren't what we want
to release anyway.

Now we only build versions strictly newer than the highest existing
release, so catching up on a cluster (like 2.12.4/5/6) still works but
ancient gaps are ignored.
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 2 out of 2 changed files in this pull request and generated 4 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/check-update.yml
Comment thread .github/workflows/check-update.yml Outdated
Comment thread .github/workflows/build.yml
Comment thread .github/workflows/check-update.yml Outdated
- Filter all semver pre-releases via jq select(contains("-") | not)
  instead of a narrow rc|alpha|beta|dev regex.
- Add explicit permissions block (contents: read, actions: write) so
  gh workflow run works regardless of repo default token scope.
- Emit missing_count output and gate dispatch on that, avoiding the
  trailing-newline-in-heredoc edge case where outputs.missing != ''
  could evaluate truthy for an empty list.
- Dedupe registry versions with sort -Vu.
- Per-target concurrency group on manifest matrix so the 4 targets
  still parallelize within a run; only across-run writes to the same
  target's manifest file serialize.
gh release list returns newest-first; sorting with -V matches the
ascending order of AVAILABLE so the two lists are visually comparable.
@swoboda1337 swoboda1337 merged commit 2cfd715 into main Apr 24, 2026
5 checks passed
@swoboda1337 swoboda1337 deleted the fix-multi-version-builds branch April 24, 2026 13:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants