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

标签 java jenkins parallel-processing jenkins-plugins jenkins-pipeline

我在 Jenkinsfile 中有以下代码。第 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’

在 jar 内,我读的是 arg[0]..并且它抛出 ArrayIndexOutOfBoundException..但是如果我在终端中单独运行 jar,它正在工作..我该怎么做..请帮助我解决这个问题.

最佳答案

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

无论如何,您的 sh script 参数应使用双引号字符串,否则 $inputNum 将不会被评估,即:

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

关于java - 如何使用jenkins中的管道插件将参数传递给并行进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42840842/

相关文章:

ios - 使用 Jenkins 构建 iOS 应用程序

linux - 127 构建步骤 > 'Execute shell script on remote host using ssh' 标记构建为 > 失败完成 : FAILURE

multithreading - Web-Wokers,并发还是并行?

java - 尽管文件位于同一目录中,但无法打开文件进行读取

java - 使用 Vaadin + Spring Security + Ldap 自定义登录表单

java - 如何编译 google-fhir 原型(prototype)文件

c# - 如何并行运行多个进程但在每个进程内按顺序执行

java - Android,如何禁用锁屏/屏幕超时(独立于 API 版本)

jenkins - 多分支管道 - 配置分支项目

c - 查找数组中最大数的多线程算法的性能