Jenkins 流水线如何使用变量中的参数运行构建作业

Jenkins pipeline how to run build job with parameters from variables

提问人:Pawel 提问时间:11/7/2023 最后编辑:Pawel 更新时间:11/8/2023 访问量:102

问:

在 jenkins 管道中,我想使用变量 job_path 和 job_params 运行“构建作业”。 但更多时候job_path = "long/path/to/different/jobs"job_params = [string(name: 'app_one', value: '4.8.6')]job_params = "[string(name: 'app_one', value: '4.8.6'), string(name: 'app_three ', value: '1.2.4'), string(name: 'app_ten', value: '2.7.1')]"

pipeline {
    stages {
        stage('Deployment') {
            steps {
                script {
                    build job: "${job_path}", parameters: job_params
                }
            }
        }
    }
}

路径工作完美,但 param 不行。 我收到一个错误,说需要一个列表并提供了一个字符串。

java.lang.ClassCastException: class org.jenkinsci.plugins.workflow.support.steps.build.BuildTriggerStep.setParameters() expects java.util.List<hudson.model.ParameterValue> but received class java.lang.String

第二个:

Also:   org.jenkinsci.plugins.workflow.actions.ErrorAction$ErrorId: xyz
Caused: java.lang.IllegalArgumentException: Could not instantiate {job=long/path/to/different/jobs, parameters=[string(name: 'app_one', value: '4.8.6')]} for org.jenkinsci.plugins.workflow.support.steps.build.BuildTriggerStep

我尝试将这个参数变量转换为列表, 请告诉我运行作业的最佳方法,按路径指出,参数数量随机。

Jenkins Groovy 参数传递 管道

评论

0赞 daggett 11/7/2023
显示您如何分配 .错误很清楚是字符串值而不是数组......list_paramlist_param
0赞 Pawel 11/7/2023
@daggett赋值就像我的问题一样,而且它无疑是一个字符串值,你能告诉我如何将其转换为列表或如何使其工作吗?list_param = [string(name: 'app_one', value: '4.8.6')]
0赞 daggett 11/7/2023
不幸的是,如果没有代码,就无法准确判断问题所在。到目前为止有两个猜测:您已声明为字符串。 您正在通过仅支持字符串值的环境变量在阶段/步骤之间传输变量。1/job_params2/
0赞 Pawel 11/7/2023
嗨@daggett我从远程存储(json文件)获取的参数变量,参数值是一个字符串,但我可以修改它。现在,当我尝试使它工作时,我在管道中声明字符串变量,所以你是对的。 也许我会更好地定义这个问题,job_params变量应该是什么样子,但参数的数量是事先未知的,键名及其值会发生变化。变量的形式可以由我修改,并将从外部文件加载到管道中。build job: "${job_path}", parameters: job_params

答:

0赞 Sam Kisada 11/8/2023 #1

你声明字符串:

job_params = "[string(name: 'app_one', value: '4.8.6'), string(name: 'app_three ', value: '1.2.4'), string(name: 'app_ten', value: '2.7.1')]"

java.lang.ClassCastException: class org.jenkinsci.plugins.workflow.support.steps.build.BuildTriggerStep.setParameters() expects java.util.List<hudson.model.ParameterValue> but received class java.lang.String

参数操作使用列表def List job_params = [ string(name: 'app_one', value: '4.8.6'), string(name: 'app_three ', value: '1.2.4'), string(name: 'app_ten', value: '2.7.1') ]