【发布时间】:2017-07-06 08:20:15
【问题描述】:
我正在创建自己的 Jenkins 共享库以在管道之间重用一些代码。我知道如何创建步骤(确实很容易),但是当我想在 jenkinsfile(或 Jenkins 在日志中所说的 WorkflowScript)中访问我的“utils 类”时遇到了问题。 我将“Util 类”称为位于文件夹 src/my/domain/... 中的 groovy 类,它有很多方法,例如,我想创建一个这样的日志类:
# src/my/domain/group
package my.domain.group
class Console implements Serializable {
def log(msg) {
spit(msg, '\033[34m')
}
def error(msg) {
spit(msg, '\033[31m')
}
def warning(msg){
spit(msg, '\033[33m')
}
def success(msg){
spit(msg, '\033[32m')
}
private def spit(msg, color){
ansiColor('xterm') {
echo color + msg + '\033[0m'
}
}
}
然后我尝试在 /vars/library.groovy 中的文件中进行实例化,以便可以从 Jenkinsfile 中使用一些代码进行访问,例如:
node("mynode"){
console.log("Hello World!")
}
这个想法是避免在所有脚本中实例化控制台并使其自动生成,我尝试了几种类似
# vars/library.groovy
import my.domain.group.Console
import groovy.transform.Field
@Field String console = new Console()
或
# vars/library.groovy
import my.domain.group.Console
def load(){
this.console = new Console()
// And also
console = new Console()
}
但是当尝试从 jenkins 文件访问时,我总是得到错误: groovy.lang.MissingPropertyException:没有这样的属性:类的控制台:WorkflowScript
我知道这意味着实例不在正确的范围内,因此脚本无法直接看到,但我该怎么做?
谢谢!
【问题讨论】:
标签: jenkins groovy shared-libraries jenkins-pipeline