首页 > 解决方案 > 如何在Jenkins-groovy脚本中传递声明为`def`的变量

问题描述

我试图将变量传递sampleArraygroovyScript函数,activeChoiceReactiveParam不幸的是生成的 xml 没有选择值。我在这个游乐场http://job-dsl.herokuapp.com以及真正的 Jenkins 上试过,但没有成功。我的意思是sampleArray' 值没有被复制。请告诉我如何实现

job("try-to-pass-array") {
    def sampleArray = ["one","two","three","four"]
    description("this is to test a element type")
    keepDependencies(false)
    parameters {
        activeChoiceReactiveParam('NUMBERS') {
            description('Choose numbers for which build has to be generated')
            choiceType('MULTI_SELECT')
            groovyScript {
                script('return $sampleArray')
                fallbackScript('"fallback choice"')
            }
        }
    }
    disabled(false)
    concurrentBuild(false)
    steps {
        shell('''
              echo $NUMBERS
              ''')
    }
}

标签: jenkinsgroovyjenkins-groovy

解决方案


您没有使用正确的字符串插值。jenkins (declarative pipeline) 文档有一个很好的例子。

def username = 'Jenkins'
echo 'Hello Mr. ${username}'
echo "I said, Hello Mr. ${username}"

会导致:

Hello Mr. ${username}
I said, Hello Mr. Jenkins

因此,如果您想传递变量的值,请始终使用"and NOT '

tl;博士 script("return ${sampleArray}")


推荐阅读