summaryrefslogtreecommitdiff
path: root/jenkinstool
diff options
context:
space:
mode:
authorLars Wirzenius <liw@liw.fi>2012-09-22 02:07:33 +0100
committerLars Wirzenius <liw@liw.fi>2012-09-22 02:07:33 +0100
commited4ca896a6214b4ef1c07cd8a40b47bac3fbb9ae (patch)
tree7692b47fa1a611e8bdaf6d40c290f231fbcd215d /jenkinstool
parentc64c3a98cc88a4a0ba577fc4c6527bbbcf76bbf2 (diff)
downloadjenkinstool-ed4ca896a6214b4ef1c07cd8a40b47bac3fbb9ae.tar.gz
Trigger one job at a time, stop if a job fails
Diffstat (limited to 'jenkinstool')
-rwxr-xr-xjenkinstool26
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()