जेनकिंस पाइपलाइन में अंतिम सफल निर्माण के बाद से सभी परिवर्तन लॉग प्राप्त करें


11

मेरी जेनकिंस पाइपलाइन में, मुझे इसके द्वारा वर्तमान निर्माण के परिवर्तन लॉग मिल सकते हैं।

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

लेकिन यह पाइपलाइन के साथ मिलकर काम नहीं करेगा, यह एक अलग दृष्टिकोण है।


ऐसा लगता है कि यह समाधान पिछले succesaful बिल्ड के परिवर्तन लॉग देता है। जो मैं वास्तव में देख रहा था वह पिछले सफल निर्माण के बाद से chnage log (पिछले असफल बिल्ड में से) था। लेकिन आपका उत्तर निश्चित रूप से मददगार है। बिल्ड.getpreviousebuuld () और पुनरावृत्ति वह था जो मैंने याद किया था। उत्तर के लिए बहुत बहुत धन्यवाद।
मधुमक्खी

1
हमेशा स्वागत ;-)
user54

मुझे संदेह है कि पुनरावर्ती समाधान ढेर से बाहर चल रही समस्याओं में चल सकता है यदि आपके पास बहुत सारे बिल्ड से गुजर रहा है। हालांकि एक पुनरावृत्त प्रक्रिया पर स्विच करना बहुत कठिन नहीं होगा।
आकर्षित किया

1

जैसा कि मैंने पाया यह आपकी मदद कर सकता है। इसके साथ आप जेनकींस के साथ किसी भी प्रोजेक्ट बिल्ड की नवीनतम सफल बिल्ड परिवर्तन लॉग फ़ाइल प्राप्त कर सकते हैं।

$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
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.