HomePhabricator

Unify `copies` and `artifacts` configuration

Authored by dduvall on Dec 14 2018, 9:19 PM.

Description

Unify copies and artifacts configuration

Refactored copies configuration to allow for greater control over when
and which both local build context files and variant artifacts are
copied into the target image.

The new configuration introduces a "local" keyword to signify when a
copies entry should apply to the files from the local build context as
opposed to files from another variant's image during a multi-stage
build.

variants:
  build:
    copies:
     - from: local
       source: ./src
       destination: .

Note that with this change, the user must now explicitly define whether
_any_ files should be copied in from the local build context. None will
be copied in by default.

To help keep configurations succinct, especially considering this new
requirement, and to approximate the old copies: variant, a shorthand
format and sane defaults for source and destination (depending whether
from is "local" or a variant name) were implemented.

variants:
  build:
    copies: [local]
  development:
    copies:
     - from: build
     - from: local
       source: ./config.dev.yaml
       destination: ./config.yaml

The shorthand:

copies: [ref, ...]
# is equivalent to
copies: [{ from: ref }, ...]

And the following defaults are used when no source and destination
are specified.

copies:
 - from: local
 # defaults to
 - from: local
   source: .
   destination: .

copies:
 - from: variant
 # defaults to two entries
 - from: variant
   source: /srv/app # the lives.in dir
   destination: /srv/app
 - from: variant
   source: /opt/local # the shared lib dir
   destination: /opt/local

Bug: T211625
Change-Id: I4c4217905afc0762b6bd66ed594d43cc0486e3e2

Details

Committed
dduvallJan 28 2019, 11:25 PM
Parents
rGBLBR20e9b739e56f: Bump version number
Branches
Unknown
Tags
Unknown
References
refs/changes/40/485340/4
ChangeId
I4c4217905afc0762b6bd66ed594d43cc0486e3e2