[PR #77] [CLOSED] Generate UF2 artifacts in CI and release only flashable UF2 outputs #189

Closed
opened 2026-10-22 05:07:19 +00:00 by roman · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/safijari/openpuck/pull/77
Author: @Copilot
Created: 6/22/2026
Status: ❌ Closed

Base: main ← Head: copilot/fix-ci-uf2-upload


📝 Commits (3)

  • d8bb9fd Release only UF2 firmware assets
  • 40f6f49 Add UF2 conversion steps to workflows
  • 04e182a Generate UF2 artifacts in CI workflows

📊 Changes

2 files changed (+45 additions, -3 deletions)

View changed files

📝 .github/workflows/build.yml (+18 -0)
📝 .github/workflows/release.yml (+27 -3)

📄 Description

Release jobs were publishing duplicate DFU zip assets and no UF2 files, because CI never produced UF2 outputs. This change adds explicit UF2 generation from compiled HEX artifacts and aligns release packaging with that output.

  • Build workflow: produce UF2 explicitly

    • Add a Generate UF2 image step in .github/workflows/build.yml.
    • Resolve uf2conv.py from the installed Adafruit nRF52 core and convert OpenPuck.ino.hex to OpenPuck.ino.uf2.
    • Fail fast with clear errors if converter or HEX input is missing.
  • Release workflow: generate both firmware variants as UF2

    • Add a Generate UF2 images step in .github/workflows/release.yml.
    • Convert both standard and factory-reset HEX outputs into UF2 before asset collection.
    • Keep release artifact collection scoped to *.uf2 so published assets are only flashable UF2 files.
  • Workflow hardening

    • Replace silent test -f checks with explicit error messages for missing prerequisites.
    • Use a named UF2 family ID variable (0xADA52840) for conversion calls.
- name: Generate UF2 images
  run: |
    UF2_FAMILY_ID=0xADA52840
    UF2CONV="${CORE_DIR}/tools/uf2conv/uf2conv.py"
    python3 "${UF2CONV}" -f "${UF2_FAMILY_ID}" -c \
      -o build/openpuck/OpenPuck.ino.uf2 \
      build/openpuck/OpenPuck.ino.hex

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/safijari/openpuck/pull/77 **Author:** [@Copilot](https://github.com/apps/copilot-swe-agent) **Created:** 6/22/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `copilot/fix-ci-uf2-upload` --- ### 📝 Commits (3) - [`d8bb9fd`](https://github.com/safijari/openpuck/commit/d8bb9fd6295f30f7b0ea1d5f08eb24de1c99e7b0) Release only UF2 firmware assets - [`40f6f49`](https://github.com/safijari/openpuck/commit/40f6f4947f3fa3aae76466d9416ec593842c6551) Add UF2 conversion steps to workflows - [`04e182a`](https://github.com/safijari/openpuck/commit/04e182aa7ca610d52efbf97bb32c6832749dc7fc) Generate UF2 artifacts in CI workflows ### 📊 Changes **2 files changed** (+45 additions, -3 deletions) <details> <summary>View changed files</summary> 📝 `.github/workflows/build.yml` (+18 -0) 📝 `.github/workflows/release.yml` (+27 -3) </details> ### 📄 Description Release jobs were publishing duplicate DFU zip assets and no UF2 files, because CI never produced UF2 outputs. This change adds explicit UF2 generation from compiled HEX artifacts and aligns release packaging with that output. - **Build workflow: produce UF2 explicitly** - Add a `Generate UF2 image` step in `.github/workflows/build.yml`. - Resolve `uf2conv.py` from the installed Adafruit nRF52 core and convert `OpenPuck.ino.hex` to `OpenPuck.ino.uf2`. - Fail fast with clear errors if converter or HEX input is missing. - **Release workflow: generate both firmware variants as UF2** - Add a `Generate UF2 images` step in `.github/workflows/release.yml`. - Convert both standard and factory-reset HEX outputs into UF2 before asset collection. - Keep release artifact collection scoped to `*.uf2` so published assets are only flashable UF2 files. - **Workflow hardening** - Replace silent `test -f` checks with explicit error messages for missing prerequisites. - Use a named UF2 family ID variable (`0xADA52840`) for conversion calls. ```yaml - name: Generate UF2 images run: | UF2_FAMILY_ID=0xADA52840 UF2CONV="${CORE_DIR}/tools/uf2conv/uf2conv.py" python3 "${UF2CONV}" -f "${UF2_FAMILY_ID}" -c \ -o build/openpuck/OpenPuck.ino.uf2 \ build/openpuck/OpenPuck.ino.hex ``` --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
roman 2026-10-22 05:07:19 +00:00
Sign in to join this conversation.
No labels
pull-request
wontfix
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
safijari/openpuck#189
No description provided.