Repository navigation
馃懛 Nightly Sizes: build every example, keep the flash used by each - #1222
Merged
Merged
Conversation
Problem: "PR Test Build" only builds the folders that a PR changes. When Marlin itself grows, an example that no PR touches can stop fitting in flash, and nobody sees it until the next PR to touch that example fails. There is also no record of how large each example is, so a jump in the base size of the firmware is only found when something overflows. Solution: A scheduled workflow builds every example against the current bugfix-2.1.x, in shards of 30 that each use one toolchain group (and its cache from cache-pio.yml). Each shard reports with build-configs. A final job merges the results into a manifest (the "sizes" artifact, 90 days), compares it with the previous night's, and writes the job summary: - configs that fail, marking the new ones, - the median size change of each environment, which is Marlin's own growth and not one example's, - the biggest changes in a single config, - the configs within 2 KB of the flash limit, - a link to the Marlin commits since the previous run. The run fails if a config fails to build or a shard doesn't finish. It can also be started by hand with a regex to build just some folders. The planning, merging and report are in .github/scripts/size-manifest.
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
Sign up for free
to 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.
Description
"PR Test Build" only builds the folders a PR changes. When Marlin itself grows, an example that no PR touches can stop fitting in flash, and nobody sees it until the next PR to touch that example fails. Nothing records how large each example is either.
This adds a scheduled workflow (daily 07:17 UTC, or by hand) that builds every example against the current
bugfix-2.1.x:cache-pio.ymlalready saves.build-configs. All shards use the same Marlin commit, even ifbugfix-2.1.xmoves during the run.sizes.tsv(thesizesartifact, 90 days), compares it with the previous run, and writes the job summary.The summary lists failures (marking new ones), configs fixed or added since the previous run, the median size change per environment (Marlin's own growth, not one example's), the biggest changes in a single config, the configs within 2 KB of the flash limit, and a link to the Marlin commits since the last run.
The run fails if a config fails to build or a shard doesn't finish. It needs no write permission, only
actions: readto find the previous manifest. A run started by hand takes a regex to build only some folders (saved assizes-partial, so it isn't used as the baseline).The planning, merging and report are in
.github/scripts/size-manifest.Testing
results.tsv, so merging overwrote them), which is fixed.actionlintis clean.