git - Jenkinsfile,获取PR中所有修改过的文件

标签 git jenkins continuous-integration jenkins-pipeline

我想在 PR 中有一个修改文件列表,我尝试了一些解决方案,但我只能访问推送到远程的最后一次提交中的修改文件。

示例:

  • 创建一个包含 3 次提交的 PR,一个新的 jenkins 作业开始;
  • 修改文件列表包括来自 3 次提交的所有文件;
  • 构建失败,将带有修复的新提交推送到 PR,新的 jenkins 作业开始;
  • 修改文件列表只包含新提交的文件;

所以,在这个例子中,我想获得 PR 中所有新提交的文件列表。

代码:

  def changeLogSets = currentBuild.rawBuild.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]
            def files = new ArrayList(entry.affectedFiles)
            for (int k = 0; k < files.size(); k++) {
                def file = files[k]
                print file.path 
            }
        }
    }

最佳答案

使用 Git 插件(如果您尚未使用)。然后是这样的:

git diff --name-status $GIT_PREVIOUS_SUCCESSFUL_COMMIT..$GIT_COMMIT > allchanges

这将为您提供自上次成功构建以来所有更改的列表。

关于git - Jenkinsfile,获取PR中所有修改过的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56375743/

相关文章:

git - 如何从下游的 Github 分支中找到最好的变化?

c# - Git mega 压缩具有相同消息和作者的所有顺序提交

ios - 如何连接 Xcode 9 和 GitHub?

jenkins - Jenkins 管道中是否有相当于 Heavy Job 的插件?

jenkins - hudson / Jenkins : Get list of jobs who's build is older than a month

git - 从 Dockerfile 克隆私有(private) git 存储库

jenkins - 只有在特定分支上有推送时,才可以使用 webhook 吗?

GIT fatal error : ambiguous argument 'HEAD' : unknown revision or path not in the working tree in Travis

android - 如何并行运行独立的 Robotium UI 测试?

build - 使用 Azure 函数为 Windows 版本构建软件?