目的:通過訪問Jenkins得到各個項目的構(gòu)建狀態(tài)锡垄。
jenkins是一款持續(xù)集成的工具趁俊,插件眾多,配置簡單,跨平臺括享。
使用python和jenkins的依賴包
pip install python-jenkins
-
jenkins連接配置
import jenkins jenkins_url = 'http://ip:port' jenkins_user = '' jenkins_passwd = '' jen = jenkins.Jenkins(jenkins_url, username=jenkins_user, password=jenkins_passwd) #實例化jenkins對象,然后使用jenkins對象做各種操作珍促。
查詢某job_name的最后一次構(gòu)建信息
lastBuild_Number = jen.get_job_info(job_name)['lastBuild']['number']
lastBuild_url = jen.get_build_info(job_name, lastBuild_Number)['url']# 最后一次build號
times = jen.get_build_info(job_name, lastBuild_Number)['timestamp']# build的日期
result = jen.get_build_info(job_name, lastBuild_Number)['result']
得到項目scm是git還是svn
job_info_scm = jen.get_job_info(job_name)['scm']['_class']
#{'_class': 'hudson.plugins.git.GitSCM'}
if job_info_scm.find('git') != -1:
pci.pro_scm = 'git'
else:
pci.pro_scm = 'svn'
根據(jù)job_name 和 build_number更新構(gòu)建狀態(tài)
times = jen.get_build_info(job_name, build_number)['timestamp']
# build的日期
result = jen.get_build_info(job_name, build_number)['result']
獲取jenkins中已有構(gòu)建的tag信息
默認情況下是拿不到tag的信息铃辖,需修改jenkins的init.py 中方法
def get_build_info(self, name, number, depth=2):
#因我們只對構(gòu)建成功的打tag
if result == 'SUCCESS':
if pci.pro_scm == 'git':
if jen.get_build_info(job_name, build_number)['actions'][2]['tags']:
tags = jen.get_build_info(job_name, build_number)['actions'][2]['tags'][0]['tag']
pci_build.build_tags = tags
logger.info('update_pci_build_by_jenkins' + 'job_name' + job_name + 'tags:' + tags)
else:
if jen.get_build_info(job_name, build_number)['actions'][1]['tags']:
tags = jen.get_build_info(job_name, build_number)['actions'][1]['tags'][0]['url']
pci_build.build_tags = tags
logger.info('update_pci_build_by_jenkins' + 'job_name' + job_name + 'tags:' + tags)