我有一个jenkins构建,需要获取在变更集中签入的所有文件的文件名。
我在奴隶计算机上安装了groovy并配置了Jenkins来使用它。我正在运行下面的脚本应该返回名称(或者我认为这也可能是错误的)并打印到控制台屏幕但是我收到此错误:
groovy.lang.MissingPropertyException: No such property: paths for class: hudson.plugins.tfs.model.ChangeSet
这是Groovy系统脚本:
import hudson.plugins.tfs.model.ChangeSet
// work with current build
def build = Thread.currentThread()?.executable
// get ChangesSets with all changed items
def changeSet= build.getChangeSet()
def items = changeSet.getItems()
def affectedFiles = items.collect { it.paths }
// get file names
def fileNames = affectedFiles.flatten().findResults
fileNames.each {
println "Item: $it" // `it` is an implicit parameter corresponding to the current element
}
我是Groovy和Jenkins的新手,所以如果它的语法问题或者如果我错过了一步,请告诉我。
答案 0 :(得分:1)
我不知道您使用的jenkins
版本,但根据ChangeSet
的源代码,您可以找到here我建议您替换第9
行用:
def affectedFiles = items.collect { it.getAffectedPaths() }
// or with the equivalent more groovy-idiomatic version
def affectedFiles = items.collect { it.affectedPaths }
如果会有更多问题,请随意评论答案。