Jenkins獲取編譯狀態

背景:在經過python的API調用Jenkins,啓動Jenkins的job任務時,是須要知道Jenkins的編譯狀態,獲取編譯狀態爲python

status=server.get_build_info(jobname, get_number2)['result'] #jobname,爲任務的job名稱,get_number2爲編譯版本號

 目前是之前項目中截取的代碼,我鏈接Jenkins是用了兩種方式,由於有一種方式不能進行編譯job,另一種獲取其餘數據有問題,也是一直存在的bugmysql

def connet_jenkinsjob(self):  #鏈接Jenkins
    server = Jenkins(jenkins_url, username=jenkins_user, password=jenkins_password,
                     requester=CrumbRequester(username=jenkins_user, password=jenkins_password,
                                              baseurl=jenkins_url))
    return server

def stats_jenkinsjob(self):#鏈接Jenkins
    server = jenkins.Jenkins(jenkins_url, username=jenkins_user, password=jenkins_password)
    return server
def bulids_job(self):
    global  get_number2
    server = self.stats_jenkinsjob()
    server_build = self.connet_jenkinsjob()
     server_build.build_job(jobname, params=param_dict)  # 待觀察這個問題有解決方案不  進行項目的編譯
                sql = "update auto_caseList  SET runStart='運行中' WHERE id= '" + key + "'""
                try:
                   get_number2 = server.get_job_info(jobname)['nextBuildNumber'] #獲取下一個編譯版本號
                   get_number = server.get_job_info(jobname)['lastBuild']['number'] #獲取編譯的版本號
                except Exception, e:
                    print "首次建立因此獲取不到編譯的版本號", e
                    self.mysql_uptate_operation(sql)
                else:
                    get_buildstats = server.get_build_info(jobname, get_number)['building']#獲取編譯的狀態,是否在編譯
                    if get_buildstats == False:
                        print "編譯中,數據狀態進行更新"
                    else:
                        print "沒有編譯"
                finally:
                    sleep(23) #必定要加,在啓動編譯後,不能立刻獲取編譯狀態,否則一直是編譯成功,若是Jenkins編譯失敗是會在20-23S之間
                    status=server.get_build_info(jobname, get_number2)['result']#獲取編譯的狀態,編譯是否成功,若是不成功,就會返回FAILURE,編譯成功是返回NONE
                    if status == "FAILURE":
                        print "構建出錯: %s | 構建項目編號:%s" % (jobname, get_number2)
                        sql = "update auto_caseList  SET runStart='構建出錯' WHERE id= '" + key + "'""
                        self.mysql_uptate_operation(sql)
                    else:
                        print "構建成功:%s | 構建項目編號:%s" % (jobname, get_number2)

  

我這裏的邏輯是獲取到編譯狀態後,在等23s後查看編譯是否成功,若是編譯成功,編譯完成會是None,而不經過的就是FAILUREsql

相關文章
相關標籤/搜索