def actionTest = null loadList = ["beijing", "chengdu","xxx","shanghai"," xxx","xxx","11.11.11.111","99.88.88.88"] //這裏要定義要自動生成的機器label(該label是jenkins節點機的label名稱) actionTest = loadList.collectEntries { ["壓測 ${it}": load_test(it)] //這裏${it}我沒搞懂(可能相似於一個遍歷循環),反正按着這個來就ok,而後把it傳入到方法中,而後在方法中把ip傳入node } def load_test(nodeIp) { return { node(nodeIp) { dir('/data/soft/jenkins_node_release/workspace/testfiles/libs') { //sh "mvn install:install-file -Dfile=jmeter-plugins-dubbo-1.3.8-jar-with-dependencies.jar -DgroupId=io.github.ningyu -DartifactId=jmeter-plugins-dubbo -Dversion=1.3.8 -Dpackaging=jar" //sh "mvn install:install-file -Dfile=mysql-connector-java-5.1.47-bin.jar -DgroupId=mysql -DartifactId=mysql-connector-java -Dversion=5.1.47 -Dpackaging=jar" sh "mvn install:install-file -Dfile=com.belle.test.jmeterUtil.jar -DgroupId=com.belle.test -DartifactId=jmeterUtil -Dversion=1.0.0 -Dpackaging=jar" //sh "mvn install:install-file -Dfile=ojdbc6.jar -DgroupId=com.oracle -DartifactId=ojdbc6 -Dversion=11.2.0.3 -Dpackaging=jar" //sh "mvn install:install-file -Dfile=jmeter-plugins-random-csv-data-set-0.6.jar -DgroupId=com.blazemeter -DartifactId=jmeter-plugins-random-csv-data-set -Dversion=0.6 -Dpackaging=jar" } dir("${workspace}") { sh "pwd" print("開始執行測試...") sh "mvn clean verify -Djmx.filesDirectory.dir=${filesDirectory} -Dargs.filesDirectory.dir=${filesDirectory} -Djmeter.threadCount=${threadCount} -Djmeter.duration=${duration} -Djmeter.loopCount=${loopCount} -PLoad" echo '壓測腳本執行完成' } } } } pipeline { agent { node { label 'master' } } options { timeout(time: 60, unit: 'MINUTES') ansiColor('xterm') disableConcurrentBuilds() } //此處便可開始進行代碼部署操做 stages { stage("執行測試") { steps { script { // parallel actionTest //調用入口 } } } } }
**************************************分割線**************************************java
**************************************分割線**************************************node
**************************************分割線**************************************mysql
package com.belle.log.yougou.pipelineV5.mingcai def actionTest = null //def threadTest = null def job_list = ["1_query_userinfo", "2_query_preview", "3_query_homepage", "4_query_organ"] //這裏傳入要執行job的名稱 //def threadCount_list = ["10", "11", "12", "13"] actionTest = job_list.collectEntries { ["Job: ${it}": load_test(it)] //這裏${it}我沒搞懂(可能相似於一個遍歷循環),反正按着這個來就ok,而後把it傳入到方法中,而後在方法中把ip傳入node } def load_test(job_name) { return { build job: job_name, parameters: [string(name: 'test1', value: 'hello,'), string(name: 'test2', value: 'world')] //重點在這,build job是執行多個job的核心 } } pipeline { agent { node { label 'master' } } options { timeout(time: 720, unit: 'MINUTES') } stages { stage("並行執行Job") { steps { script { dir("${workspace}"){ sh "pwd" sh "mvn clean verify -PLoad" println("cookies信息生成完畢...") } parallel actionTest //1.這裏聲明並行執行 } } } } }