Skip to content

Add merged binaries to release assets#524

Merged
KenVanHoeylandt merged 3 commits into
TactilityProject:mainfrom
bmorcelli:main
May 21, 2026
Merged

Add merged binaries to release assets#524
KenVanHoeylandt merged 3 commits into
TactilityProject:mainfrom
bmorcelli:main

Conversation

@bmorcelli
Copy link
Copy Markdown
Contributor

@bmorcelli bmorcelli commented May 21, 2026

Summary

This PR adds merged firmware binaries to the firmware build artifacts.

Each firmware build now produces three artifacts per environment/device:

  • Tactility-<board>.zip
  • Tactility-<board>-symbols.zip
  • Tactility-<board>.bin

The .bin file is generated from the release binaries using the new merge script and is named after the same environment/device as the regular release artifact.

Changes

  • Added Buildscripts/Flashing/merge.sh and Buildscripts/Flashing/merge.ps1 to the release package.
  • Updated the firmware build workflow to install esptool and run merge.sh after creating the release folder.
  • The workflow now uploads Tactility-<board>.bin as an additional artifact.
  • merge.sh accepts an optional chip argument and falls back to esp32s3 when not provided.
  • The workflow passes the board architecture to merge.sh, so merged binaries are generated with the correct ESP target.
  • Updated CDN firmware generation to ignore .bin artifacts so they are not treated as firmware package directories.

Notes

The merged binary is generated as merged_binary.bin by esptool merge-bin, then renamed to Tactility-<board>.bin before being uploaded as an artifact.

Tests

Tested CI, but couldn't test release assets due to secrets used by CDN, but merged binary artifact is being passed.

Summary by CodeRabbit

  • New Features

    • Release builds now produce a single merged firmware binary and upload it as part of the release artifacts (30-day retention).
  • Chores

    • Added cross-platform binary merge tooling to the build pipeline.
    • Improved CDN/manifest generation to ignore intermediate binary directories during artifact indexing.

Review Change Stack

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented May 21, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 740ae953-0de0-4e02-89f6-9de037f44272

📥 Commits

Reviewing files that changed from the base of the PR and between 7f7ba25 and 70a945b.

📒 Files selected for processing (2)
  • Buildscripts/Flashing/merge.ps1
  • Buildscripts/Flashing/merge.sh

📝 Walkthrough

Walkthrough

This PR adds binary merging functionality to the Tactility firmware build pipeline. The change introduces two merge scripts—one for Unix-like systems (merge.sh) and one for Windows (merge.ps1)—that detect available esptool installation, read flash arguments from the Binaries directory, and invoke esptool's merge-bin command to combine multiple firmware binaries into a single output file. The GitHub Actions build-firmware composite action is updated to run the merge script after the release build, install esptool if needed, and upload the resulting merged binary as an artifact. Finally, the CDN artifact filtering logic is extended to exclude ".bin" directories from reprocessing to prevent merged outputs from being treated as input sources.

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 33.33% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Add merged binaries to release assets' accurately describes the primary change: adding merged firmware binaries to the release workflow and artifacts.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 5


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: d18b3129-8547-4bfa-8ff2-462c8dc0ab73

📥 Commits

Reviewing files that changed from the base of the PR and between 4170b86 and 7f7ba25.

📒 Files selected for processing (4)
  • .github/actions/build-firmware/action.yml
  • Buildscripts/CDN/generate-firmware-files.py
  • Buildscripts/Flashing/merge.ps1
  • Buildscripts/Flashing/merge.sh

Comment thread Buildscripts/Flashing/merge.ps1
Comment thread Buildscripts/Flashing/merge.ps1 Outdated
Comment thread Buildscripts/Flashing/merge.ps1 Outdated
Comment thread Buildscripts/Flashing/merge.sh Outdated
Comment thread Buildscripts/Flashing/merge.sh Outdated
@KenVanHoeylandt
Copy link
Copy Markdown
Contributor

Thanks a lot! I reviewed it and it looks fine. I'll merge it once the pipelines are green.

@KenVanHoeylandt KenVanHoeylandt merged commit 895e6bc into TactilityProject:main May 21, 2026
56 checks passed
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