Antworten:
Sie können so etwas versuchen:
node('my_kubernetes_pod') {
passedBuilds = []
lastSuccessfulBuild(passedBuilds, currentBuild);
def changeLog = getChangeLog(passedBuilds)
echo "changeLog ${changeLog}"
}
def lastSuccessfulBuild(passedBuilds, build) {
if ((build != null) && (build.result != 'SUCCESS')) {
passedBuilds.add(build)
lastSuccessfulBuild(passedBuilds, build.getPreviousBuild())
}
}
@NonCPS
def getChangeLog(passedBuilds) {
def log = ""
for (int x = 0; x < passedBuilds.size(); x++) {
def currentBuild = passedBuilds[x];
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]
log += "* ${entry.msg} by ${entry.author} \n"
}
}
}
return log;
}
Darüber hinaus können Sie "Änderungen seit dem letzten erfolgreichen Plugin" ausprobieren: https://wiki.jenkins.io/display/JENKINS/Changes+Since+Last+Success+Plugin
Es wird jedoch nicht mit der Pipeline zusammenarbeiten. Dies ist ein separater Ansatz.
Wie ich vielleicht festgestellt habe, hilft Ihnen dieser Wille. Mit dieser Funktion können Sie die neueste erfolgreiche Build-Änderungsprotokolldatei aller mit Jenkins erstellten Projekte abrufen.
$DirectoryA = "D:\Jenkins\jobs\projectName\builds" ####Jenkind directory
$firstfolder = Get-ChildItem -Path $DirectoryA | Where-Object {$_.PSIsContainer} | Sort-Object LastWriteTime -Descending | Select-Object -First 1
$DirectoryB = $DirectoryA + "\" + $firstfolder
$sVnLoGfIle = $DirectoryB + "\" + "changelog.xml"
write-host $sVnLoGfIle