ในท่อส่งเจนกินส์ของฉันฉันจะได้รับบันทึกการเปลี่ยนแปลงของการสร้างปัจจุบันโดยสิ่งนี้
def changeLogSets = currentBuild.changeSets
มีวิธีรับบันทึกการเปลี่ยนแปลงทั้งหมดหรือไม่ตั้งแต่สร้างสำเร็จครั้งล่าสุด
ในท่อส่งเจนกินส์ของฉันฉันจะได้รับบันทึกการเปลี่ยนแปลงของการสร้างปัจจุบันโดยสิ่งนี้
def changeLogSets = currentBuild.changeSets
มีวิธีรับบันทึกการเปลี่ยนแปลงทั้งหมดหรือไม่ตั้งแต่สร้างสำเร็จครั้งล่าสุด
คำตอบ:
คุณอาจลองทำสิ่งนี้:
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;
}
นอกจากนี้คุณอาจลองใช้ "การเปลี่ยนแปลงตั้งแต่ปลั๊กอินสำเร็จครั้งสุดท้าย": https://wiki.jenkins.io/display/JENKINS/Changes+Since+Last+Success+Plugin
แต่มันจะไม่ทำงานร่วมกับไปป์ไลน์นี่เป็นแนวทางที่แยกจากกัน
อย่างที่ฉันพบอาจเป็นสิ่งนี้จะช่วยคุณได้ ด้วยวิธีนี้คุณสามารถดึงไฟล์บันทึกการเปลี่ยนแปลงบิลด์ที่สำเร็จล่าสุดของบิลด์โครงการใด ๆ ด้วยเจนกินส์
$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