Почему Дженкинс не может найти объект задания, используя параметр расширяемого выбора / системного выбора? - PullRequest
0 голосов
/ 06 ноября 2018

Я следовал Groovy, чтобы перечислить все вакансии , чтобы получить список имен своих должностей, и получил точное "полное имя" моей работы, которое ...

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

Теперь у меня есть это, чтобы попытаться получить все успешные номера сборки для этой работы. Возвращаемые значения предназначены только для отладки, чтобы увидеть, какое значение я возвращаю, и я возвращаю список с номером «43», что означает, что функция getJobs () вернула ноль, то есть она не смогла найти объект работы. Почему?

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)

1 Ответ

0 голосов
/ 06 ноября 2018

Используйте return hi.getAllItems(Job) вместо этого, и оно должно работать. Также убедитесь, что в вашем BUILD_JOB_NAME указано правильное имя. Чтобы проверить имя задания, запустите Hudson.instance.getAllItems(Job).each { println(it.fullName) } из Jenkins -> Управление Jenkins -> Консоль сценариев

...