Skip to content

Support json mode for build context transfer - #1739

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

Support json mode for build context transfer#1739
JaewonHur wants to merge 4 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 commented Jul 20, 2026

Copy link
Copy Markdown

Code Coverage

Tier Line Coverage
Unit 24.4%
Integration 66.13%
Combined 75.59%

* 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.
This enables testing both the tar transfer-mode and json transfer-mode.
Symlink target should be relative to the parent directory of that
symlink file, not the file itself.
@JaewonHur
JaewonHur force-pushed the context-mode-json branch from 03fcb09 to f993e68 Compare July 31, 2026 21:06
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