在Jenkins管道插件上的pull请求中未检测到更改

Mic*_*ael 7 jenkins jenkins-plugins jenkins-pipeline

我将Jenkins配置为构建拉取请求(PR).我们的存储库是一个多项目存储库,我创建了一个脚本来检测对源代码所做的更改,并且只运行与其中包含更改的项目相关的测试(根据更改的文件路径):

def getChangedProjects() {
  Set projects = []
  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]
          def files = new ArrayList(entry.affectedFiles)
          for (int k = 0; k < files.size(); k++) {
            def file = files[k]
            // get the project folder name and
            // add it to changed projects set
            projects.add(file.path.tokenize('/')[1])
          }
      }
  }
  return projects.findAll {it != null}
}
Run Code Online (Sandbox Code Playgroud)

Groovy函数按预期工作,并检测已更改的文件夹.

问题是Jenkins大多数时候不会在Jenkins中显示任何变化:

更改未显示

但PR确实包含了对文件的更改,我当然可以在Github中看到这些更改.

任何人都知道Jenkins为什么没有显示这些变化?

San*_*dev 1

您可以通过在 Jenkins 管道脚本中包含Git Changelog步骤来创建更改日志。

插件提供了一个上下文对象,其中包含创建更改日志所需的所有信息。它还可以提供一个字符串,该字符串是渲染的变更日志,可供发布。

以下是该插件生成的 Git 变更日志示例的屏幕截图:

Git 变更日志


有关此插件的更多信息可以在其wiki 中找到。

希望能帮助到你。