def trigger_if_necessary(da, pkg, rosdistro, jenkins_instance, missing_by_arch): if da[1] != 'SRPMS' and da in missing_by_arch and pkg in missing_by_arch[(da[0], 'SRPMS')]: print (" Skipping trigger of binaryrpm job for package '%s' on arch '%s' as the sourcerpm job will trigger them automatically" % (pkg, '_'.join(da))) return False if da[1] == 'SRPMS': job_name = '%s_sourcerpm_%s' % (redhatify_package_name(rosdistro, pkg), da[0]) else: job_name = '%s_binaryrpm_%s' % (redhatify_package_name(rosdistro, pkg), '_'.join(da)) job_info = jenkins_instance.get_job_info(job_name) if 'color' in job_info and 'anime' in job_info['color']: print (" Skipping trigger of job %s because it's already running" % job_name) return False if 'inQueue' in job_info and job_info['inQueue']: print (" Skipping trigger of job '%s' because it's already queued" % job_name) return False if da[1] != 'SRPMS' and 'upstreamProjects' in job_info: upstream = job_info['upstreamProjects'] for p in missing_by_arch[da]: p_name = '%s_binaryrpm_%s' % (redhatify_package_name(rosdistro, p), '_'.join(da)) for u in upstream: if u['name'] == p_name: print (" Skipping trigger of job '%s' because the upstream job '%s' is also triggered" % (job_name, p_name)) return False print ("Triggering '%s'" % (job_name)) #return jenkins_instance.build_job(job_name) # replicate internal implementation of Jenkins.build_job() import urllib2 if not jenkins_instance.job_exists(job_name): raise jenkins.JenkinsException('no such job[%s]' % (job_name)) # pass parameters to create a POST request instead of GET return jenkins_instance.jenkins_open(urllib2.Request(jenkins_instance.build_job_url(job_name), ''))
stacks = dependency_walker_fuerte.get_stacks(workspace, rd._repoinfo, args.rosdistro, skip_update=args.skip_update) dependencies = dependency_walker_fuerte.get_dependencies(args.rosdistro, stacks) packages = stacks # even for wet_only the dry packages need to be consider, else they are not added as downstream dependencies for the wet jobs stack_depends, dry_maintainers = release_jobs.dry_get_stack_dependencies(args.rosdistro) dry_jobgraph = release_jobs.dry_generate_jobgraph(args.rosdistro, dependencies, stack_depends) combined_jobgraph = {} for k, v in dependencies.iteritems(): combined_jobgraph[k] = v for k, v in dry_jobgraph.iteritems(): combined_jobgraph[k] = v # setup a job triggered by all other rpmjobs combined_jobgraph[redhatify_package_name(args.rosdistro, 'metapackages')] = combined_jobgraph.keys() results_map = doit( rd, args.distros, args.arches, args.fqdn, combined_jobgraph, rosdistro=args.rosdistro, packages=packages, dry_maintainers=dry_maintainers, commit=args.commit, delete_extra_jobs=args.delete, whitelist_repos=args.repos) if not args.commit: