场景是这样的:开发打包出来放到windows共享目录上,然后我们测试去取安装包然后上传到linux服务器,解压包,执行安装命令。
今天刚好把这块流程用jenkins自动执行出来,记录一下
问题1:
如何从共享文件夹里把安装包拷贝到jenkins工程文件下呢?
因为我电脑是记住远程文件服务器的密码的直接写python 复制是没有问题的。
然后我放到jenkins上去跑,报了权限的问题。我jenkins服务器也是记住共享文件服务器密码的。
于是想到另一个办法,做映射,做好映射之后,用jenkins跑,提示没有这个文件夹。
于是写了个bat每次跑的时候做映射,第一次还ok第二次又报错,说上一次连接没失效,无法连接。然后我就在bat前加一个每次做映射之前断开之前所有映射。
bat和python的命令要用两个命令框
这个是映射的share.bat文件内容,因为偶尔会出现一些64错误,所以我加了个判断,出错再执行一遍。
net use * /delete /y
net use z: \\192.168.24.160\Share\ /user:username password
echo %errorlevel%
if not %errorlevel%==0 net use z: \\192.168.24.160\Share\ /user:username password
这个是从共享文件服务器复制到jenkins服务器的脚本cp.py
#coding=utf-8
import os
import sys
import shutil
sharename=u'Z:/'+sys.argv[1]
newname=u'C:\Program Files (x86)\Jenkins\workspace\工控工具箱自动部署\gk\gksec.tar.gz'
print "start copy file"
shutil.copyfile(sharename,newname)
print "finish copy file"
好了,第一个问题解决了,项目文件夹下有个安装包,第二个问题是怎么把安装包上传到linux服务器,并执行linux命令
这个网上教程很多很详细,我就不写了,具体可以百度 jenkins 远程ssh文件上传
文件上传上去以后,我们还要监控web平台什么时候能正常打开,这样的话才能,执行我们的测试脚本。
所以我写了个脚本去监控check.py
import requests
import sys
import time
import warnings
warnings.filterwarnings("ignore")
url = "https://"+sys.argv[1]+":10443/login"
while True:
try:
r=requests.get(url,timeout=5,verify=False)
if r.status_code == 200:
print "gksec started!"
break
else:
print "gksec error!"
except:
print "timeout"
time.sleep(10)
接下来给大家一些截图