如何在Jenkins Pipeline配置中定义和使用函数?
我试图创建一个内部功能的任务:如何在Jenkins Pipeline配置中定义和使用函数?
def doCopyMibArtefactsHere(projectName) {
step ([
$class: 'CopyArtifact',
projectName: projectName,
filter: '**/**.mib',
fingerprintArtifacts: true,
flatten: true
]);
}
def BuildAndCopyMibsHere(projectName, params = [:]) {
build job: project, parameters: params
doCopyMibArtefactsHere(projectName)
}
node {
stage('Prepare Mib'){
BuildAndCopyMibsHere('project1')
}
}
但这gves我一个例外:java.lang.NoSuchMethodError:没有这样的DSL方法“BuildAndCopyMibsHere”步骤中发现
有没有什么方法可以在Pipline脚本中使用嵌入式函数?
的,你不应该添加$
当你的字符串(例外是$class
在你第一个函数,所以它应该是外第一:现在
def doCopyMibArtefactsHere(projectName) {
step ([
$class: 'CopyArtifact',
projectName: projectName,
filter: '**/**.mib',
fingerprintArtifacts: true,
flatten: true
]);
}
def BuildAndCopyMibsHere(projectName, params) {
build job: project, parameters: params
doCopyMibArtefactsHere(projectName)
}
...
,为您的问题,第二个函数有两个参数,而你只在调用中提供一个参数,无论你在通话提供两个参数:
...
node {
stage('Prepare Mib'){
BuildAndCopyMibsHere('project1', null)
}
}
...或者你需要一个默认值添加到职能的第二个主张nt:
def BuildAndCopyMibsHere(projectName, params = null) {
build job: project, parameters: params
doCopyMibArtefactsHere($projectName)
}
解决!致电build job: project, parameters: params
失败,出现错误java.lang.UnsupportedOperationException: must specify $class with an implementation of interface java.util.List
时params = [:]
。用params = null
代替它解决了这个问题。 这里的工作代码如下。
def doCopyMibArtefactsHere(projectName) {
step ([
$class: 'CopyArtifact',
projectName: projectName,
filter: '**/**.mib',
fingerprintArtifacts: true,
flatten: true
]);
}
def BuildAndCopyMibsHere(projectName, params = null) {
build job: project, parameters: params
doCopyMibArtefactsHere(projectName)
}
node {
stage('Prepare Mib'){
BuildAndCopyMibsHere('project1')
}
}
我的坏,很好,你有最后的错误解决:)我已经更新了我的答案上面。 –
谢谢你正确的方法) –
好的。现在它说'java.lang.UnsupportedOperationException:必须指定具有接口java.util.List'的实现的$ class。 P.S.原始代码更正 - $替换的地方没有字符串。 –
奇怪,看起来像是一个单独的问题,尝试使用片段生成器来重新生成复制人工制品步骤。如果它仍然失败,我会建议发布一个新问题,因为这是一个单独的问题。 –