import jenkins
import time
def LoginJenkins(url, username=None, password=None):
return jenkins.Jenkins(url,username,password)
class JobInfo(object):
def __init__(self,InstanceJenkins,job_name):
self.detail_Dict = InstanceJenkins.get_job_info(job_name)
# 获取工程嘚描述
def get_description(self):
return self.detail_Dict.get('description',"")
#获取工程的url
def get_job_url(self):
return self.detail_Dict.get('url','')
# 检查工程时候被禁用
def get_is_able(self):
return self.detail_Dict.get('buildable',False)
# 获取工程的所有构建号
def get_builds_number_list(self):
l = []
if 'builds' in self.detail_Dict.keys():
for build_info_dict in self.detail_Dict.get('builds',[]):
if 'number' in build_info_dict.keys():
l.append(build_info_dict.get('number',0))
return l
# 或健康分数,不太准确,随时间会变化
def get_health_score(self):
l = []
if 'healthReport' in self.detail_Dict.keys():
for health_dict in self.detail_Dict.get('healthReport',[]):
if 'score' in health_dict.keys():
l.append(health_dict.get('score',0))
return l
def formal1(self,name,sub_name):
if name in self.detail_Dict.keys():
if sub_name in self.detail_Dict.get(name,{}) :
return self.detail_Dict.get(name,{}).get(sub_name,0)
# 第一次构建号
def get_firstBuild_number(self):
return self.formal1( 'firstBuild', 'number')
# 最后一次构建号
def get_lastBuild_number(self):
return self.formal1( 'lastBuild', 'number')
# 最后一次,完成的构建,如果10还在构建,则9就是最后一次完成的构建
def get_lastCompletedBuild_number(self):
return self.formal1( 'lastCompletedBuild', 'number')
# 最后一次失败的构建号
def get_lastFailedBuild_number(self):
return self.formal1('lastFailedBuild', 'number')
# 最后一次成功的构建号
def get_lastSuccessfulBuild_number(self):
return self.formal1('lastSuccessfulBuild', 'number')
# 下一次构建号
def get_nextBuildNumber(self):
return self.detail_Dict.get('nextBuildNumber',0)
# 是否有排队的构建
def get_inQueue(self):
return self.detail_Dict.get('inQueue',False)
# 或排队的项目,id不太准,queueItem
# 获取整个工程的默认参数
# {'git_url': 'http://github.com', 'tag': '09142336'},没有默认参数,值为''
def get_all_params(self):
params_dict = {}
if 'property' in self.detail_Dict.keys():
for items_dict in self.detail_Dict.get('property',[]):
if '_class' in items_dict.keys() and items_dict.get('_class','').find('Parameters') != -1 :
params_list = items_dict.get('parameterDefinitions',[])
for params_dict_sub in params_list:
params_dict[params_dict_sub.get('name','')] = params_dict_sub.\
get('defaultParameterValue','').get('value','')
return params_dict
# 获取整个工程的某一个参数
def get_one_params(self,param):
if 'property' in self.detail_Dict.keys():
for items_dict in self.detail_Dict.get('property',[]):
if '_class' in items_dict.keys() and items_dict.get('_class','').find('Parameters') != -1 :
params_list = items_dict.get('parameterDefinitions',[])
for params_dict_sub in params_list:
if param == params_dict_sub.get('name',''):
return params_dict_sub.get('defaultParameterValue','').get('value','')
if __name__ == '__main__' :
InstanceJenkins = LoginJenkins("http://10.0.0.40:8080/", "admin", "xxxxx")
one_job = JobInfo(InstanceJenkins,'test_job_name')
print(one_job.get_lastFailedBuild_number())
jenkins获取job_info
最新推荐文章于 2024-05-14 11:00:23 发布