【问题标题】:How to pass selected values of active choice parameters to build script如何将活动选择参数的选定值传递给构建脚本
【发布时间】:2020-10-07 22:05:28
【问题描述】:

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

我设置了一个选择参数 (name=testSuite),其中包括所有 xml,并在 Build 部分中包含 mvn clean test 命令。

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

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

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

以下是我使用的方法。

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

以下是我的参数,

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

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

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

还请帮助我找出一种更好的方法,以便在特定时间段内定期构建以满足上述情况。

提前致谢。

`

【问题讨论】:

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


    【解决方案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 魔术将字符串转换为 List 并指定所需的索引(拆分它),例如

    sh "mvn install test -DsuiteXmlFile=src/test/resources/testSuite/${Scripts.tokenize(',')[0]}"
    

    将是您的第一个价值

    【讨论】:

    • 感谢您的回复。我尝试了第二个选项。它有效,但我想知道我需要如何使用管道脚本在所选选项之间进行迭代。例如:如果我从“脚本”中选择 3 个选项,我将如何编写管道脚本以在 Scripts 参数中的所有选定选项之间迭代运行
    【解决方案2】:

    以下是声明性管道的示例:

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

    【讨论】:

      猜你喜欢
      • 2019-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 2012-08-31
      相关资源
      最近更新 更多