support for potentially persisting ephemera between builds
@emilyalbini is already working on this.
Since Feb 25, 2026.
Assessment
This issue has not been assessed yet.
Description
At present, buildomat targets provide a pristine environment each time a job is started. This is the best way to provide reliable, understandable results that can be reproduced or debugged after a build completes.
Unfortunately, some software build processes are truly staggeringly expensive. It would appear to be possible to, at the expense of making the build less hermetic, persist some portion of the build environment at the end of a successful build (but not the whole environment) to be unfurled on top of the pristine environment the next time around. This is obviously a facility that will require some care in order to avoid creating a lot of potentially quiet problems; some features we should consider are:
- allowing this to occur for pull requests but not for builds pushed to the main branch of a repository; GitHub currently forces a new commit hash even when doing a purely fast-forward rebase merge, so our deduplication based on commit hash likely won't be a problem here unless that changes
- if this is driven by declarative configuration in the job TOML:
- preserving only a very specific set of files, perhaps using the same rule matching behaviour we get with
output_rulesdirectives - we should take care to preserve files only after a successful build
- we will need some way to reliably invalidate any existing persisted ephemera
- preserving only a very specific set of files, perhaps using the same rule matching behaviour we get with
- this could also be driven explicitly using the
bmatcontrol program that is available inside jobs, which was added in https://github.com/oxidecomputer/buildomat/commit/6cd4797a814969f69872d0c34893eb8835d313f4- perhaps one could nominate files to persist; e.g.,
bmat persist cargo-registry ~/.cargo/registry - one could unfurl the latest persistent data with, say,
bmat restore cargo-registryand it would be unpacked to the location from which it was originally saved - these commands would direct the agent to begin managing the persistent files, or to report that it couldn't do it for whatever reason; an advantage might be that jobs could handle failure however they like, and that the operational cost of doing this would itself be visible within the job
- perhaps one could nominate files to persist; e.g.,
- jobs should report any sets of persistent ephemera that they used, including a link to download the archive itself, as well as any integrity information, or metadata like creation date, which job created the archive, etc
- Dominant language
- Rust
- Stars
- 72
- Forks
- 5
- PR merge metrics
- No merged PRs in 30d
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from oxidecomputer/buildomat
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
oxidecomputer/buildomat#119 ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
oxidecomputer/buildomat#110 ·
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
oxidecomputer/buildomat#109 ·
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
oxidecomputer/buildomat#99 ·
-
Difficulty 3/5 1-2 days Newbie friendliness 42/100
oxidecomputer/buildomat#94 ·
All issues in oxidecomputer/buildomat
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
kwakseongjae/auto-hwp#319 ·
-
area:cli bug filter-quality good first issue priority:medium
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
bevyengine/bevy#25861 ·
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
enhancement remote
Difficulty 2/5 1-3 hours Newbie friendliness 68/100