我想知道是否可以为Jenkins Pipelines显示自定义更改日志。理想情况下,我希望传播下游更改日志,但如果我没有尝试创建从下游版本派生的自定义更改日志。但是,它似乎不起作用(没有查看管道工作区的选项)。
我想知道这是不是我错了,或者它是否真的得到了支持。
这是我用
进行测试的示例代码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 :(得分:0)
在Jenkins管道中,我注意到有一个名为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.changeSets
的类型为GitChangeSetList。从javadoc中,我们可以推导出GitChangeSet中涉及的各种方法。