通过jenkins-api实现实时构建

后端触发构建

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}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值