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