Jenkins Pipeline正在抛出非法争论异常

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins Pipeline正在抛出非法争论异常相关的知识,希望对你有一定的参考价值。

我正在创建一个Pipeline Parallel suite作业,它将使用传递的参数触发其他独立作业。但是管道在执行后抛出了非法的参数异常。使用的代码是将4个参数传递给创建的作业并放在同一文件夹下。

使用的脚本:

node{
    environment_url=DeploymentEnvmt
    BrowserName=Browse          
parallel (
   { 
  build job: 'test_job', parameters: [[$class: 'StringParameterValue',name: 'baseUrlFromDeploymentJob', value: "$environment_url"],[$class: 'StringParameterValue', name: 'dynamicHubUrlTarget', value: "http://test.x.x.x/wd/hub"],[$class: 'StringParameterValue', name: 'reDirectHubUrlVal', value: "yes"],[$class: 'StringParameterValue', name: 'Browser', value: "$BrowserName"]] })

例外:

java.lang.IllegalArgumentException: Expected named arguments but got org.jenkinsci.plugins.workflow.cps.CpsClosure2@d78a0b
    at org.jenkinsci.plugins.workflow.cps.DSL.singleParam(DSL.java:542)
    at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:530)
    at org.jenkinsci.plugins.workflow.cps.DSL.parseArgs(DSL.java:470)
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeStep(DSL.java:183)
    at org.jenkinsci.plugins.workflow.cps.DSL.invokeMethod(DSL.java:153)
    at org.jenkinsci.plugins.workflow.cps.CpsScript.invokeMethod(CpsScript.java:108)
    at sun.reflect.GeneratedMethodAccessor493.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1213)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)

请帮助解决非法参数异常错误。需要针对语法进行纠正的内容

答案

它必须是Map<String, Closure>,而不是封闭。 This将对您有所帮助。

parallel(
    build(
        job: 'test_job',
        parameters:
            [[$class: 'StringParameterValue', name: 'baseUrlFromDeploymentJob', value: "$environment_url"],
                [$class: 'StringParameterValue', name: 'dynamicHubUrlTarget', value: "http://test.x.x.x/wd/hub"],
                [$class: 'StringParameterValue', name: 'reDirectHubUrlVal', value: "yes"],
                [$class: 'StringParameterValue', name: 'Browser', value:
                    "$BrowserName"]
            ]
    )
)

您还可以简化您的parameters地图:

parallel(
  build(
      job: 'test_job',
      parameters: [
          string(name: 'baseUrlFromDeploymentJob', value: "$environment_url"),
          string(name: 'dynamicHubUrlTarget', value: "http://test.x.x.x/wd/hub"),
          string(name: 'reDirectHubUrlVal', value: "yes"),
          string(name: 'Browser', value: "$BrowserName")
    ]
  )
)

附:感谢@mkobit的纠正。

以上是关于Jenkins Pipeline正在抛出非法争论异常的主要内容,如果未能解决你的问题,请参考以下文章

jenkins的视图创建

Jenkins Pipeline - 我们可以在 jenkins 管道之外运行工作吗?

多模块本地 jar 依赖项 - Jenkins Pipeline

在 Jenkins Pipeline 中访问本地运行的容器

Jenkins长大了,Pipeline该用起来了!

在容器中运行 Jenkins pipeline 任务