python获取jenkins服务里的文件及备份

2 篇文章 0 订阅

 

需求是这样的 我们使用了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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值