快速獲取Jenkins上build
阿新 • • 發佈:2017-08-02
egg 得到 ret courier 多公司 服務 big -s tun
很多公司都會做CI持續集成,一般CI都用Jenkins.如何快速獲取Jenkins 上的build?
一般公司都會有CI服務器,各個項目build都在上面觸發或生成。
如何快速獲取CI服務器上最新的build呢?
有的人可能想到爬蟲,當然爬蟲可以做到,但是比較復雜,還要判斷最新的build是否是success.
其實不用這麽麻煩,Jenkins提供了一些接口,直接用接口就能獲得build相關的信息。例如:
http://$host/job/$jobname/lastSuccessfulBuild/api/json
- lastBuild,
- lastStableBuild,
- lastSuccessfulBuild,
- lastFailedBuild,
- lastUnstableBuild,
- lastUnsuccessfulBuild,
- lastCompletedBuild
用得較多的是lastSuccessfulBuild, 當然也可以獲取失敗的build來分析構建失敗的原因。
舉個例子,我們android 在CI 上build 並且archive APK 文件。
那麽我們就可以很輕松的得到想要的build.
如果我用UI的automation test來做BVT,那麽代碼可以這樣寫
from globals import * import requests, re, os import shutil from ptest.plogger import preporter JENKINS_HOST_ANDROID = "XXX" current_dir = os.path.split(os.path.realpath(__file__))[0] apk_path = current_dir + "/apk/" build_name = "XXX" class Jenkins: def __init__(self): self.Jenkins_build_url = JENKINS_HOST_ANDROID + "/job/{0}/lastSuccessfulBuild/api/json".format( current_device_info.jenkins_job) def get_build_url(self): preporter.info(self.Jenkins_build_url) builds_urls = requests.get(self.Jenkins_build_url) builds = [each_build[‘relativePath‘] for each_build in builds_urls.json()[‘artifacts‘]] preporter.info(builds) current_build = re.findall( "/build/outputs/apk/{}-{}-{}.*?.apk".format(build_name, current_device_info.device_env, current_device_info.build_type), ‘,‘.join(builds)) preporter.info(current_build) if current_build: apk_url = builds_urls.json()[‘url‘] + "artifact/" + current_build[0] apk_name = current_build[0].split("/")[-1] preporter.info(apk_url) preporter.info(apk_name) return apk_url, apk_name else: preporter.info("cannot find the build ") def check_folder(sef, folder): if os.path.exists(folder): shutil.rmtree(folder) os.makedirs(folder) def download_file(self, url, path): file = requests.get(url).content with open(path, ‘wb‘) as f: f.write(file) def download_build(self): apk_url, apk_name = self.get_build_url() self.check_folder(apk_path) self.download_file(apk_url, apk_path + apk_name)
很容易就獲取的最新的daily build.
結合build,就可以做其它的自動化測試了。
更多精彩,請關註微信公眾號: python愛好部落
?
快速獲取Jenkins上build