Jenkins獲取編譯狀態
阿新 • • 發佈:2018-04-03
方案 lur cas exc als ati star .get 邏輯
背景:在通過python的API調用Jenkins,啟動Jenkins的job任務時,是需要知道Jenkins的編譯狀態,獲取編譯狀態為
status=server.get_build_info(jobname, get_number2)[‘result‘] #jobname,為任務的job名稱,get_number2為編譯版本號
目前是以前項目中截取的代碼,我連接Jenkins是用了兩種方式,因為有一種方式不能進行編譯job,另外一種獲取其他數據有問題,也是一直存在的bug
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,而不通過的就是FAILURE
Jenkins獲取編譯狀態