2016-09-19 59 views
1

我想知道是否有可能为Jenkins管道显示自定义更改日志。理想情况下,我想宣传下游的更新日志,但如果失败,我尝试创建从下游版本派生的自定义更改日志。但是,它看起来不起作用(无法查看管道的工作空间)。Jenkins管道中的自定义更改日志

我想知道这是否是我刚刚发生错误或是否实际支持。

这是示例代码我与

node('master') 
{ 
    stage('Source') 
    { 
     build 'SourceBuild' 

     def rootDir = currentBuild.rawBuild.getRootDir().toString() 
     echo rootDir 
     def changelog = new File(rootDir, "changelog.xml") 
     PrintWriter writer = new PrintWriter(new FileWriter(changelog)); 
     writer.println("<?xml version=\"1.0\" encoding=\"UTF-8\"?>"); 
     writer.println("<changelog>"); 
     writer.println(String.format("\t\t<user>%s</user>", 'User')); 
     writer.println(String.format("\t\t<comment>Change</comment>", 'Comment')); 
     writer.println("\t</changeset>"); 
     writer.println("</changelog>"); 
     writer.close(); 
    } 
} 

非常感谢

回答

0

在詹金斯管道进行测试时,我注意到有一个名为currentBuild一个全局变量。它有一个名为changeSets的可读属性。我宁愿采取与管道这种方法,而不是玩弄changelog.xml

stage('some name') { 
    def gitChangeSetList = currentBuild.changeSets 
    formatGitChangeLog(gitChangeSetList) 
} 

def formatGitChangeLog(GitChangeSetList changeSetList) { 
    def formatStr = "" 
     for (setItem in changeSetList) { 
      for (change in setItem.getLogs()) { 
       formatStr += "${change.getAuthor().getDisplayName()}: ${change.getMsg()}\n" 
      } 
     } 
    return formatStr 
} 

currentBuild.changeSetsGitChangeSetList类型。从javadoc中,我们可以推导出GitChangeSet中涉及的各种方法。