From 7f5c956ec03dc9e295aa3e681b4e73d675cf8dee Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 22 Sep 2012 14:09:45 +0100 Subject: Allow user to specify which project's pipeline to run --- jenkinstool | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) (limited to 'jenkinstool') diff --git a/jenkinstool b/jenkinstool index d348aaf..1ba1022 100755 --- a/jenkinstool +++ b/jenkinstool @@ -720,10 +720,11 @@ class JenkinsTool(cliapp.Application): '''Update Jenkmins with jobs based specification, then run them.''' self.settings.require('jenkins-host') + if len(args) == 0: return - if len(args) > 1: - raise cliapp.AppException('Can only handle one file') + filename = args[0] + project_names = set(args[1:]) jenkins = simplejenkinsapi.Jenkins(self.jenkins_url) job_generator = JobGenerator(self.settings['pretend-jobs'], @@ -731,7 +732,7 @@ class JenkinsTool(cliapp.Application): self.artifacts_url, self.settings['jenkins-host']) - with open(args[0]) as f: + with open(filename) as f: try: config = json.load(f) except ValueError, e: @@ -744,17 +745,31 @@ class JenkinsTool(cliapp.Application): jenkins.create_job(job_id, config_xml) job_ids = [] + all_jobs = [] for job_id, config_xml in job_generator.generate_setup_jobs(config): make_it_so(job_id, config_xml) - job_ids.append(job_id) + all_jobs.append(job_id) + if not project_names: + job_ids.append(job_id) + + found_projects = set() for project in simplejenkinsapi.order(config['projects']): pairs = job_generator.generate_project(config, project) for job_id, config_xml in pairs: make_it_so(job_id, config_xml) - job_ids.append(job_id) + all_jobs.append(job_id) + if project['name'] in project_names: + job_ids.append(job_id) + found_projects.add(project['name']) + + if project_names: + not_found = project_names.difference(found_projects) + if not_found: + raise cliapp.AppException( + 'Could not find projects %s' % ' '.join(not_found)) for job_id in jenkins.list_jobs(): - if job_id not in job_ids: + if job_id not in all_jobs: jenkins.delete_job(job_id) ts = ttystatus.TerminalStatus(period=0) -- cgit v1.2.1