?
需求是這樣的 我們使用了jacoco統計應用的代碼覆蓋率,產生了一些報告,但是清理報告的時候,需要對本輪的報告
做一個備份,這個同樣適用于類似的情形,比如一些重要的文件,目標是備份到jenkins所在的服務器上
如下圖
比如我要獲取或者說是下載右上角的文件,備份到下圖中的當前jenkins job的工作空間里面
url 如下
http://jenkins-test.yourcompany.com/view/projectName/job/xxx-web-report/HTML_20Report/*zip*/HTML_20Report.zip
下圖也是一個最終的效果
計劃使用python腳本 集成到一個jenkins job里面
首先發現python 有庫可以操作jenkins? ,Using Python-Jenkins
,https://python-jenkins.readthedocs.io/en/latest/examples.html
進一步發現不太合適 這個庫主要是操作jenkins job 之類的api 沒有涉及到下載之類
然后考慮直接使用http 獲取文件,然后嘗試發現jenkins 有basic-auth 驗證
可以使用如下通過校驗
# 用戶名 | |
? | user_id = 'jiangfei' |
? | # 用戶的token值(每個user有對應的token) |
? | api_token = 'yourtoken' |
? | ? |
? | auth = HTTPBasicAuth(user_id, api_token) |
? | res = requests.get(url=urlFile, auth=auth) |
用戶名和token 在jenkins這里獲取
?
主體代碼如下
# paramNum ==2時候是只有job名 ==3時候 最后一個參數是group name名字
paramNum = len(sys.argv)
print(paramNum)
jobName = sys.argv[1]
# 3 參數帶group name
if paramNum == 3:
groupName = sys.argv[2]
# groupName為空
if paramNum == 2:
urlFile = 'http://jenkins-test.你的jenkins域名.com/job/'+jobName+'/HTML_20Report/*zip*/HTML_20Report.zip'
elif paramNum == 3:
urlFile = 'http://jenkins-test.你的jenkins域名.com/view/' + groupName + '/job/' + jobName + '/HTML_20Report/*zip*/HTML_20Report.zip'
# 用戶名
user_id = 'jiangfei'
# 用戶的token值(每個user有對應的token)
api_token = 'yourtoken'
auth = HTTPBasicAuth(user_id, api_token)
res = requests.get(url=urlFile, auth=auth)
nowTime = str(datetime.datetime.now()). replace(':', "").replace(' ', "-").replace('.', "")
print(nowTime)
# 文件獲得后存放在自己工程在jenkins的工作空間里面
fileReportPath = "/data/test_jenkins/workspace/" + jobName
# 也可以放在jenkins服務的一個具體路徑下面 比如
# fileReportPath = "/qa/reportHistory/" + jobName
if not os.path.exists(fileReportPath):
os.makedirs(fileReportPath)
with open(fileReportPath + "/" + jobName + nowTime+".zip", "wb") as code:
code.write(res.content)
大家可以根據自己情況做一些調整 這個例子還是帶了一些業務代碼。
完整代碼參考我的github
https://github.com/albertflyer/GetJenkinsFile
?
?
參考:
https://www.jianshu.com/p/be1d2f19c9ed
https://hacpai.com/article/1484722904667
https://www.cnblogs.com/zjsupermanblog/archive/2017/07/26/7238422.html
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
