জেনকিনস পাইপলাইনে সর্বশেষ সফল বিল্ড হওয়ার পরে সমস্ত পরিবর্তন লগ পান Get


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+ সর্বশেষ + সাফল্য + প্লাগইন

তবে এটি পাইপলাইনের সাথে একসাথে কাজ করবে না, এটি একটি পৃথক পদ্ধতি।


দেখে মনে হচ্ছে এই সমাধানটি সর্বশেষ সাফল্যজনক বিল্ডগুলির পরিবর্তন লগগুলি দেয়। আমি আসলে যা খুঁজছিলাম তা ছিল শেষ সফল বিল্ডের পর থেকে চেনেজ লগ (সর্বশেষ ব্যর্থ বিল্ডগুলির)। তবে আপনার উত্তরটি অবশ্যই সহায়ক। বিল্ড.জেটপ্রিভিউসবাউল্ড () এবং পুনরাবৃত্তি যা আমি মিস করেছি had উত্তরের জন্য আপনাকে অনেক ধন্যবাদ।
মৌমাছি

1
সর্বদা স্বাগতম ;-)
ব্যবহারকারীর 4

আমি সন্দেহ করি যে পুনরাবৃত্ত সমাধানটি যদি অনেকগুলি বিল্ডিংয়ের মধ্যে দিয়ে চলে যায় তবে স্ট্যাকের বাইরে চলে আসা সমস্যাগুলির মধ্যে চলে যেতে পারে। যদিও পুনরাবৃত্তির প্রক্রিয়াতে স্যুইচ করা খুব কঠিন হবে না।
অনুমান করুন

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
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.