Dr.*_*eel 34 groovy jenkins 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')
}
}
Run Code Online (Sandbox Code Playgroud)
但是这给我一个例外:java.lang.NoSuchMethodError:在步骤中找不到这样的DSL方法'BuildAndCopyMibsHere'
有没有办法在Pipline脚本中使用嵌入式功能?
Jon*_*n S 30
首先,$当你在字符串之外时不应该添加(例外是$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)
}
...
Run Code Online (Sandbox Code Playgroud)
现在,至于你的问题,第二个函数接受两个参数,而你只在调用时提供一个参数.您必须在通话时提供两个参数:
...
node {
stage('Prepare Mib'){
BuildAndCopyMibsHere('project1', null)
}
}
Run Code Online (Sandbox Code Playgroud)
...或者你需要在函数的第二个参数中添加一个默认值:
def BuildAndCopyMibsHere(projectName, params = null) {
build job: project, parameters: params
doCopyMibArtefactsHere($projectName)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
64129 次 |
| 最近记录: |