当前位置: 首页 > 知识库问答 >
问题:

如何将管道中的布尔参数值传递给下游作业?

李华茂
2023-03-14

我使用的是Jenkins v2.1,它具有集成交付管道功能(https://jenkins.io/solutions/pipeline/)协调两个现有构建(构建和部署)。

在我的参数化构建中,我有3个用户参数设置,这些参数也需要在管道中选择。

管道脚本如下所示:

node: {
    stage 'build'
    build job: 'build', parameters: [[$class: 'StringParameterValue', name: 'target', value: target], [$class: 'ListSubversionTagsParameterValue', name: 'release', tag: release], [$class: 'BooleanParameterValue', name: 'update_composer', value: update_composer]]

    stage 'deploy'
    build job: 'deploy', parameters: [[$class: 'StringParameterValue', name: 'target', value: target]]
}

除了BooleanParameterValue之外,这可以正常工作。当我构建管道时,会抛出以下错误:

java.lang.ClassCastException: hudson.model.BooleanParameterValue.value expects boolean but received class java.lang.String

如何解决此类型转换错误?或者更好的是,是否有一种不那么麻烦的方法,可以将所有管道参数传递给下游作业。

共有3个答案

澹台成龙
2023-03-14

就像Jesse Jesse Glick和abguy所说的,可以将字符串枚举为布尔类型:

Boolean.valueOf(string_variable)

或将相反的布尔值转换成字符串:

String.valueOf(boolean_variable)

在我的例子中,我必须将布尔参数下游到另一个作业。因此,您需要使用类BooleanParameterValue:

build job: 'downstream_job_name', parameters:
[
[$class: 'BooleanParameterValue', name: 'parameter_name', value: false],
], wait: true
楚墨一
2023-03-14

假设的

value: update_composer

是个问题,试试看

value: Boolean.valueOf(update_composer)

有没有一种不那么麻烦的方法,可以将所有管道参数传递给下游作业

据我所知,至少在不使用Jenkins API调用和禁用Groovy沙盒的情况下是这样。

姬墨竹
2023-03-14

除了Jesse Glick的答案,如果你想传递字符串参数,那么使用:

build job: 'your-job-name', 
    parameters: [
        string(name: 'passed_build_number_param', value: String.valueOf(BUILD_NUMBER)),
        string(name: 'complex_param', value: 'prefix-' + String.valueOf(BUILD_NUMBER))
    ]
 类似资料:
  • 问题内容: 我正在使用具有集成交付管道功能(https://jenkins.io/solutions/pipeline/)的Jenkins v2.1 来编排两个现有构建(构建和部署)。 在我的参数化构建中,我有3个用户参数设置,也需要在管道中选择该参数。 管道脚本如下: 除以外,此方法均正常运行。当我构建管道时,会引发以下错误: 如何解决此类型转换错误?甚至更好的是,有没有一种麻烦的方式可以将所有

  • 问题内容: 我有一个名为 buildall 的管道作业,如下所示: 该 buildall 作业有25个参数。我想将所有 buildall 的参数传递给 job1 。有没有一种简单的方法可以代替手动指定每个参数呢? 在此问题中:向下游作业传递管道参数是一个子问题,但从未得到回答: 甚至更好的是,有没有一种麻烦的方法可以将所有管道参数传递给下游作业。 我有同样的问题。 问题答案: 以下似乎有效(尽管我

  • 问题内容: TL; DR:显然,在Jenkins管道作业中,您可以轻松地向下游传递参数。我想知道的是,是否可以将它们传递给 上游 。 用例: 我们有三份工作;,和。它们通常仅需要一个阶段就可以单独运行,但是在越来越频繁的情况下,我们希望能够将所有三个阶段背靠背运行。 第一个和第二个依赖于您可以提前定义的参数,但是第三个和第二个依赖于从第二个作业生成的参数(该文件名的结构在job_two运行之前是未

  • 我正在尝试从使用自由式詹金斯构建切换到管道项目。 我喜欢它的许多方面,但我希望我可以使用多分支管道,因为它更适合我们公司,但目前这不是一个选择。 我们目前所做的是创建一个名为

  • 我正在用angular2编写一个可重用组件。在父组件中,我可以通过将@Input包含在模板中来设置子组件中的值,如下所示: 按照预期,使用< code>{{ button1Text }}将文本插入到子元素中。但是,对于上面的布尔值,该值不会传递到模板中。如果我在子组件的模板中执行< code>{{showButton1}},它将显示< code>true,这是使用< code>@Input装饰器在

  • 问题内容: 我有3个版本:A-是控制流量的主版本B-注释者版本C- 将在BI要向A添加String参数后执行,因此用户将手动输入一些String,但我不确定如何我可以将此参数传递给B吗?可以说这是我的构建流程: build(“ B”)build(“ C”)我不知道如何将参数传递到B,我应该从构建流程还是从B构建配置中做到这一点,我该怎么做。 预先感谢亚历克斯 问题答案: 像这样: https://