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

 

需求是这样的 我们使用了jacoco统计应用的代码覆盖率,产生了一些报告,但是清理报告的时候,需要对本轮的报告

做一个备份,这个同样适用于类似的情形,比如一些重要的文件,目标是备份到jenkins所在的服务器上

如下图

python获取jenkins服务里的文件及备份_第1张图片

比如我要获取或者说是下载右上角的文件,备份到下图中的当前jenkins job的工作空间里面

url 如下

http://jenkins-test.yourcompany.com/view/projectName/job/xxx-web-report/HTML_20Report/*zip*/HTML_20Report.zip

下图也是一个最终的效果

python获取jenkins服务里的文件及备份_第2张图片

计划使用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这里获取

python获取jenkins服务里的文件及备份_第3张图片

 

主体代码如下

# 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

 

你可能感兴趣的:(python,CICD)