1、gitlab自动触发jenkins构建

1⃣️安装插件:

jenkins 连接jmeter jenkins集成jmeter_jenkins 连接jmeter

 

 

jenkins 连接jmeter jenkins集成jmeter_virtualenv_02

2⃣️新建工程,设置git url,build when a change is pushed

jenkins 连接jmeter jenkins集成jmeter_git_03

 

jenkins 连接jmeter jenkins集成jmeter_git_04

 

jenkins 连接jmeter jenkins集成jmeter_jenkins 连接jmeter_05

 auto.sh

/bin/sh echo "123456"

3⃣️gitlab -》 个人头像 -〉settings -》Access Tokens 创建tokens:yxzwM2AxVxZFdr9uydx4

jenkins 连接jmeter jenkins集成jmeter_git_06

4⃣️配置jenkins服务器 (unuseful) 系统管理-》系统设置-> gitlab相关部分

jenkins 连接jmeter jenkins集成jmeter_jenkins 连接jmeter_07

 点击Add,添加上一步生成的token

jenkins 连接jmeter jenkins集成jmeter_virtualenv_08

5⃣️配置gitlab工程

选择已有工程或者新建一个工程,settings-》integrations,URL、Token为第二步红色框里的值

 

jenkins 连接jmeter jenkins集成jmeter_压测_09

 创建webhook后,点击test下push event 测试一番,可手动产生事件,触发jenkins工程

jenkins 连接jmeter jenkins集成jmeter_virtualenv_10

 然后点击Edit,页面底部查看该webhook最近调用情况;点击view details查看详细调用情况

jenkins 连接jmeter jenkins集成jmeter_压测_11

 在jenkins相应工程中出现构建历史

jenkins 连接jmeter jenkins集成jmeter_jenkins 连接jmeter_12

 

 当auto.sh有修改、提交后(只要第5⃣️步配置的工程有提交),该工程便会自动构建

2、查看性能测试曲线图

构建【将测试结果文件生成测试报告】:执行jmeter -g result.jtl -o reports/

jenkins 连接jmeter jenkins集成jmeter_git_13

 构建后操作 【publish performance test result report】-依赖插件performance plugin

jenkins 连接jmeter jenkins集成jmeter_jenkins 连接jmeter_14

 【立即构建】

jenkins 连接jmeter jenkins集成jmeter_jenkins 连接jmeter_15

添加性能曲线图时各选项的作用;

jmeter -n -t login.jmx -l result.jtl -e -o report  ==??==> jmeter -n -t login.jmx -l result.jtl;jmeter -g result.jtl -o report  

 3、jenkins 参数化构建

参数化构建:依赖插件(Extended Choice Parameter)

jenkins 连接jmeter jenkins集成jmeter_jenkins 连接jmeter_16

 配置页面-参数化构建过程-增加Extended choice parameter

jenkins 连接jmeter jenkins集成jmeter_压测_17

 

jenkins 连接jmeter jenkins集成jmeter_git_18

保存后出现build with parameters

 

jenkins 连接jmeter jenkins集成jmeter_git_19

 启动远程服务器命令(remote_startup.sh 传git)

jenkins 连接jmeter jenkins集成jmeter_压测_20

jmete分布式压测指定多个远程机器cd/

Tips:远程启动jmeter -R,需要进入jmeter bin路径  当前路径需存在rmi_keystore.jks

 

jenkins 连接jmeter jenkins集成jmeter_virtualenv_21

了解参数化构建各选项的作用

对每个扩展参数展示描述文本-done

脚本待完善

1⃣启动命令前检查是否已启动;若已启动需要杀掉多个进程,xargs无效 - done

2⃣传多个参数时,需要循环远程连接 - done

remote_startup.sh

#!/bin/sh   IFS=',' remote_host_arr=($1)   for host in ${remote_host_arr[@]} do pid=$(sshpass -p password ssh -Tq -p 9800 ceshi@$host  "ps -ef | grep jmeter-server | grep -v grep | awk  '{print $2}'"| awk '{print $2}'|xargs) sshpass -p password ssh -Tq -p 9800 ceshi@$host << remotessh sudo -s cd /usr/local/Jmeter/apache-jmeter-5.0/bin/ echo $pid echo ${#pid} if [ -n "$pid" ]; then kill -9 $pid fi export JAVA_HOME="/usr/local/soft/jdk8" nohup sh jmeter-server > nohup.out 2>&1 & exit remotessh done

4、Jenkins Run Performance test 

1⃣新建任务后,在【构建步骤】部分包含【Run Performance test】 

    依赖插件Performance Plugin 并且jenkins服务器需要python2.7+,

    和bzt (pip install bzt) 或者 virtualenv(pip install virtualenv)

jenkins 连接jmeter jenkins集成jmeter_virtualenv_22

 

jenkins 连接jmeter jenkins集成jmeter_jenkins 连接jmeter_23

 

说明:jenkins的性能插件主要使用Taurus工具执行压测 http://jenkinsci.github.io/performance-plugin/RunTests.html 

本机可以不安装jmeter,Taurus会尝试将最新的jmeter和相关插件安装到〜/ .bzt / jmeter-taurus / bin / jmeter

Taurus为许多开源测试工具提供不同的执行程序,如JMeter,Selenium,Gatling,Grinder等。默认执行程序是JMeter,因此如果您已经使用JMeter创建了一个JMX文件,那么使用Taurus运行它是非常容易的!只需使用bzt命令后跟JMX路径。

2⃣ 新建任务 - Run performance test

jenkins 连接jmeter jenkins集成jmeter_jenkins 连接jmeter_24

 

jenkins 连接jmeter jenkins集成jmeter_virtualenv_25

3⃣立即构建 

    第一次构建运行时间会比较长,因为要下载jmeter安装包

    (已安装bzt的情况-会自动在~/.bzt/路径下安装最新版jmeter)

jenkins 连接jmeter jenkins集成jmeter_virtualenv_26

  (没有安装bzt,安装有virtualenv的情况-会先在虚拟环境安装bzt)

jenkins 连接jmeter jenkins集成jmeter_压测_27

 构建成功后,可查看测试报告<每次构建结果曲线图>,类似

jenkins 连接jmeter jenkins集成jmeter_压测_28

1、压测服pressure1安装bzt失败,待解决 【本机可安装成功】;或者需要安装virtualenv ,在jenkins中安装bzt。

    (如果pip install bzt失败,则即使安装了virtualenv,安装bzt仍然会失败)

2、jmeter非自带的插件是否会自动安装 --- 会;是否可以进行分布式压测

3、bzt语法、参数、yaml脚本等等

5、jenkins集成多个git仓库

安装插件-Multiple SCMs

jenkins 连接jmeter jenkins集成jmeter_virtualenv_29

 配置多个git地址

jenkins 连接jmeter jenkins集成jmeter_git_30

当配置多个仓库时,直接构建任务会出现第一个配置获取的代码被第二个配置的覆盖,最后只能保留下来最后一次拉取的代码

这样不是我们想要的效果,由于拉取代码会直接将代码放入任务工程目录,也就是以你创建任务的名字目录,

所以下一个任务会对上一个覆盖,这个时候我们可以将每个仓库-或其中一个仓库拉取的代码放入独立的目录中

jenkins 连接jmeter jenkins集成jmeter_压测_31

 执行shell的时候指定正确的路径

jenkins 连接jmeter jenkins集成jmeter_virtualenv_32


其它

1,ssh-copy-id "-p 9800 ceshi@host"   可将本机公钥放入远程机器,使用ssh无密远程登录

2,gitlab自动触发jenkins创建,若脚本是带参数的,自动构建时使用默认参数

3,ssh远程登录时增加-o StrictHostKeyChecking=no用来解决连接新主机时,不进行公钥确认

jenkins 连接jmeter jenkins集成jmeter_压测_33

 

jenkins 连接jmeter jenkins集成jmeter_git_34