gpt4 book ai didi

jenkins - 如何在 Jenkins Pipeline 配置中定义和使用函数?

转载 作者:行者123 更新时间:2023-12-03 08:30:12 24 4
gpt4 key购买 nike

我正在尝试创建一个带有函数的任务:

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')
}
}

但这给了我一个异常(exception):

java.lang.NoSuchMethodError: No such DSL method 'BuildAndCopyMibsHere' found among steps*



有没有办法在流水线脚本中使用嵌入式函数?

最佳答案

首先,你不应该添加 $当你在字符串之外时(你的第一个函数中的 $class 是一个异常(exception)),所以它应该是:

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)
}
}

...或者您需要为函数的第二个参数添加一个默认值:
def BuildAndCopyMibsHere(projectName, params = null) {
build job: project, parameters: params
doCopyMibArtefactsHere($projectName)
}

关于jenkins - 如何在 Jenkins Pipeline 配置中定义和使用函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42158539/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com