Page MenuHomePhabricator

Smarter copies/sharedvolume/default behavior

Authored by dduvall on Sep 6 2017, 12:43 AM.


Maniphest Tasks
T174623: Ensure application files are not copied for final multi-stage images
Group Reviewers
rGBLBR62066296380d: Smarter copies/sharedvolume/default behavior
Patch without arc
git checkout -b D769 && curl -L | git apply

Defined new abstract build.Volume and corresponding
docker.DockerVolume instructions.

Refactored compilation of main COPY or VOLUME instruction for
application files to use the new instructions and moved injection of
these instructions out of the compiler and into VariantConfig. The
latter can be smarter about the following cases:

  1. When copies is set, simply depend on artifacts for the application files and do not copy anything from the build host.
  2. When sharedvolume is true, inject a build.Volume instruction for the application working directory.
  3. When neither of the above are set, copy application files from the host.

Fixes T174623
Depends on D768

Test Plan

Run go test ./.... Run blubber blubber.example.yaml production and ensure:

  1. The prep stage has a COPY . . instruction.
  2. The final stage has no COPY . . instruction, only COPY --from=prep instructions.

Diff Detail

rGBLBR Blubber
Automatic diff as part of commit; lint not applicable.
Automatic diff as part of commit; unit tests not applicable.

Event Timeline

dduvall created this revision.Sep 6 2017, 12:43 AM
Restricted Application added a reviewer: mmodell. · View Herald TranscriptSep 6 2017, 12:43 AM
Restricted Application added a reviewer: Release-Engineering-Team. · View Herald Transcript
Restricted Application added a project: Release-Engineering-Team. · View Herald Transcript
mobrovac accepted this revision.Sep 7 2017, 9:00 AM
This revision is now accepted and ready to land.Sep 7 2017, 9:00 AM
thcipriani accepted this revision.Sep 7 2017, 3:35 PM
This revision was automatically updated to reflect the committed changes.