Jenkins Pipeline에서 마지막으로 성공적인 빌드 이후의 모든 변경 로그 가져 오기


11

내 Jenkins 파이프 라인에서 현재 빌드의 변경 로그를 얻을 수 있습니다.

def changeLogSets = currentBuild.changeSets

마지막으로 성공적인 빌드 이후 모든 변경 로그를 얻는 방법이 있습니까?

답변:


9

다음과 같이 시도해보십시오.

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

그러나 파이프 라인과 함께 작동하지는 않지만 별도의 접근 방식입니다.


이 솔루션은 마지막으로 성공한 빌드의 변경 로그를 제공하는 것 같습니다. 내가 실제로 찾은 것은 마지막 성공적인 빌드 이후 chnage 로그 (마지막으로 실패한 빌드)였습니다. 그러나 귀하의 답변은 분명히 도움이됩니다. Build.getpreviousebuuld () 및 재귀는 내가 놓친 것입니다. 답변 주셔서 감사합니다.
Bee

1
항상 환영합니다 ;-)
user54

재귀 솔루션이 많은 빌드를 거치면 스택이 부족한 문제가 발생할 수 있다고 생각합니다. 그래도 반복 프로세스로 전환하기가 어렵지 않습니다.
drewish

1

내가 찾은 것처럼 이것이 도움이 될 것입니다. 이를 통해 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.