具有动态参数的詹金斯管道

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了具有动态参数的詹金斯管道相关的知识,希望对你有一定的参考价值。

我有一个在Windows上运行多个代理的Jenkins。我想要一个带有动态参数的管道,该管道应填充Windows代理上的文件夹列表。我得到以下代码:

def listSDKVersions() {
    return{
        agent { label 'windows' }
        stage {
            bat "dir Z:\\ /b"
        }
    }
}

def SDKVersions = listSDKVersions()

pipeline {
    agent { label 'windows && docker' }
    parameters {
        choice(name: 'SDK', choices: SDKVersions , description: 'SDK Version')
    }
}

但是当我执行它时,出现以下错误:

java.lang.IllegalArgumentException: expected String or List, but got org.jenkinsci.plugins.workflow.cps.CpsClosure2
    at hudson.model.ChoiceParameterDefinition.setChoices(ChoiceParameterDefinition.java:105)

有人知道如何正确执行此操作,或者甚至可能吗?

答案

让它像这样运行:

def listSDKVersions() {
    return{
        node('windows'){
            def folders = bat(script:"@dir Z:\\ /b", returnStdout:true)
            return folders
        }
    }
}

def SDKVersions = listSDKVersions().call()

pipeline {
    agent { label 'windows && docker' }
    parameters {
        choice(name: 'SDK', choices: SDKVersions , description: 'SDK Version')
    }
}

以上是关于具有动态参数的詹金斯管道的主要内容,如果未能解决你的问题,请参考以下文章

如何访问Jenkins管道脚本中的参数?

如何从詹金斯管道中选择声纳质量门?

如何使用詹金斯管道将战争部署到tomcat?

如何在另一个詹金斯管道B中调用詹金斯管道A

詹金斯管道:代理与节点?

詹金斯管道的企业社会责任批准