Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jenkins 詹金斯共享图书馆_Jenkins_Groovy - Fatal编程技术网

Jenkins 詹金斯共享图书馆

Jenkins 詹金斯共享图书馆,jenkins,groovy,Jenkins,Groovy,我正在为我的Jenkins构建建立一个共享库。我以前很少真正使用groovy,所以现在我正在关注文档(总是一个好的开始:-),并创建了一个位于/vars/myFile.groovy的文件 现在我有了一个需要使用的列表(在下面的例子中缩短了),现在我已经将它放在了一个方法中,但是我是否正确地认为它在方法之外会更好,这样它只实例化一次而不是每次调用该方法时都实例化一次 /vars/myFile.groovy #!/usr/bin/groovy def slack_handle(String dev

我正在为我的Jenkins构建建立一个共享库。我以前很少真正使用groovy,所以现在我正在关注文档(总是一个好的开始:-),并创建了一个位于
/vars/myFile.groovy
的文件

现在我有了一个需要使用的列表(在下面的例子中缩短了),现在我已经将它放在了一个方法中,但是我是否正确地认为它在方法之外会更好,这样它只实例化一次而不是每次调用该方法时都实例化一次

/vars/myFile.groovy

#!/usr/bin/groovy

def slack_handle(String dev_name) {
  developerList = [
     [name: "Richard Lewis", slack_handle: "<@richardlewis123>"],
     [name: "Mark Turner", slack_handle: "<@markTurner123>"]
    ]
  return developerList.find {it['name'] == dev_name}?.get("slack_handle")
}

def other_method() {

}

def another_method() {

}
但是当Jenkins作业运行时,developerList是未声明的


所以我的问题是,列表应该在方法之外声明,还是在本例中,在它所在的位置可以吗?

您需要用@Field注释列表

import groovy.transform.Field

def call(String dev_name) {
    return slack_handle(dev_name)
}

def slack_handle(String dev_name) {
    return developerList.find {it['name'] == dev_name}?.get("slack_handle")
}

def otherMethod() {
    echo "I got called"
}

@Field
def developerList = [
    [name: "Richard Lewis", slack_handle: "<@richardlewis123>"],
    [name: "Mark Turner", slack_handle: "<@markTurner123>"]
]

感谢您的帮助,我已经更新了我的问题,尽管我在文件中有其他方法,我相信这会影响
调用的使用方式?我也尝试了直接调用:工作方式相同:myFile.slack\u handle(“Mark Turner”)/myFile.other\u method()修改了我的帖子谢谢您的帮助,帮助我了解了更多的事情:-)
final def developerList = [
     [name: "Richard Lewis", slack_handle: "<@richardlewis123>"],
     [name: "Mark Turner", slack_handle: "<@markTurner123>"]
    ]

def slack_handle(String dev_name) {
  return developerList.find {it['name'] == dev_name}?.get("slack_handle")
}

def other_method() {

}

def another_method() {

}
import groovy.transform.Field

def call(String dev_name) {
    return slack_handle(dev_name)
}

def slack_handle(String dev_name) {
    return developerList.find {it['name'] == dev_name}?.get("slack_handle")
}

def otherMethod() {
    echo "I got called"
}

@Field
def developerList = [
    [name: "Richard Lewis", slack_handle: "<@richardlewis123>"],
    [name: "Mark Turner", slack_handle: "<@markTurner123>"]
]
node {
    stage('Call Function') {
        // either
        echo myFile("Mark Turner")
        // or
        echo myFile.slack_handle("Mark Turner")
        myFile.otherMethod()
    }
}