get last success from jenkins's home page:获取jenkins的job的last success等数据。以及jenkins's api的介绍

问题描述:如图,我想获取jenkins的job的name、last success、last failure 和 last duration等数据

jenkins自身提供一些api,比如:

1)提供编号http://jenkins地址/job/job的名字如master-pipeline/api/json,提供最近的成功的、最近的失败的build的number

2)提供一个build时间戳的api:http://jenkins地址/job/job的名字如master-pipeline/build的编号如444/buildTimestamp

3)查看最近一次成功或者失败的build:http://jenkins地址/job/job的名字如master-pipeline/lastSuccessfulBuild/

如果是查看最近一次失败的话,lastSuccessfulBuild改成lastFailedBuild


但是!!!获取到的时间是:6/20/17 8:52 AM 这种类型的

,而且查了官方文档和google,发现并没有较好的提供我想要的这些数据的api,要不就是太少,要不就是没有last duration


获取所有数据的方法:我直接从主页上获取网页代码,分析之后找到我想要的这些数据,如下面的代码:

get_job_status() 方法传一个job的name,修改jenkins_host成自己的jenkins的地址就可以了

jenkins_host = 'http://webclient-jenkins.eng.vmware.com:8080' # 我的jenkins地址
def get_job_status(job_name):
   job = Job()
   job.name = job_name
   data = urllib2.urlopen(jenkins_host).read() #获取网页的代码

   # \s means whitespace characters and \S means Non-whitespace characters
   pattern = r'<tr[\s\S]*?job_' + job_name \
             + r'[\s\S]*?</td>[\s\S]*?</td>' \
             + r'<td.*?>([\s\S]*?)-[\s\S]*?(#[\s\S]*?)</a></td>' \
             + r'<td.*?>([\s\S]*?)-[\s\S]*?(#[\s\S]*?)</a></td>' \
             + r'<td.*?>([\s\S]*?)</td>' \
             + r'[\s\S]*?</tr>'
   res = re.search(pattern, data) # 使用正则表达式进行搜索

   if res:
      job.last_success = res.group(1).strip() + ' ' + res.group(2).strip()
      job.last_failure = res.group(3).strip() + ' ' + res.group(4).strip()
      job.last_duration = res.group(5).strip()
      job.jenkins_address = jenkins_host
      return job #赋值给job对象,并返回
   else:
      return

效果图:这是获取到数据之后把它显示在自己写的网页上的:


这个网页的地址是:http://apple.eng.vmware.com/#/job


猜你喜欢

转载自blog.csdn.net/qijingpei/article/details/74743146