in ftl/common/cache_runner.py [0:0]
def _build_image_and_push(self, package_name, package_version):
logging.info('building package {name}, version {version}'.format(
name=package_name, version=package_version))
image = None
builder = None
if self._language == PHP:
builder = php_builder.PhaseTwoLayerBuilder(
pkg_descriptor=(package_name, package_version))
elif self._language == PYTHON:
interpreter_builder = python_builder.InterpreterLayerBuilder()
interpreter_builder.BuildLayer()
builder = python_builder.PipfileLayerBuilder(
pkg_descriptor=(package_name, package_version),
wheel_dir=self._setup_pip_and_wheel(),
dep_img_lyr=interpreter_builder)
if not builder:
logging.error('Could not find builder for language {0}'.format(
self._language))
sys.exit(1)
builder.BuildLayer()
# since we only have one layer, just use the builder's image
# itself as the final image
image = builder._img
# TODO(nkubala): we should refactor AppendLayersIntoImage to not
# have to set a base image
# image = ftl_util.AppendLayersIntoImage([builder])
key = builder.GetCacheKey()
tag = self._tag(key)
with docker_session.Push(
tag, self._creds, self._transport, threads=2) as session:
session.upload(image)
self._mappings['%s:%s' % (package_name, package_version)] = key