feat(s3): Split libs for each SoC and add S3 support#12219
Conversation
👋 Hello lucasssvaz, we appreciate your contribution to this project! 📘 Please review the project's Contributions Guide for key guidelines on code, documentation, testing, and more. 🖊️ Please also make sure you have read and signed the Contributor License Agreement for this project. Click to see more instructions ...
Review and merge process you can expect ...
|
Test Results 90 files 90 suites 34m 53s ⏱️ For more details on these failures, see this check. Results for commit 849d6ec. ♻️ This comment has been updated with latest results. |
Memory usage test (comparing PR against master branch)The table below shows the summary of memory usage change (decrease - increase) in bytes and percentage for each target.
Click to expand the detailed deltas report [usage change in BYTES]
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8408816 to
ad41047
Compare
5519642 to
f1a58c4
Compare
eae0a69 to
58769a6
Compare
878d715 to
2ce14e9
Compare
2ce14e9 to
b571d16
Compare
There was a problem hiding this comment.
Pull request overview
This PR refactors the ESP32 Arduino core release pipeline to support per-SoC (System on Chip) library packaging, with a focus on modularization and improved maintainability. The changes introduce a shared library for GitHub release operations, split the release workflow into separate build/test/upload stages, and enable optional S3 storage for library artifacts.
Changes:
- Extracted common GitHub release functions into a shared library (
lib-github-release.sh) - Modified release workflow to build and upload per-SoC library ZIPs instead of a single monolithic library package
- Split the workflow into separate jobs: build, test-package (cross-platform), upload-and-finalize, and upload-hosted-binaries
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 16 comments.
Show a summary per file
| File | Description |
|---|---|
.github/workflows/release.yml |
Restructured workflow with separate build, test, and upload jobs; added S3 configuration and cross-platform testing |
.github/scripts/on-release.sh |
Major refactoring to create per-SoC library ZIPs, update package JSONs, add S3 support, and remove inline testing |
.github/scripts/lib-github-release.sh |
New shared library with reusable functions for file uploads to GitHub releases and Pages |
.github/scripts/upload-release-assets.sh |
New script to handle package JSON upload and version commit logic separately from build |
.github/scripts/test-package-json.sh |
New script for testing package installation across multiple operating systems |
.github/scripts/socs_config.sh |
Added CORE_VARIANTS array to define SoCs for per-variant library packaging |
.github/scripts/find_all_boards.sh |
Updated script path handling |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
0057261 to
4044b54
Compare
|
@P-R-O-C-H-Y PTAL |
Description of Change
This pull request significantly refactors and improves the GitHub Actions release scripts for the ESP32 Arduino core. The main focus is on modularizing shared logic, supporting per-SoC (System on Chip) library packaging and publishing, and enhancing the maintainability and flexibility of the release process. The changes introduce a new shared library for GitHub release functions, update the release workflow to generate and upload per-SoC library ZIPs, and streamline the JSON package generation and upload steps.
Key changes:
Modularization and Shared Logic
lib-github-release.sh, containing reusable functions for file size calculation, asset uploading, and GitHub Pages publishing. This reduces code duplication and centralizes maintenance of common release logic. (.github/scripts/lib-github-release.sh,.github/scripts/on-release.sh) [1] [2] [3] [4]Per-SoC Library Packaging and Publishing
CORE_VARIANTSarray defined insocs_config.sh. Each SoC variant gets its own ZIP archive, which is uploaded either to S3 (if configured) or GitHub Releases. The package JSON template is updated to reference these per-SoC tools, improving granularity and future extensibility. (.github/scripts/on-release.sh,.github/scripts/socs_config.sh) [1] [2] [3]Improvements to Release and Package Generation
esp32-$RELEASE_TAGtoesp32-core-$RELEASE_TAGfor clarity and consistency. (.github/scripts/on-release.sh)replace_literal_skip_nfunction for portable and flexible string replacement, and improved handling of download URLs for mirrors. (.github/scripts/on-release.sh) [1] [2]Platform File and Miscellaneous Fixes
platform.txtgeneration to use new variable references and improve compatibility with per-variant library paths. (.github/scripts/on-release.sh)find_all_boards.shfor better portability. (.github/scripts/find_all_boards.sh)Workflow and Testing Adjustments
.github/scripts/on-release.sh)These changes collectively modernize the release process, make it easier to add new SoC variants, and improve maintainability for future development.
Test Scenarios
CI tested in my fork and libs tested locally
https://github.com/lucasssvaz/arduino-esp32/actions/runs/20955954431
Generated JSON:
https://raw.githubusercontent.com/lucasssvaz/arduino-esp32/gh-pages/package_esp32_dev_index.json