快速獲取Jenkins上build

2021-08-04 18:33:05 字數 2396 閱讀 3429

很多公司都會做ci持續整合,一般ci都用jenkins.如何快速獲取jenkins 上的build?

一般公司都會有ci伺服器,各個專案build都在上面觸發或生成。

如何快速獲取ci伺服器上最新的build呢?

有的人可能想到爬蟲,當然爬蟲可以做到,但是比較複雜,還要判斷最新的build是否是success.

http://$host/job/$jobname/lastsuccessfulbuild/api/json
用得較多的是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 = "***"

current_dir = os.path.split(os.path.realpath(__file__))[0]

apk_path = current_dir + "/apk/"

build_name = "***"

class

jenkins:

def__init__

(self):

self.jenkins_build_url = jenkins_host_android + "/job//lastsuccessfulbuild/api/json".format(

current_device_info.jenkins_job)

defget_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 ")

defcheck_folder

(sef, folder):

if os.path.exists(folder):

shutil.rmtree(folder)

os.makedirs(folder)

defdownload_file

(self, url, path):

file = requests.get(url).content

with open(path, 'wb') as f:

f.write(file)

defdownload_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,就可以做其它的自動化測試了。

docker快速安裝Jenkins

1.pull映象 要使用最新的lts docker pull jenkins jenkins lts 新建容器 docker run name jenkins p 8081 8080 p 50000 50000 d jenkins jenkins lts 備註 8080為docker埠,8081為對...

Jenkins上構建maven專案

香港vps雲主機 雲伺服器 月付 租用超國內大頻寬穩定高速 可試用 2.ps ef 程序名稱 查詢jobs無法查詢的目標作業。3.殺死程序 pkill 9 name killall name kill pidname 五 2016.3.11 plan 1.具體了解jenkins,學習jenkins高...

Jenkins上構建maven專案

香港vps雲主機 雲伺服器 月付 租用超國內大頻寬穩定高速 可試用 2.ps ef 程序名稱 查詢jobs無法查詢的目標作業。3.殺死程序 pkill 9 name killall name kill pidname 五 2016.3.11 plan 1.具體了解jenkins,學習jenkins高...