jenkins 中的共享库在参数中不起作用

问题描述 投票:0回答:1

我正在尝试使用共享库来优化我的 Jenkins 脚本。我创建了一个存储库,创建了一个

vars
目录并添加了两个 groovy 脚本:

.
`-- vars
    |-- buildDockerImage.groovy
    `-- getSvnOptions.groovy

这是我的共享库的配置:

enter image description here

当我尝试在管道中使用它们时,它会按预期工作并返回预期的输出,例如

pipeline {
    agent any
    stages {
        stage('Build and Test') {
            steps {
                script {
                    // Use the shared library function
                    def choices = getSvnOptions('https://svn.test.com/svn/projects/scripts', 'trunk', true, true)
                    echo "${choices}"
                }
            }
        }
    }
}

尽管,当我尝试添加要从此函数填充的主动选择参数时,它不起作用:

enter image description here

enter image description here

脚本的返回是['A', 'B', ...]格式。此外,我尝试从 jenkins/script 页面执行它,但出现以下错误:

groovy.lang.MissingMethodException: No signature of method: Script1.getSvnOptions() is applicable for argument types: (java.lang.String, java.lang.String, java.lang.Boolean, java.lang.Boolean) values: [https://svn.test.com/svn/projects/scripts, trunk, true, true]
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:71)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:80)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:193)
    at Script1.run(Script1.groovy:1)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:574)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:612)
    at groovy.lang.GroovyShell.evaluate(GroovyShell.java:583)

同样适用于我的其他方法,它没有任何参数,因此参数不是问题。您知道如何使用此函数来填充活动选择参数吗?

jenkins groovy jenkins-pipeline shared-libraries jenkins-groovy
1个回答
0
投票

重用 Active Choices 脚本的唯一方法是使用 scriptler。全局共享库不会加载到由此参数定义运行的脚本中。您可以在 Active Choices 插件文档中找到此配置的示例。

© www.soinside.com 2019 - 2024. All rights reserved.