jenkins-pipeline - 将模块导入 DSL 作业
问题描述
我正在为我的 Job-DSL Seed 工作编写一个辅助函数,即类似于util/WebHook.groovy
:
package util
import groovy.json.JsonSlurper
class WebHook {
static void create() {
def urls = new JsonSlurper().parseText(list_hooks.execute().text).url
[...]
然后在main.groovy
:
import util.WebHook
WebHook.create()
这似乎工作正常。但是,如果我尝试使用例如来自 Credentials Plugin 的模块,即
import com.cloudbees.plugins.credentials.CredentialsProvider
我收到一个错误:
处理 DSL 脚本 terraform.groovy
错误:启动失败:
工作区:/util/WebHook.groovy:5:无法解析类 com.cloudbees.plugins.credentials.CredentialsProvider
@ 第 5 行,第 1 列。
导入 com.cloudbees.plugins.credentials .CredentialsProvider
这是为什么?是否有解决方法,或者我应该使用不同的方法?
解决方案
您不能从 Job DSL 脚本中的其他插件导入类。
但是根据您的尝试,还有其他方法可以与其他插件中的类进行交互。CredentialsProvider
是一个Descriptor
。您可以使用该Jenkins
实例来查找任何描述符实例:
Jenkins.instance.getExtensionList('com.cloudbees.plugins.credentials.CredentialsProvider')