Skip to content

Support json mode for build context transfer#1739

Open
JaewonHur wants to merge 2 commits into
apple:mainfrom
JaewonHur:context-mode-json
Open

Support json mode for build context transfer#1739
JaewonHur wants to merge 2 commits into
apple:mainfrom
JaewonHur:context-mode-json

Conversation

@JaewonHur

Copy link
Copy Markdown
Contributor

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update

Motivation and Context

This resolves #1515.
This relies on apple/container-builder-shim#84.

Json mode avoids computing overhead on host side due to the archiving of build context. Instead, it feeds file on demand as the buildkitd ask for the file contents. Performance tradeoff depends on each users' workloads. If build context contains lots of files which cannot be ignored, tar mode would be better, if most of the files can be ignored, then json mode is better.

Testing

  • Tested locally
  • Added/updated tests
  • Added/updated docs

@github-actions github-actions Bot added the cli label Jun 17, 2026
* Add "transfer-mode" key to build metadata, and plumb CLI to support
  "tar", and "json" modes.
* Handle json mode in BuildFSSync proxy. Json mode doesn't archive build
  context, but sends only the file metadata to the builder shim.
* Fix constructing file metadata for symlink. i) all ancestor of a
  symlink target should be included in the file metadata to shim, ii)
  all child entries under directory target should be included, iii)
  isDir must be false for symlink.
Test both tar and json mode build context transfer. This doubles the
test time, but total time for build is not that large.
@JaewonHur JaewonHur force-pushed the context-mode-json branch from 183c722 to 820892a Compare June 17, 2026 07:41
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Request]: Improve builder performance when build context is large

1 participant