moby/reports/builder/2017-06-26.md
Tonis Tiigi 294095d07e Add builder dev report for 2017-06-26
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
2017-06-26 16:10:03 -07:00

3.9 KiB

Development Report for June 26, 2017

BuildKit

Repo Proposal

New development repo is open at https://github.com/moby/buildkit

The readme file provides examples how to get started. You can see an example of building BuildKit with BuildKit.

There are lots of new issues opened as well to track the missing functionality. You are welcomed to help on any of them or discuss the design there.

Last week most of the work was done on improving the llb client library for more complicated use cases and providing traces and interactive progress of executed build jobs.

The llb client package is a go library that helps you to generate the build definition graph. It uses chained methods to make it easy to describe what steps need to be running. Mounts can be added to the execution steps for defining multiple inputs or outputs. To prepare the graph, you just have to call Marshal() on a leaf node that will generate the protobuf definition for everything required to build that node.

Typed Dockerfile parsing

PR

This PR that enables parsing Dockerfiles into typed structures so they can be preprocessed to eliminate unnecessary build stages and reused with different kinds of dispatchers(eg. BuildKit).

The PR had some review and updates in last week. Should be ready to code review soon.

Merged: Long running session & incremental file sending

PR

Incremental context sending PR was merged and is expected to land in v17.07.

This feature experimental feature lets you skip sending the build context to the daemon on repeated builder invocations during development. Currently, this feature requires a CLI flag --stream=true. If this flag is used, one first builder invocation full build context is sent to the daemon. On a second attempt, only the changed files are transferred.

Previous build context is saved in the build cache, and you can see how much space it takes form docker system df. Build cache will be automatically garbage collected and can also be manually cleared with docker prune.

Quality: Dependency interface switch

Move file copying from the daemon to the builder PR was merged.

Proposals for new Dockerfile features that need design feedback:

Add IMPORT/EXPORT commands to Dockerfile

Add DOCKEROS/DOCKERARCH default ARG to Dockerfile

Add support for RUN --mount

DAG image builder

Option to export the hash of the build context (new)

Allow --cache-from=* (new)

Provide advanced .dockeringore use-cases 2

If you are interested in implementing any of them, leave a comment on the specific issues.

Other builder PRs merged last week

Warn/deprecate continuing on empty lines in Dockerfile

Fix behavior of absolute paths in .dockerignore

fix copy —from conflict with force pull

Builder features currently in code-review:

Fix handling of remote "git@" notation

builder: Emit a BuildResult after squashing.

Fix shallow git clone in docker-build

Backlog

Build secrets has not got much traction. If you want this feature to become a reality, please make yourself heard.