gpt4 book ai didi

找不到 Jenkins 共享库依赖项

转载 作者:行者123 更新时间:2023-12-03 17:31:21 25 4
gpt4 key购买 nike

我想创建第一个共享库来分解我在 jenkins 管道中的代码。例如,我对所有管道使用两种通知方法,并且希望将它们放在一个位置。所以我搜索了如何创建一个共享库,我已经这样做了:

project tree

在我的 Notify 类中,我的方法:

#!/usr/bin/env groovy

package fr.enterprise

class Notify {
static def notifySuccessful(String targetEnv) {
emailext (
subject: "SUCCESSFUL: New version deployed on $targetEnv",
body: """<html>
<body>
Go try it now! It's better when it's hot.
<br>
<br>With love,
<br>Your Dear Jenkins
</body>
</html>""",
recipientProviders: [[$class: 'RequesterRecipientProvider']]
)
}

static def notifyFailed(String targetEnv, String jobName, String buildUrl, String buildNumber) {
emailext (
subject: "FAILURE: Couldn't deploy new version on $targetEnv",
body: """<html>
<body>
I'm really sorry, but something went wrong when deploying Fides.
<br>
Please have a look at the logs here:
<br><a href="$buildUrl/console">$jobName [$buildNumber]</a>
<br>
<br>With love,
<br>Your Dear Jenkins
</body>
</html>""",
recipientProviders: [[$class: 'RequesterRecipientProvider']]
)
}
}

我在我的管道代码中导入它:
@Library('jenkins-shared-lib')
import fr.enterprise.Notify

而在 Jenkins :
jenkins config

当我的管道想要使用我的方法之一时,出现此错误:
groovy.lang.MissingMethodException: No signature of method: java.lang.Class.emailext() is applicable for argument types: (java.util.LinkedHashMap)

我忘记了什么?

这是我调用我的方法的代码:
success {
script {
Notify.notifySuccessful(params.TARGET_ENV)
}
}
failure {
script {
Notify.notifyFailed(params.TARGET_ENV, env.JOB_NAME, env.BUILD_URL, env.BUILD_NUMBER)
}
}

最佳答案

来自 Jenkins 文档:库类不能直接调用诸如 sh 或 git (或您正在使用的)之类的步骤。
为了做到这一点,你应该做这样的事情

通知.groovy

#! /usr/bin groovy

def notifySuccessful(String targetEnv) {
your code
}
return this

注意 return this 的用法。
然后从管道中声明您可以使用它
@Library('jenkins-shared-lib') _


def notify = new fr.enterprise.Notify()
notify.notifySuccessful("var")

关于找不到 Jenkins 共享库依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53597157/

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