Jenkins
重要命令
解决报告样式问题执行:
System.setProperty(“hudson.model.DirectoryBrowserSupport.CSP”, “”) println(Jenkins.instance.pluginManager.plugins)
mvn向jmeter传递参数的实际命令:
pom文件中要添加:
<!--设置报告生成的路径-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<jmeter.result.jtl.dir>${project.build.directory}\jmeter\results</jmeter.result.jtl.dir>
<jmeter.result.html.dir>${project.build.directory}\jmeter\html</jmeter.result.html.dir>
<performancetest.threadCount>1</performancetest.threadCount>
<performancetest.loopCount>1</performancetest.loopCount>
<performancetest.key>1</performancetest.key>
</properties>
<!--执行配置文件-->
<profiles>
<profile>
<id>jenkins</id>
<!--<properties>-->
<!--<performancetest.threadCount>1</performancetest.threadCount>-->
<!--<performancetest.loopCount>1</performancetest.loopCount>-->
<!--<performancetest.key>1</performancetest.key>-->
<!--</properties>-->
</profile>
</profiles>
<build>
<plugins>
<plugin>
<groupId>com.lazerycode.jmeter</groupId>
<artifactId>jmeter-maven-plugin</artifactId>
<version>2.5.0</version>
<configuration>
<!-- 设置jmeter生成结果文件格式-->
<resultsFileFormat>xml</resultsFileFormat>
<!-- 设置忽略失败是否停止运行-->
<ignoreResultFailures>true</ignoreResultFailures>
<!--设置结果是否有时间戳-->
<testResultsTimestamp>true</testResultsTimestamp>
<testFilesIncluded>
<!-- //指定运行的jmeter脚本 -->
<jMeterTestFile>*.jmx</jMeterTestFile>
</testFilesIncluded>
<!-- 指定jtl生成目录 -->
<resultsDirectory>${jmeter.result.jtl.dir}</resultsDirectory>
<propertiesUser>
<threadCount>${performancetest.threadCount}</threadCount>
<loopCount>${performancetest.loopCount}</loopCount>
<key>${performancetest.key}</key>
</propertiesUser>
</configuration>
<executions>
<execution>
<id>jmeter-tests</id>
<!--脚本所在的文件夹 -->
<goals>
<goal>jmeter</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<!--根据xsl模版把jtl文件转换成html-->
<groupId>org.codehaus.mojo</groupId>
<artifactId>xml-maven-plugin</artifactId>
<!--<version>1.0-beta-3</version>-->
<version>1.0.2</version>
<executions>
<execution>
<phase>verify</phase>
<goals>
<goal>transform</goal>
</goals>
</execution>
</executions>
<configuration>
<transformationSets>
<transformationSet>
<dir>${jmeter.result.jtl.dir}</dir>
<stylesheet>src/test/resources/jmeter.results.shanhe.me.xsl</stylesheet>
<outputDir>${jmeter.result.html.dir}</outputDir>
<!-- 把jtl格式转传承html -->
<fileMappers>
<fileMapper
implementation="org.codehaus.plexus.components.io.filemappers.FileExtensionMapper">
<targetExtension>html</targetExtension>
</fileMapper>
</fileMappers>
</transformationSet>
</transformationSets>
</configuration>
<!-- using XSLT 2.0 -->
<dependencies>
<dependency>
<groupId>net.sf.saxon</groupId>
<artifactId>saxon</artifactId>
<version>8.7</version>
</dependency>
</dependencies>
</plugin>
</plugins>
</build>
mvn clean -Pjenkins verify -Dperformancetest.loopCount=2 -Dperformancetest.threadCount=1
同时在jmx文件中想要被传递修改的参数要设置【${__P(threadCount, 1)}】这种参数预设值
恶心的坑请填好再服用
在ubuntu中搭建jenkins环境,一定要配置:
> 【Build】-> 高级
> 【使用自定义的工作空间】-> 设置job要操作的mvn路径【/home/qau01/jmeter-mvn】
> 不然会不断的报错,提示找不到pom文件,老夫被憋了足足一天一夜
jobs备份和导入
具体步骤如下:
1、首先确认Jenkins的job存放目录。 以管理员账号登录Jenkins,点击“系统管理/系统设置”,确认jenkins工作目录。 本例中Jenkins A的工作目录为/home/.jenkins,Jenkins B的工作目录为/root/.jenkins。
2、接下来,迁移jobs目录。 登录Jenkins A服务器,进入工作目录,压缩jobs目录,并复制到B:
cd /home/.jenkins
tar -czvf jobs.tar.gz jobs
scp -f jobs.tar root@BIP:/root/.jenkins/
3、接着,在B上解压jobs.tar到jobs目录,并重启Jenkins服务器B。注意:重启不是必须的。 1)通过重启hudson来加载新迁移的job:
cd /root/.jenkins
tar -zxvf jobs.tar
本例通过重启tomcat服务来重启Jenkins,其他通过jar运行Jenkins的重启进程即可。
cd /opt/tomcat/tomcat7/bin/
./shutdown.sh
./startup.sh
邮件模板
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>${PROJECT_NAME}-第${BUILD_NUMBER}次构建日志</title>
</head>
<body size="4" leftmargin="8" marginwidth="0" topmargin="8" marginheight="4"
offset="0">
<table width="95%" cellpadding="0" cellspacing="0"
style="font-size: 20pt; font-family: Tahoma, Arial, Helvetica, sans-serif">
<tr>
<td>(本邮件是程序自动下发的,请勿回复!)</td>
</tr>
<tr>
<td><h2>
<font color="#0000FF">构建状态 - ${BUILD_STATUS}</font>
</h2></td>
</tr>
<tr>
<td><br />
<b><font color="#0B610B">构建信息</font></b>
<hr size="3" width="100%" align="center" /></td>
</tr>
<tr>
<td>
<ul>
<li>项目名称 : ${PROJECT_NAME}</li>
<li>构建编号 : 第${BUILD_NUMBER}次构建</li>
<li>触发原因: ${CAUSE}</li>
<li>构建日志: <a href="${BUILD_URL}console">${BUILD_URL}console</a></li>
<li >变更集:${JELLY_SCRIPT,template="html"}</a></li>
</ul>
<hr size="3" width="100%" align="center" />
</td>
</tr>
</table>
</body>
</html>
pipline实例
顺序执行
pipeline{
agent any
stages {
stage('delete-luka-api-jmeter-mvn') {
steps{
echo 'delete-luka-api-jmeter-mvn'
build job: "delete-luka-api-jmeter-mvn"
}
}
stage('xuchu-jmeter-mvn-lukaapi') {
steps{
echo 'xuchu-jmeter-mvn-lukaapi'
build job: "xuchu-jmeter-mvn-lukaapi"
}
}
stage('TheEnd') {
steps{
echo 'All stage Done.'
}
}
}
}
并发执行
parallel 'delete-luka-api-jmeter-mvn': {
// do something
build job: "delete-luka-api-jmeter-mvn"
}, 'xuchu-jmeter-mvn-lukaapi': {
// do something else
build job: "xuchu-jmeter-mvn-lukaapi"
},
failFast: true