Ejemplo n.º 1
0
    def build_prepare(self):
        """
        :return: (True, image_name) or (False, None)
        """
        self._prepare_act()

        if self.build.prepare is None:
            error("build.prepare not found in lain.yaml.")
            exit(1)

        if (not mydocker.exist(self.img_names['prepare'])):
            params = {
                'base': self.build.base,
                'workdir': self.workdir,
                'copy_list': ['.'],
                'scripts': self.build.prepare.script,
            }
            name = self.img_builders['prepare'](context=self.ctx,
                                                params=params,
                                                build_args=[])
            if name is None:
                return (False, None)
            if mydocker.push(self.img_names['prepare']) != 0:
                warn("FAILED: docker push {}".format(
                    self.img_names['prepare']))
            return (True, name)
        else:
            return (True, self.img_names['prepare'])
Ejemplo n.º 2
0
    def build_base(self, use_prepare=False):
        """
        :return: (True, image_name) or (False, None)
        """
        self._prepare_act()

        # image prepare
        if not (mydocker.exist(self.img_names['prepare']) and use_prepare):
            if not self.build_prepare()[0]:
                return (False, None)

        # image build
        params = {
            'base': self.img_names['prepare'],
            'workdir': self.workdir,
            'copy_list': ['.'],
            'scripts': self.build.script,
            'build_args': [arg.split('=')[0] for arg in self.build.build_arg]
        }
        name = self.img_builders['build'](context=self.ctx,
                                          params=params,
                                          build_args=self.build.build_arg)
        if name is None:
            return (False, None)
        return (True, name)
Ejemplo n.º 3
0
    def build_base(self, use_prepare=False):
        """
        :return: (True, image_name) or (False, None)
        """
        self._prepare_act()

        base = self.build.base
        # image prepare
        if self.build.prepare is not None and use_prepare:
            base = self.img_names['prepare']
            if not mydocker.exist(self.img_names['prepare']):
                if not self.build_prepare()[0]:
                    return (False, None)

        if self.build.volumes is not None:
            return self.build_base_with_volumes(base)

        # image build
        params = {
            'base': base,
            'workdir': self.workdir,
            'copy_list': ['.'],
            'scripts': self.build.script,
            'build_args': [arg.split('=')[0] for arg in self.build.build_arg]
        }
        name = self.img_builders['build'](context=self.ctx, params=params, build_args=self.build.build_arg)
        if name is None:
            return (False, None)
        return (True, name)
Ejemplo n.º 4
0
    def build_prepare(self):
        """
        :return: (True, image_name) or (False, None)
        """
        self._prepare_act()

        if self.build.prepare is None:
            error("build.prepare not found in lain.yaml.")
            exit(1)

        if (not mydocker.exist(self.img_names['prepare'])):
            params = {
                'base': self.build.base,
                'workdir': self.workdir,
                'copy_list': ['.'],
                'scripts': self.build.prepare.script,
            }
            name = self.img_builders['prepare'](
                context=self.ctx, params=params, build_args=[])
            if name is None:
                return (False, None)
            if mydocker.push(self.img_names['prepare']) != 0:
                warn("FAILED: docker push {}".format(
                    self.img_names['prepare']))
            return (True, name)
        else:
            return (True, self.img_names['prepare'])
Ejemplo n.º 5
0
    def update_prepare(self):
        """
        :return: (True, image_name) or (False, None)
        """
        self._prepare_act()

        if self.build.prepare is None:
            error("build.prepare not found in lain.yaml.")
            exit(1)

        # no existed shared prepare
        if (not mydocker.exist(self.img_names['prepare'])):
            params = {
                'base': self.build.base,
                'workdir': self.workdir,
                'copy_list': ['.'],
                'scripts': self.build.prepare.script,
            }
            name = self.img_builders['prepare'](context=self.ctx,
                                                params=params,
                                                build_args=[])
            if name is None:
                return (False, None)
            if mydocker.push(self.img_names['prepare']) != 0:
                warn("FAILED: docker push {}".format(
                    self.img_names['prepare']))
            return (True, name)
        else:
            params = {
                'base': self.img_names['prepare'],
                'workdir': self.workdir,
                'copy_list': ['.'],
                'scripts': self.build.prepare.script,
            }
            new_prepare_image_name = self._gen_prepare_auto_version_image_name(
            )
            if self.build.prepare.version is not None:
                new_prepare_image_name = self.gen_prepare_shared_image_name()
            name = self.prepare_updater(name=new_prepare_image_name,
                                        context=self.ctx,
                                        params=params,
                                        build_args=[])
            if name is None:
                return (False, None)
            if mydocker.push(name) != 0:
                warn("FAILED: docker push {}".format(name))

            return (True, name)
Ejemplo n.º 6
0
    def update_prepare(self):
        """
        :return: (True, image_name) or (False, None)
        """
        self._prepare_act()

        if self.build.prepare is None:
            error("build.prepare not found in lain.yaml.")
            exit(1)

        # no existed shared prepare
        if (not mydocker.exist(self.img_names['prepare'])):
            params = {
                'base': self.build.base,
                'workdir': self.workdir,
                'copy_list': ['.'],
                'scripts': self.build.prepare.script,
            }
            name = self.img_builders['prepare'](
                context=self.ctx, params=params, build_args=[])
            if name is None:
                return (False, None)
            if mydocker.push(self.img_names['prepare']) != 0:
                warn("FAILED: docker push {}".format(
                    self.img_names['prepare']))
            return (True, name)
        else:
            params = {
                'base': self.img_names['prepare'],
                'workdir': self.workdir,
                'copy_list': ['.'],
                'scripts': self.build.prepare.script,
            }
            new_prepare_image_name = self._gen_prepare_auto_version_image_name()
            if self.build.prepare.version is not None:
                new_prepare_image_name = self.gen_prepare_shared_image_name()
            name = self.prepare_updater(
                name=new_prepare_image_name,
                context=self.ctx, params=params, build_args=[])
            if name is None:
                return (False, None)
            if mydocker.push(name) != 0:
                warn("FAILED: docker push {}".format(name))

            return (True, name)
Ejemplo n.º 7
0
    def update_prepare(self):
        """
        :return: (True, image_name) or (False, None)
        """
        self._prepare_act()

        # no existed shared prepare
        if (not mydocker.exist(self.img_names['prepare'])):
            params = {
                'base': self.build.base,
                'workdir': self.workdir,
                'copy_list': ['.'],
                'scripts': self.build.prepare.script
            }
            name = self.img_builders['prepare'](context=self.ctx,
                                                params=params)
            if name is None:
                return (False, None)
            if mydocker.push(self.img_names['prepare']) != 0:
                warn("FAILED: docker push {}".format(
                    self.img_names['prepare']))
            return (True, name)
        else:
            params = {
                'base': self.img_names['prepare'],
                'workdir': self.workdir,
                'copy_list': ['.'],
                'scripts': self.build.prepare.script
            }
            name = self.prepare_updater(
                name=self.gen_prepare_shared_image_name(),
                context=self.ctx,
                params=params)
            if name is None:
                return (False, None)
            if mydocker.push(name) != 0:
                warn("FAILED: docker push {}".format(name))

            return (True, name)