重要命令

解决报告样式问题执行:

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

  • 相关参考:https://www.cnblogs.com/topplay/p/3899330.html

邮件模板

<!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