Example #1
0
    def __init__(self, builder, config):
        self.config = config
        self.builder = builder
        self.distro = "osx"

        self.source_url = builder.source_url
        self.source_type = builder.source_type
        self.branch = builder.build.branch
        self.folder = builder.folder

        self.config['version'] = 'nightly'
        self.config['release'] = '1'
        self.config['name'] = 'ring'

        job_data = {
            'distro': self.distro,
            'username': self.builder.build.username,
            'project_name': self.builder.build.project_name,
            'build_id': self.builder.build.id_,
        }
        self.job = Job(job_data)
        self.job.create()
        self.folder_output = self.job.get_folder_output()

        self.job_tmp_folder = self.job.get_folder_tmp()

        if not os.path.exists(self.folder_output):
            os.makedirs(self.folder_output)
        if not os.path.exists(self.job_tmp_folder):
            os.makedirs(self.job_tmp_folder)

        self.logger = get_logger_job(self.job)
Example #2
0
    def __init__(self, builder, config):

        self.config = config

        self.builder = builder
        self.distro = supported_distros[config['distro']]
        self.source_url = builder.source_url
        self.source_type = builder.source_type
        self.cli = builder.cli
        self.folder = builder.folder

        job_data = {
            'distro': config['distro'],
            'username': self.builder.build.username,
            'project_name': self.builder.build.project_name,
            'build_id': self.builder.build.id_,
        }
        self.job = Job(job_data)
        self.job.create()
        self.folder_output = self.job.get_folder_output()

        self.job_tmp_folder = self.job.get_folder_tmp()

        if not os.path.exists(self.folder_output):
            os.makedirs(self.folder_output)
        if not os.path.exists(self.job_tmp_folder):
            os.makedirs(self.job_tmp_folder)

        self.logger = get_logger_job(self.job)

        self.container_tag = "joulupukki:" + config['distro'].replace(":", "_")
        self.container = None
Example #3
0
    def dispatch(self, packer_conf, root_folder, global_conf=None):

        carrier = Carrier(pecan.conf.rabbit_server, pecan.conf.rabbit_port,
                          pecan.conf.rabbit_user, pecan.conf.rabbit_password,
                          pecan.conf.rabbit_vhost, pecan.conf.rabbit_db)
        # carrier.declare_queue('docker.queue')
        for distro_name, build_conf in packer_conf.items():
            if not hasattr(self.build, "forced_distro") or (
                    self.build.forced_distro == distro_name
                    or not self.build.forced_distro):
                if 'type' not in build_conf:
                    # Default type is docker to keep backward compat
                    build_conf['type'] = 'docker'

                # if not build_conf['type'] == 'docker':
                queue = "%s.queue" % build_conf['type']
                carrier.declare_queue(queue)

                # Add global external repos
                if not build_conf.get('repos'):
                    build_conf['repos'] = {}
                if not build_conf.get('repos').get('rpm'):
                    build_conf['repos']['rpm'] = []
                if global_conf:
                    build_conf['repos']['rpm'] += global_conf['repos']['rpm']
                #
                build_conf['distro'] = distro_name
                build_conf['branch'] = self.branch
                build_conf['root_folder'] = root_folder
                job_data = {
                    'distro': distro_name,
                    'username': self.build.username,
                    'project_name': self.build.project_name,
                    'build_id': self.build.id_,
                }
                job = Job(job_data)
                job.create()
                message = {
                    'distro_name': distro_name,
                    'build_conf': build_conf,
                    'root_folder': root_folder,
                    'log_path': get_logger_path(self.build),
                    'id_': self.id_,
                    'job_id': job.id_,
                    'build': self.build.dumps(),
                    'build_path': self.build.get_folder_path()
                }
                if not carrier.send_message(message, queue):
                    self.logger.error("Can't post message to rabbitmq")
                else:
                    self.logger.info("Posted build to %s" % queue)
                    self.build.inc_job_count()
Example #4
0
    def get_jobs(self):
        """ return all build ids """
        jobs_ids = [
            Job(x) for x in mongo.jobs.find({
                "username": self.username,
                "project_name": self.project_name,
                "build_id": int(self.id_)
            })
        ]

        if jobs_ids:
            return sorted(jobs_ids, key=lambda x: x.id_)
        return []