Maven 如何将活动选项参数的选定值传递给生成脚本

Maven 如何将活动选项参数的选定值传递给生成脚本,maven,jenkins,jenkins-pipeline,jenkins-groovy,jenkins-declarative-pipeline,Maven,Jenkins,Jenkins Pipeline,Jenkins Groovy,Jenkins Declarative Pipeline,我是詹金斯的新手,请帮我。 我有一个maven项目,它有点复杂,所以我使用testNG XML分离了测试。根据执行流,我将选择适当的.xml文件来构建项目。现在,我要做的是通过选择所需的xml文件手动构建脚本,如下所示 我已经设置了一个选择参数(name=testSuite),其中包括所有的XML和Build部分中的include mvn clean test命令 mvn install test -DsuiteXmlFile=src/test/resources/testSuite/$test

我是詹金斯的新手,请帮我。 我有一个maven项目,它有点复杂,所以我使用testNG XML分离了测试。根据执行流,我将选择适当的.xml文件来构建项目。现在,我要做的是通过选择所需的xml文件手动构建脚本,如下所示

我已经设置了一个选择参数(name=testSuite),其中包括所有的XML和Build部分中的include mvn clean test命令

mvn install test -DsuiteXmlFile=src/test/resources/testSuite/$testSuite
当我构建时,它将从choice参数下拉列表中获取所选值并执行

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

下面是我使用的方法

  • 我创建了一个管道脚本来生成“活动选择参数和参考参数”
  • 然后,我尝试使用'echo'脚本:${params.Scripts}获取所选的值
  • 以下是我的参数

    • 活动选择参数:流量
    • 主动选择被动参数:脚本
    • 活动参考参数:流量信息
    “脚本”将包括复选框和xml文件

    在这个场景中,我将如何将所选的xml传递给
    mvn clean test
    ,因为到目前为止,它使用逗号分隔符传递所有所选的值,如
    caseCreation.xml,testng.xml
    。因此,如何分离每个选定的XML并将其传递给
    mvn安装测试-DsuiteXmlFile=src/test/resources/testSuite/$testSuite

    另外,请帮助我找出一种更好的方法,在特定的时间段内定期构建,以满足上述场景

    提前谢谢


    `

    我想推荐一个插件,我自己使用它来运行基于cron语法的作业,并能够指定参数:

    如果我理解正确,用不同的参数定义几个运行就足够了。 如果要使用活动选项参数值,则应了解它将所有值存储为字符串。使用Groovy magic将字符串转换为列表并指定所需的索引(拆分),例如


    将是您的第一个值

    下面是一个声明性管道的示例:

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

    谢谢你的回复。我尝试了第二种选择。它可以工作,但我想知道如何使用管道脚本在所选选项之间进行迭代。例如:如果我从“脚本”中选择3个选项,我将如何编写管道脚本?在脚本参数中的所有选定选项之间迭代运行
    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}"
            }
        }
    }