本文为在霍格沃兹测试开发学社中学习到的一些技术,写出来分享给大家,希望有志同道合的小伙伴可以一起交流技术,一起进步~
技术分享 | Jenkins 如何参数化job ?
性能课程-电商压测实战
#!/usr/bin/env bash
# 压测脚本模板中设定的压测时间为60s
export jmx_template="demo"
export suffix=".jmx"
export jmx_template_filename="${jmx_template}${suffix}"
export os_type=`uname`
export jmxFile="jmx"
export jtlFile="jtl"
echo "自动化压测开始"
# 压测并发数列表 ,用来替换jmeter脚本中的设置的thread_num 变量
thread_number_array=( 10 11)
for num in "${thread_number_array[@]}"
do
# 生成对应压测线程的jmx文件
export jmx_filename="${jmxFile}/${jmx_template}_${num}${suffix}"
export jtl_filename="${jtlFile}/test_${num}.jtl"
export web_report_path_name="web_report_${num}"
# 把历史重复的文件删除
rm -f ${jmx_filename} ${jtl_filename}
rm -rf ${web_report_path_name}
cp ${jmx_template_filename} ${jmx_filename}
echo "生成jmx压测脚本 ${jmx_filename}"
if [[ "${os_type}" == "Darwin" ]]; then
# thread_num 为jmx文件中需要替换的关键字
sed -i "" "s/thread_num/${num}/g" ${jmx_filename}
else
sed -i "s/thread_num/${num}/g" ${jmx_filename}
fi
# jmeter 静默压测
echo "静默压测_${num}"
jmeter -n -t ${jmx_filename} -l ${jtl_filename}
# 生成web压测报告
echo "生成web压测报告_${num}"
jmeter -g ${jtl_filename} -e -o ${web_report_path_name}
echo "jmeter -g ${jtl_filename} -e -o ${web_report_path_name}"
done
echo "自动化压测全部结束"
shell脚本上传码云🐜,在此不再讲述
在上述的方法中,在脚本中写死指定了执行的线程数量,如图所示是 先执行10个线程,之后再执行11个线程。在实际的工作中,线程数量往往是不断变动的,我们总不能每次都修改脚本,上传git,拉取构建吧?!
Jenkins参数化构建 可以解决这个问题,线程数量通过参数传递进去。
原头部:
调整为:
# s* 是执行shell脚本时传递进来的参数
for num in $*;
do
echo ${num}