后端触发构建
class Jenkins_API(object):
def __init__(self):
self.url=APP_ENV.jenkins_url
self.user=APP_ENV.jenkins_user
self.passwd=APP_ENV.jenkins_passwd
print (self.url)
print (self.user)
print (self.passwd)
self.server = jenkins.Jenkins(self.url,self.user,self.passwd)
def build_job(self,job_name,parm=None):
self.server.build_job(job_name,parm)
lastbuildNumber = self.server.get_job_info(job_name)['nextBuildNumber']
print (lastbuildNumber)
return {'job_name':job_name,'lastbuild_name':lastbuildNumber}
查询构建进度,实时日志等
def get_build_state(self,job_name,build_number):
'''
:param name: job_name
:param build_number: 最后1次构建序号
:return: 最后1次构建状态 pending,success,false,building
'''
build_state = None
#now_timestamp = int(round(time.time() * 1000)) # 当前时间戳
# 获取正在排队构建的job队列 即pending状态中的所有job,如果没有 pending状态的job即返回1个空列表
queue_info = self.server.get_queue_info()
console_output='init------'
building_process=''
if queue_info:
print ('11')
print (queue_info)
for queue_job_info in queue_info:
#if queue_job_info['task']['name'] == job_name:
if queue_job_info:
# msg = 'pending期,排队构建中'
build_state = 'pending'
print (11)
return {'build_status': build_state, 'building_process': building_process, 'console_output': console_output}
else:
console_output=self.server.get_build_console_output(job_name,build_number)
###计算构建进度
job_info = self.server.get_build_info(job_name, build_number)
build_state = job_info[
'result'] # 构建结束 SUCCESS|FAILURE<class 'str'> ABORTED <class 'str'> 构建中None None <class 'NoneType'>
if build_state == None:
build_state='build'
jobstart_time = job_info['timestamp'] # 任务启动时间
now_timestamp = int(round(time.time() * 1000))
estimatedDuration = job_info['estimatedDuration'] # 上次构建时间
print (estimatedDuration)
building_process = int(((now_timestamp - jobstart_time) / estimatedDuration) * 100)
if building_process >= 100:
print (building_process)
building_process=100
return {'build_status':build_state,'building_process':building_process,'console_output':console_output}