如何在 Jenkins Build 命令中使用变量

问题描述

我正在尝试通过 Jenkins 运行 Testim。我正在使用 Windows 批处理命令来运行它

testim --host localhost --port 4444 --mode selenium --token "xxxxxxxxx" --project "xxxxxxxxxx" --params-file ".\testdata.js" --name=%test1% --name=%test2%

在这里,我期待我需要运行的测试名称作为变量“名称”的值。例如。如果我有,总共 10 个测试,并且用户选择 2 个或一些测试,这 10 个,那 2 个或那么多数量的测试名称应该分别是变量 test1,test2,test3...etc 的值。因此,用户在构建时选择的测试数量,变量“名称”应该在构建命令中带有相应的测试名称次数。我已经尝试使用 Jenkins 的 Active choice 参数插件,但它提供了一个数组并且我无法在 Build 命令中获取该数组的单个元素。由于我是新手,有人可以帮助我吗?

解决方法

通过将输入字符串转换为您需要的格式,您可以使用 pipeline job 轻松实现这一点。

假设您使用的是扩展选择参数或类似参数,它会将所有选定的值组合成一个字符串,每个值由您选择的分隔符分隔。 假设您的参数名为 Names 并且分隔符为“”,您可以使用以下内容:

node {
    def nameFlags  = Names.split(',').collect { " --name=${it.trim()}" }
    bat "testim --host localhost --port 4444 --mode selenium --token \"xxx\" --project \"xxx\" --params-file \".\\testdata.js\" ${nameFlags.join(' ')}"
}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...