python-jenkins-developers team mailing list archive
-
python-jenkins-developers team
-
Mailing list archive
-
Message #00035
[Merge] lp:~kenrumer/python-jenkins/build_info into lp:python-jenkins
Ken Rumer has proposed merging lp:~kenrumer/python-jenkins/build_info into lp:python-jenkins.
Requested reviews:
Python Jenkins Developers (python-jenkins-developers)
For more details, see:
https://code.launchpad.net/~kenrumer/python-jenkins/build_info/+merge/95243
Try this again.
Gets build information from Jenkins. Can use to get the status of a build. Loop until the build is complete, return the artifact URL(s).
Example usage:
import jenkins
import time
j = jenkins.Jenkins('http://'+kwargs['ci_host']+':'+kwargs['ci_port'], kwargs['ci_username'], kwargs['ci_password'])
next_build_number = j.get_job_info('build_'+kwargs['vcs_server_type'])['nextBuildNumber']
--
https://code.launchpad.net/~kenrumer/python-jenkins/build_info/+merge/95243
Your team Python Jenkins Developers is requested to review the proposed merge of lp:~kenrumer/python-jenkins/build_info into lp:python-jenkins.
=== modified file 'doc/index.rst'
--- doc/index.rst 2011-09-04 00:24:56 +0000
+++ doc/index.rst 2012-02-29 19:20:27 +0000
@@ -115,6 +115,14 @@
:param name: Name of Jenkins job, ``str``
+ .. method:: get_build_info(name, number)
+
+ Get build information dictionary.
+
+ :param name: Job name, ``str``
+ :param name: Job number, ``str``
+ :returns: dictionary of build information
+
.. method:: get_job_config(name) -> str
Get configuration XML of existing Jenkins job.
=== modified file 'jenkins/__init__.py'
--- jenkins/__init__.py 2011-09-04 00:24:56 +0000
+++ jenkins/__init__.py 2012-02-29 19:20:27 +0000
@@ -76,6 +76,7 @@
COPY_JOB = 'createItem?name=%(to_name)s&mode=copy&from=%(from_name)s'
BUILD_JOB = 'job/%(name)s/build'
BUILD_WITH_PARAMS_JOB = 'job/%(name)s/buildWithParameters'
+BUILD_INFO = 'job/%(name)s/%(number)d/api/json?depth=0'
CREATE_NODE = 'computer/doCreateItem?%s'
@@ -188,6 +189,18 @@
if e.code in [401, 403, 500]:
raise JenkinsException('Error in request. Possibly authentication failed [%s]'%(e.code))
# right now I'm getting 302 infinites on a successful delete
+
+ def get_build_info(self, name, number):
+ try:
+ response = self.jenkins_open(urllib2.Request(self.server + BUILD_INFO%locals()))
+ if response:
+ return json.loads(response)
+ else:
+ raise JenkinsException('job[!s] number[!d] does not exist'.format(name, number))
+ except urllib2.HTTPError:
+ raise JenkinsException('job[!s] number[!d] does not exist'.format(name, number))
+ except ValueError:
+ raise JenkinsException("Could not parse JSON info for job[!s] number[!d]".format(name, number))
def get_queue_info(self):
'''