Câu trả lời:
Bạn có thể thử một cái gì đó như thế này:
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;
}
Ngoài ra, bạn có thể dùng thử "Thay đổi kể từ Plugin thành công cuối cùng": https://wiki.jenkins.io/display/JENKINS/Changes+Since+Last+Success+Plugin
Nhưng nó sẽ không hoạt động cùng với đường ống, đây là một cách tiếp cận riêng.
Như tôi tìm thấy có thể điều này sẽ giúp bạn. Với điều này, bạn có thể tìm nạp tệp nhật ký thay đổi bản dựng thành công mới nhất của bất kỳ bản dựng dự án nào với Jenkins.
$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