forked fromzephyrproject-rtos/arduino-core-zephyr
Uh oh!
There was an error while loading.Please reload this page.
- Notifications
You must be signed in to change notification settings - Fork41
ci: run Zephyr builds in parallel#286
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
Open
pillo79 wants to merge5 commits intoarduino:mainChoose a base branch frompillo79:parallel-ci
base:main
Could not load branches
Branch not found:{{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline, and old review comments may become outdated.
Open
Uh oh!
There was an error while loading.Please reload this page.
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.Learn more about bidirectional Unicode characters
No longer useful for any purpose.Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
Save the prepared build environment as an artifact after the initialsetup, to allow for multiple jobs to reuse it without repeating theinitial Zephyr configuration steps.Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
Convert the sequential building and packaging of all board binaries intoa matrix job, allowing parallel execution. This makes the workflow moreefficient and independent of the number of supported boards.Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
Use a common function to handle logging messages for GitHub Actions andfor the console, for a cleaner output.Signed-off-by: Luca Burelli <l.burelli@arduino.cc>:1
These changes allow the packaging and testing jobs to start even if someof the build jobs have resulted in errors, thus maximizing the amount oftesting that can be performed in parallel CI workflows even if one boardis causing issues.The build step artifacts will be saved with a "failed-" prefix in case oferrors and can be inspected for further information.Signed-off-by: Luca Burelli <l.burelli@arduino.cc>
Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading.Please reload this page.
This pull request refactors the GitHub Actions workflow for packaging the core, splitting the build pipeline into more granular jobs, improving artifact handling and cleanup, and enhancing error reporting in packaging scripts.
The main goals are to improve parallelization and provide clearer diagnostics during packaging:
The workflow is split into distinct jobs:
build-env(fetches the Zephyr environment only once),build-board(builds board-specific binaries in parallel),package-core(packages each core artifact in paraallel), andtest-core(tests each board in parallel). This change nowmakes the whole CI pipeline basically independent of the number of boards / packages being tested.CI now tries to run as much as possible in case an error is detected, while still indicating which parts of the CI build are failing.Build failures for individual boards are summarized and included in the GitHub Actions step summary, andthe full contents of the build directory can be retrieved for easy inspection. Tests are attempted even when some of the boards did not compile successfully.
Seehere for a sample run that includes a failed Giga build.
Future work could move the Zephyr env preparation step using Docker; I think that should speed up the process compared to the current artifact upload/download.