From ed4ca896a6214b4ef1c07cd8a40b47bac3fbb9ae Mon Sep 17 00:00:00 2001 From: Lars Wirzenius Date: Sat, 22 Sep 2012 02:07:33 +0100 Subject: Trigger one job at a time, stop if a job fails --- jenkinstool | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'jenkinstool') 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() -- cgit v1.2.1