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)
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
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()
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 []