如何在 jenkins 中使用管道插件将参数传递给并行进程



我在 Jenkinsfile 中有以下代码.Step 1: 有值列表。第 2 步:传递该列表以运行。第 3 步:尝试将值动态传递给 java jar。但是这些值没有正确分配。因为它在步骤 (4( 中分配,然后并发触发该过程 (5(。

def numToEcho = [1,10,20,27] ---(1)
def stepsForParallel = [:]
for (int i = 0; i < numToEcho.size(); i++) {
def s = numToEcho.get(i)
    def stepName = "echoing ${s}"
    stepsForParallel[stepName] = transformIntoStep(s) --(4)
}
parallel stepsForParallel  --(5)
def transformIntoStep(inputNum) { ---(2)
    return {
        node {
            echo inputNum
def tb = sh script:' java -jar titanRead.jar $inputNum', returnStdout:true  --(3)
        }
    }
}

现在我想将列表值传递给 jar。就像下面的并行过程一样。

Sh ‘java -jar TitanRead.jar 1’  
Sh ‘java -jar TitanRead.jar 10’  
Sh ‘java -jar TitanRead.jar 20’  
Sh ‘java -jar TitanRead.jar 27’

在罐子里,我读起来像arg[0]。并且它抛出ArrayIndexOutOfBoundException。但是如果我在终端中单独运行jar,它就可以工作了。我怎么能做到这一点..请帮助我解决这个问题。

您问题中的管道似乎与您的描述不符,因为java jar TitanRead.jar不起作用; 您需要使用 -jar .

在任何情况下,您的sh script参数都应使用双引号字符串,否则不会计算$inputNum,即:

sh script: "java -jar TitanRead.jar ${inputNum}"

最新更新