ci: publish .uf2 test builds (RP2350) alongside .hex in PR releases - #11860
Conversation
Backport of iNavFlight#11856 (merged to maintenance-10.x) to release/9.1. The PR Test Builds workflow is triggered by workflow_run, which executes from the default branch (master); master is fed from release/9.1, so this must land here (and ride 9.1 -> master) for PR test-build releases to attach .uf2. - ci.yml: upload ./build/*.uf2 alongside *.hex in the firmware matrix and single-target jobs (upload-artifact unions the globs and defaults if-no-files-found: warn, so jobs without a .uf2 are unaffected). - pr-test-builds.yml: attach hexes/*.uf2 to the PR test-build release when present (guarded so PRs with no .uf2 don't pass a literal unmatched glob), and mention it in the release notes. The .uf2 itself is produced by RP2350 targets via the in-tree elf2uf2.py (python3, always on runners); no picotool dependency.
|
ⓘ Qodo reviews are paused because the subscription is no longer active. Ask your workspace admin to reactivate the subscription to resume reviews. Manage billing |
PR Summary by QodoPublish RP2350 UF2 assets in PR test-build releases
AI Description
Diagram
High-Level Assessment
Files changed (2)
|
Code Review by Qodo
1. UF2 assets are never produced
|
| path: ./build/*.hex | ||
| path: | | ||
| ./build/*.hex | ||
| ./build/*.uf2 |
There was a problem hiding this comment.
1. Uf2 assets are never produced 🐞 Bug ≡ Correctness
The new upload globs depend on build/*.uf2, but this branch contains no RP2350_PICO target, elf2uf2.py, or CMake rule that emits UF2 output. Every build therefore leaves these globs unmatched, and PR releases never attach the advertised UF2 image.
Agent Prompt
## Issue description
The CI and release workflows now publish `build/*.uf2`, but this branch has no RP2350 target or conversion rule that creates such files. Backport or implement the prerequisite RP2350 UF2 build support so both full-matrix and single-target builds emit the expected root-level UF2 artifact.
## Issue Context
Matrix builds run the `ci` target, which only builds registered release targets, while single-target builds invoke registered target names directly. Existing post-link conversion support emits HEX and BIN only, and the repository has no `RP2350_PICO` definition or `elf2uf2.py` implementation.
## Fix Focus Areas
- .github/workflows/ci.yml[122-132]
- .github/workflows/ci.yml[164-174]
- cmake/ci.cmake[4-15]
- cmake/main.cmake[93-108]
- cmake/stm32.cmake[195-213]
- cmake/stm32.cmake[262-268]
ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools
|
RAM / Flash usage vs. base branch — commit
See RAM/flash optimization guide for techniques to reduce usage. |
|
Test firmware build ready — commit Download firmware for PR #11860 245 targets built. Find your board's
|
No source change. Re-runs CI now that the .uf2 release-attach change (iNavFlight#11860) has landed on release/9.1 and master, where the workflow_run-triggered PR Test Builds job executes.
Summary
Backport of #11856 (already merged to
maintenance-10.x) torelease/9.1.The
PR Test Buildsworkflow is triggered byworkflow_run, which executes from the default branch (master). Since master is fed fromrelease/9.1, this change must land on 9.1 (and then ride 9.1 → master) before PR test-build releases can attach.uf2images.RP2350_PICO targets (see #11854) generate a
.uf2for BOOTSEL drag-and-drop flashing in addition to the.hexthat pr-test-builds publishes.Changes
.github/workflows/ci.yml./build/*.uf2alongside./build/*.hexin the firmware matrix and single-target jobs (multiline path;upload-artifact@v4unions the globs and defaultsif-no-files-found: warn, so jobs without a.uf2are unaffected)..github/workflows/pr-test-builds.ymlhexes/*.uf2to the PR test-build release when present, guarded so PRs without a.uf2don't pass a literal unmatched glob togh release create..uf2in the release notes.The
.uf2is produced by RP2350 targets via the in-treeelf2uf2.py(python3, always on runners) — no picotool / apt dependency (picotool isn't packaged in Ubuntu 24.04).Notes
maintenance-10.xversion of the change forpr-test-builds.yml;ci.ymlcarries only the.uf2upload-glob hunks..uf2-producing target: upload glob matches nothing (warn-only), release asset list stays.hex-only.