我是Jenkins的新手,请帮助我。 我有一个Maven项目,它有点复杂,因此我使用testNG xmls分离了测试。基于执行流程,我将选择适当的.xml文件来构建项目。现在,我正在通过选择所需的xml文件来手动构建脚本。
我已经设置了一个选择参数(name = testSuite),该参数包含所有xml,并在“构建”部分中包含mvn clean test命令。
mvn install test -DsuiteXmlFile=src/test/resources/testSuite/$testSuite
构建时,它将从选择参数下拉列表中获取所选值并执行。
但是我的要求是我想集成它以在特定时间段内定期运行构建。为此,我尝试使用“主动选择参数”,但是请帮助我如何调用选定的复选框选项并继续进行mvn install test
下面是我使用的方法。
下面是我的参数,
“脚本”将包含复选框和xml文件
在这种情况下,我如何将选定的xml传递给mvn clean test
,因为到目前为止,它会将所有选定的值与逗号分隔符传递为caseCreation.xml,testng.xml
。因此,我该如何分隔每个选定的xml并将其传递给mvn install test -DsuiteXmlFile=src/test/resources/testSuite/$testSuite
。
也请帮助我找出一种更好的方法来在特定时间段内进行定期构建,以解决上述情况。
谢谢。
`
答案 0 :(得分:1)
我想推荐一个我自己使用的插件,该插件可以基于cron语法运行作业,并可以指定参数:Parameterized Scheduler
properties([
pipelineTriggers([
parameterizedCron('''
0 20 * * 1-5 %gitRevision=desktop/dev;brokerName=robotests
0 00 * * 1-5 %gitRevision=master;brokerName=robotests
''')
]),
])
如果我对您的理解正确,那么定义具有不同参数的多个运行就足够了。 如果要使用Active Choice参数值,则应了解它会将所有值存储为字符串。使用Groovy magic将字符串转换为List并指定所需的索引(将其分割),例如
sh "mvn install test -DsuiteXmlFile=src/test/resources/testSuite/${Scripts.tokenize(',')[0]}"
将是您的第一个值
答案 1 :(得分:0)
以下是声明性管道的示例:
pipeline {
agent any
stages {
stage('Build') {
steps {
script {
Scripts.tokenize(',').each{
sh "mvn install test -DsuiteXmlFile=src/test/resources/testSuite/${it}"
}
}
}
}
}
}
脚本化:
node (){
stage("Build") {
Scripts.tokenize(',').each{
sh "mvn install test -DsuiteXmlFile=src/test/resources/testSuite/${it}"
}
}
}