diff options
author | Lars Wirzenius <liw@liw.fi> | 2012-09-22 02:07:33 +0100 |
---|---|---|
committer | Lars Wirzenius <liw@liw.fi> | 2012-09-22 02:07:33 +0100 |
commit | ed4ca896a6214b4ef1c07cd8a40b47bac3fbb9ae (patch) | |
tree | 7692b47fa1a611e8bdaf6d40c290f231fbcd215d /jenkinstool | |
parent | c64c3a98cc88a4a0ba577fc4c6527bbbcf76bbf2 (diff) | |
download | jenkinstool-ed4ca896a6214b4ef1c07cd8a40b47bac3fbb9ae.tar.gz |
Trigger one job at a time, stop if a job fails
Diffstat (limited to 'jenkinstool')
-rwxr-xr-x | jenkinstool | 26 |
1 files changed, 23 insertions, 3 deletions
diff --git a/jenkinstool b/jenkinstool index 2ddecad..8c1449b 100755 --- a/jenkinstool +++ b/jenkinstool @@ -22,6 +22,7 @@ import cliapp import json import logging import StringIO +import time from xml.etree import ElementTree as ET import simplejenkinsapi @@ -741,20 +742,39 @@ class JenkinsTool(cliapp.Application): else: jenkins.create_job(job_id, config_xml) - job_ids = set() + job_ids = [] for job_id, config_xml in job_generator.generate_setup_jobs(config): make_it_so(job_id, config_xml) - job_ids.add(job_id) + job_ids.append(job_id) 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.add(job_id) + job_ids.append(job_id) for job_id in jenkins.list_jobs(): if job_id not in job_ids: jenkins.delete_job(job_id) + print 'jobs:', job_ids + + for job_id in job_ids: + print 'running', job_id + prev = latest = jenkins.get_latest_build_number(job_id) + print 'prev:', repr(prev) + jenkins.run_job(job_id) + while latest == prev: + time.sleep(1) + latest = jenkins.get_latest_build_number(job_id) + print 'latest:', repr(latest) + while True: + time.sleep(1) + info = jenkins.get_build_info(job_id, latest) + if info['result'] is not None: + break + if info['result'] != 'SUCCESS': + raise cliapp.AppException('Job %s failed' % job_id) + JenkinsTool(version=simplejenkinsapi.__version__).run() |