如何从Jenkins获取SVN中已更改文件的列表

时间:2013-11-20 15:04:50

标签: svn groovy jenkins

Process only changed files

将SVN与Jenkins一起使用,我需要将已更改文件的列表传递给其他进程。使用上面链接中的代码,我得到如下结果:脚本返回:[hudson.scm.SubversionChangeLogSet$Path@6e78d3d7]

我不熟悉Groovy。有人可以帮帮我吗?感谢。

import hudson.model.*
import hudson.util.*
import hudson.scm.*
import hudson.scm.SubversionChangeLogSet.LogEntry

// work with current build
def build = Thread.currentThread()?.executable

// for testing, use last build or specific build number
//def item = hudson.model.Hudson.instance.getItem("Update_SRC_Branch") 
//def build = item.getLastBuild()   
//def build = item.getBuildByNumber(35)   

// get ChangesSets with all changed items
def changeSet= build.getChangeSet()
List<LogEntry> items = changeSet.getItems()

def affectedFiles = items.collect { it.paths }
def fileNames = affectedFiles.flatten()

new File("/tmp/svn.change.list").withWriter { out ->
    fileNames.each {
      out.println it
    }
  }

2 个答案:

答案 0 :(得分:0)

这意味着您有一个these

列表

尝试

fileNames.each {
  out.println it.path
}

答案 1 :(得分:0)

对Build Flows使用currentExecutable而不是可执行文件。