2016-09-19 58 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中涉及的各種方法。