我有一个Jenkins共享库
在src/org/helpers
下,我有一个groovy文件ErrorHolder.groovy
package org.helpers
class ErrorHolder {
private String message = ""
def echo_error(String msg) {
println "[\033[91;1mError\033[0m] ${msg}"
}
def emit_error(String msg) {
echo_error(msg)
message = msg
error(msg)
}
def getMessage() {
return message
}
}
在管道中,类被初始化并调用函数emit_error
import org.helpers.*
void call () {
currentBuild.result = 'SUCCESS'
ErrorHolder errorHolder = new ErrorHolder()
pipeline {
agent any
options { ansiColor('xterm') }
stages {
stage ('Clean Workspace') {
steps {
script {
println "Debug: $errorHolder"
errorHolder.emit_error("Test Error")
}
}
}
}
}
}
然而,在这方面,
我确实看到了第一个调试打印,println "Debug: $errorHolder"
我在控制台中的函数echo_error
的print语句输出中没有看到,
我得到一个错误:hudson.remoting.ProxyException: groovy.lang.MissingMethodException: No signature of method: org.helpers.ErrorHolder.error() is applicable for argument types
我有两个问题:
1.如何从类中调用错误内置函数?
1.如何使print语句工作?
1条答案
按热度按时间ki0zmccv1#
在Jenkins Pipeline上下文中可用的函数不会自动在您正在构建的自定义类中可用。这包括像
sh
,bat
,error
,echo
这样的函数,以及来自不同插件或Jenkins核心库的管道中的所有其他函数。要在类中使用这些函数,您需要将包含这些函数的相关脚本上下文传递给类构造函数,然后调用抛出上下文的函数。举例来说:
你现在可以调用任何管道可用的函数抛出脚本变量。
现在,当你在管道中初始化你的类时,传递上下文如下:
如果你想让它更容易使用,你可以使用库脚本作为连接器。为此,您可以在共享库
vars
文件夹中创建一个名为ErrorHolder.groovy
的适配器文件:那么在你的管道中你就不需要import语句了,用法如下: