因我公司产品是一套代码,打包出来会有俩种包,为了防止各种配置打错打混,才用python在jenkins上直接造了个脚本。
有了这第一个脚本,以后在jenkins上就有可以为所欲为的感觉了。
过程很简单:
1.解压tar包
2.解压jar包
3.断言某配置文件
4.删除解压的目录。
作用:
1.可以在每次打包结束后开始断言包中的各种设置
2.若出现断言失败,就直接触发异常,在jenkins中就可以看到红色的打包项目失败红色了
3.时间大概需要10秒多
注意:
1.jenkins中默认的是python2
2.一定要删除干净解压后的文件,不能浪费打包机的资源
3.在jenkins的job中,打包的脚本后面添加python脚本后输入以下代码即可
# -*- coding:utf-8 -*-
import tarfile,os,time,shutil,sys,zipfile
def CHECK(file_name,which):
print 'Beging Check !!!! '+which # 打印开始提示语
tar = tarfile.open(file_name) #指定压缩包
names = tar.getnames()
if os.path.isdir(file_name + "_files_check"): #检查是否存在check工作目录
pass
else:
os.mkdir(file_name + "_files_check") #不存在则创建
for name in names:
tar.extract(name, file_name + "_files_check/") #逐个文件解压到 check工作目录
tar.close()
time.sleep(1)
if which == '1':
fs = os.listdir(file_name + "_files_check/*********/WEB-INF/lib/") #指定的路径
for i in fs:
if i[:17] == "xxxxx-service-":
f = file_name + "_files_check/********r/WEB-INF/lib/" + i #找到动态变化的jar包
zfile = zipfile.ZipFile(f)
if os.path.isdir(file_name + "_files_check/Check_jar"): #检查jar包解压文件夹是否存在
pass
else:
os.mkdir(file_name + "_files_check/Check_jar") # 若不存在则创建
for names in zfile.namelist():
zfile.extract(names,file_name + "_files_check/Check_jar/") #解压jar包到文件夹
zfile.close()
f = open(file_name + "_files_check/Check_jar/dubbo/dubbo-provider.xml",'r') #确定要断言的xml文件
lines = f.readlines() #获取所有行,组成一个列表
f.close()
time.sleep(1)
shutil.rmtree(file_name + "_files_check") #删除解压check工作目录
if which=='1':
for i in range(len(lines)): # 逐行判端
if lines[i].find('interface=') != -1: #若此行有interface
assert (-1==lines[i].find('xx')),(i,lines[i]) #则断言此行应该不包含xxx
elif lines[i].find('ref=') != -1: x #若此行有ref
assert (-1==lines[i].find('xxx')),(i,lines[i]) #则断言此行应该不包含xxx
print 'Ending Check, no problem !!!! '+which #无断言失败,则打印无问题
# CHECK("/home/work/jenkins_home/jobs/workspace/************/web/src/main/ci/output/xxxxxxx1.tar.gz",'1') #调用check函数,输入的是workspace后的打出来的包的路径