簡體   English   中英

Jenkins為什么無法使用可擴展選擇/系統常規選擇參數找到作業對象?

[英]Why can't Jenkins find job object using extensible choice/system groovy choice parameter?

我跟隨Groovy列出了所有作業,以獲取我的作業名稱列表,並獲得了我的作業的確切“全名”,即...

Microservice/build/feature%2Fdev-26387-split-micro-deploy

現在,我要嘗試獲取此工作的所有成功內部版本號。 返回值僅用於調試以查看我要返回哪個值,並且我正在返回一個帶有數字“ 43”的列表,這意味着getJobs()函數返回了null,這意味着它無法找到工作對象。 為什么?

import hudson.model.*

BUILD_JOB_NAME = "Microservice/build/feature%2Fdev-26387-split-micro-deploy"

def getJobs() {
    def hi = Hudson.instance
    return hi.getItems(Job)
}

def getBuildJob() {
    def buildJob = null
    def jobs = getJobs()
    (jobs).each { job ->
        if (job.fullName == BUILD_JOB_NAME) {
            // WHY IS THIS NOT WORKING???
            buildJob = job
        }
    }
    return buildJob
}

def getAllBuildNumbers(Job job) {
     try {
        def buildNumbers = []
        (job.getBuilds()).each { build ->
            def status = build.getBuildStatusSummary().message
            if (status.contains("stable") || status.contains("normal")) {
                buildNumbers.add(build.number)
            }
        }
        /// return buildNumbers
        return ["44"]
    }
    catch (Throwable t) {
        return ["45"]
    }
}

def buildJob = getBuildJob()
if (buildJob == null) {
    return ['43']
}
return getAllBuildNumbers(buildJob)

使用return hi.getAllItems(Job)代替,它應該可以工作。 另外,確保將您的BUILD_JOB_NAME設置為正確的作業名稱。 要檢查作業名稱,請從Hudson.instance.getAllItems(Job).each { println(it.fullName) } > Manage Hudson.instance.getAllItems(Job).each { println(it.fullName) } >腳本控制台運行Hudson.instance.getAllItems(Job).each { println(it.fullName) }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM