def _build_image_and_push()

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