jenkins 构建服务如何清理缓存
转载
多环境选择
一、问题来源
居于测试中存在多套环境,并且经常要对各个环境进行冒烟测试,故考虑将持续集成环境做成可配置。不同环境的URL、Port、Database、DatabaseName都不一样。
二、解决思路
在Jenkins的ExecuteShell中实现,配置不同环境所对应的参数,根据构建时选择传入的环境不同,到工作空间中,找到脚本目录,并将指定的参数进行替换。
但是,这样便导致需要替换的基准值不一致,比如:拉取最新代码的jmeter脚本中配置的是I5的环境,第一次构建的时候选择I4,这样在第二次构建的时候,就导致基准值由I5变为了I4,也就是每一次需要替换的基准值是不确定的。
故,结合Jenkins的构建环境配置,在每次构建之前清除工作空间,保证每次取的都是基准值一样的脚本。
三、具体实现
(一)配置环境选择参数
在General -> 参数化构建过程-> 添加参数-> Choice Parameter,配置下拉选择环境参数
(二)清除工作空间
在构建环境 -> 勾选“Delete workspace before build starts” ,在构建开始之前清除工作空间,这样每次构建时都需要重新到git上拉取一次代码,保证代码最新并且可以取固定的基准模板(jmeter脚本)
(三)根据构建时选择的环境,更新脚本
在Pre Steps -> Add pre-build step -> Execute Shell
#!/bin/sh
url=ijapi5.wolaidai.com
port=59030
database_ip=192.168.252.102
database_name=rocket2_i2
cd /var/lib/jenkins/workspace/Jmeter-Maven-Jenkins/src/test/jmeter
case "${DEPLOY_ENV}" in
"gd2a_01")
ls | grep ".jmx" | while read line
do
sed -i "s/${url}/ijapi1.wolaidai.com/g;s/${port}/19030/g;s/${database_ip}/192.168.252.101/g;s/${database_name}/rocket2_i1/g" ${line}
done
;;
"gd2a_02")
ls | grep ".jmx" | while read line
do
sed -i "s/${url}/ijapi2-gd2a.wolaidai.com/g;s/${port}/29030/g" ${line}
done
;;
"gd2a_04")
ls | grep ".jmx" | while read line
do
sed -i "s/${url}/ijapi4-gd2a.wolaidai.com/g;s/${port}/49030/g;s/${database_ip}/192.168.252.103/g;s/${database_name}/rocket2/g;" ${line}
done
;;
*)
;;
esac
cd /var/lib/jenkins/workspace/Jmeter-Maven-Jenkins
|
注:脚本替换完成后记得要切换回工作空间的根目录,或者修改Build时配置的POM文件路径。
执行结果判断
一、原因
由于Jenkins构建的成功或失败取决于项目构建是否正常,而不会判断Jmeter脚本执行结果是Pass 或者Fail,而针对接口测试来说,项目构建失败或者jmeter脚本中接口执行结果为Fail都算失败
二、解决思路
结合Jenkins的Post Steps中的ExecuteShell,在脚本执行完成后,到存放测试报告的里面,判断文件中若存在0.00%,再判定脚本执行失败,返回1,否则为0,表示构建成功
if [[ `find /var/lib/jenkins/workspace/Jmeter-Maven-Jenkins/target/jmeter/html -name "*.html" | xargs grep ">0.00%<"` == "" ]]; then
echo "testcases were executed successfully"
exit 0
else
echo "there are at least one failed testcase"
exit 1
fi
|
本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。