如何传递主动选择参数的选择值来构建脚本

时间:2020-10-07 22:05:28

标签: maven jenkins jenkins-pipeline jenkins-groovy jenkins-declarative-pipeline

我是Jenkins的新手,请帮助我。 我有一个Maven项目,它有点复杂,因此我使用testNG xmls分离了测试。基于执行流程,我将选择适当的.xml文件来构建项目。现在,我正在通过选择所需的xml文件来手动构建脚本。

我已经设置了一个选择参数(name = testSuite),该参数包含所有xml,并在“构建”部分中包含mvn clean test命令。

mvn install test -DsuiteXmlFile=src/test/resources/testSuite/$testSuite

构建时,它将从选择参数下拉列表中获取所选值并执行。

但是我的要求是我想集成它以在特定时间段内定期运行构建。为此,我尝试使用“主动选择参数”,但是请帮助我如何调用选定的复选框选项并继续进行mvn install test

下面是我使用的方法。

  1. 我创建了一个管道脚本来生成“主动选择参数和参考参数”
  2. 然后我尝试使用`echo“ Scripts:$ {params.Scripts}”
  3. 来获取选定的值。

下面是我的参数,

  • 主动选择参数:流
  • 主动选择反应参数:脚本
  • 有效参考参数:流量信息

“脚本”将包含复选框和xml文件

Build with Parameter UI

Selected xml options

Pipeline console output

在这种情况下,我如何将选定的xml传递给mvn clean test,因为到目前为止,它会将所有选定的值与逗号分隔符传递为caseCreation.xml,testng.xml。因此,我该如何分隔每个选定的xml并将其传递给mvn install test -DsuiteXmlFile=src/test/resources/testSuite/$testSuite

也请帮助我找出一种更好的方法来在特定时间段内进行定期构建,以解决上述情况。

谢谢。

`

2 个答案:

答案 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}"
        }
    }
}