cli: add support for parallel remote builds
Metadata
Current evaluation
Merged #3554 in commit c26fc107a, adding project-state hashes and selectable build IDs so multiple remote builds can run and be tracked in parallel.
Resolution: closed resolved
Reason: PR canonical/snapcraft#3554 was merged through merge commit a16fffe76. Its implementation added parallel remote-build support with state-based identifiers and build-ID tracking.
Evaluated by: mr-cal-bot
No scores available.
Issue body
- [x] Have you followed the [guidelines for contributing](https://github.com/snapcore/snapcraft/blob/master/CONTRIBUTING.md)?
- [x] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
- [x] Have you successfully run `./runtests.sh static`?
- [x] Have you successfully run `./runtests.sh tests/unit`?
-----
Currently, when spinning up a remote build, snapcraft calculates a hash of the path for the project being built, and uses that as a unique identifier for the build. This artificially limits the number of builds that can be happening for a given project to 1, which really limits the usefulness of remote builds.
Instead of calculating a hash for the project directory, calculate a hash that represents the _state_ of the project, such that changing any file in the working tree (e.g. switching git branches) changes the hash. This allows multiple builds for different versions of a given project to be running at the same time.
Of course, this introduces the complication of needing to track such builds. Expose the concept of a "build ID" to the user and allow them to specify it for every remote-build command, so they can check the status of or recover particular builds by providing the relevant build ID.
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| stealth/space-bunny-alpha | — | closed resolved | Merged #3554 in commit c26fc107a, adding project-state hashes and selectable build IDs so multiple remote builds can run and be tracked in parallel. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged in canonical/snapcraft#3554, enabling parallel remote builds with project-state hashes and user-selectable build IDs for tracking and recovery. | |
| stealth/space-bunny-alpha | — | closed resolved | Merged PR #3554 (commit c26fc107a, merge a16fffe76), adding parallel remote builds via project-state hashes and user-selectable build IDs. | |
| qwen/qwen3.6-35b-a3b | — | — | Merged to master. Enables parallel remote builds in snapcraft CLI by hashing project state instead of the directory path, allowing concurrent builds. Introduces a user-specifiable build ID for tracking and recovery. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Merged into master. Replaces project path hashing with state-based hashing to enable concurrent remote builds. Introduces a user-specified build ID for tracking and recovery. Codecov reports a minor 0.04% coverage decrease. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #2500 cli: add remote build | snapcraft | merged | Merged PR #2500 added a CLI remote-build command that submits source trees to Launchpad and retrieves built snaps or error logs. | |
| #4324 remote-build: new command logic | snapcraft | closed | Remote-build logic was replaced by merged PR #4395 (commit 2e0647594), adding isolated per-build cache worktrees, cleanup, and generated build IDs. | |
| #3553 cli: make remote-build more user-friendly | snapcraft | merged | Merged in #3553 via 8649cedd6: --recover now reports when no build exists, the public-data prompt only appears for new builds, and tests cover the behavior. |