【问题标题】:Jenkins SCM plugin, how do I get a list of every updated file since last build?Jenkins SCM 插件,如何获取自上次构建以来每个更新文件的列表?
【发布时间】:2019-07-09 05:30:17
【问题描述】:

我有一个 Jenkins 管道构建,我想遍历自上次构建以来更新的所有文件。我环顾四周,认为当前构建对象的 changeSets 变量可能有效。所以我尝试了这个:

def gitUrl = "git@gitlab.xxx.com:me/myrepo.git"
def gitResponse = dir(".") { checkout([
  $class: 'GitSCM', branches: [[name: '*/master']],
  userRemoteConfigs: [[url: gitUrl,credentialsId:'xxxkey']]
]) }
// don't do anything if nothing changed
if(gitResponse.GIT_COMMIT == gitResponse.GIT_PREVIOUS_COMMIT) {
  echo "No changes detected."
  return
}
def changeLogSets = currentBuild.changeSets
for (int i = 0; i < changeLogSets.size(); i++) {
  def entries = changeLogSets[i].items
  for (int j = 0; j < entries.length; j++) {
    def entry = entries[j]
    echo "Change detected: ${entry}"
  }
}

但我收到此错误:

Caused: java.io.NotSerializableException: hudson.plugins.git.GitChangeSetList

有什么方法可以列出自上次构建以来每个更改的文件?

【问题讨论】:

    标签: jenkins


    【解决方案1】:

    我创建了脚本管道,用于打印当前构建中引入的更改:

    node {
        checkout([$class: 'GitSCM', branches: [[name: 'YOUR_BRANCH']],
         userRemoteConfigs: [[url: 'YOUR_GIT_URL']]])      
        stage('TEST') {
            def changeLogSets = currentBuild.changeSets
            for (int i = 0; i < changeLogSets.size(); i++) {
              def entries = changeLogSets[i].items
              for (int j = 0; j < entries.length; j++) {
                def entry = entries[j]
                entry.getAffectedPaths().each {
                    echo "Change detected: ${it}"   
                }
              }
            }
        }
    }
    

    【讨论】:

      【解决方案2】:

      为了以更实用的方式解释 Krzysztof 的答案,您可以获得修改后的路径集,如下所示:

      def paths = currentBuild
        .changeSets.collectMany {
          it.items.collectMany {
            it.affectedPaths
          }
        }.unique()
      

      然后您可以使用echo paths.join('\n') 进行检查。您可以在 script 步骤内的声明性管道中使用它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-26
        • 2014-03-29
        • 2018-09-23
        • 1970-01-01
        • 1970-01-01
        • 2010-11-21
        • 1970-01-01
        相关资源
        最近更新 更多