【问题标题】:Pass some values from one job to another将一些值从一项工作传递到另一项工作
【发布时间】:2016-06-06 08:16:26
【问题描述】:

我有三个工作将在管道工作中构建,如下所示

build 'job1'
build 'job2'
build 'job3'

job2 可以采用 2 个参数。这应该来自 job1。 让 job1 在某个特定位置(例如 C:\tests)创建一个文件夹。我需要将创建 job1 的文件夹的名称传递给 job2。我怎样才能做到这一点 ?

我也需要将相同的参数传递给 job3

我可以在 job1 和管道中做什么来发送和接收这些参数?

我不想编辑 job1 以使用后期构建选项来构建带有参数的 job2

【问题讨论】:

    标签: jenkins groovy jenkins-plugins jenkins-workflow jenkins-pipeline


    【解决方案1】:

    来自job1:

    env.SOMETHING = someValue
    

    在job2中定义参数。在主作业中,

    def b1 = build 'job1'
    def something = b1.buildVariables.SOMETHING
    build job: 'job2', parameters: …
    

    【讨论】:

    • 如果我做舞台“包”; def packageJob = 构建作业:'Package';舞台“现场”; build job: 'Live', parameters: [[$class: 'StringParameterValue', name: 'LIVE_VERSION', value: value: packageJob.buildVariables.VERSION]]] 然后它失败,因为传递了 null - 填充了包作业中的 VERSION使用 environmentVariables 插件,它存在于工作的“环境变量”HTML页面上。如何在管道脚本中访问 VERSION?
    • 我发现 packageJob.rawBuild.environment.VERSION 正在工作,但它需要将上述两个 getter 列入白名单。看起来 buildVariables 只包含我的构建参数 - 它会包含更多变量,包括由 environmentVariables 插件注入的变量吗?
    【解决方案2】:

    由于您使用的是 Pipeline,我将在 Pipeline 中定义目录名称,并将其作为参数传递给所有三个 build 步骤。

    【讨论】:

    • 在运行 job1 之前我不知道目录名称。那么如何通过管道参数传递呢?
    【解决方案3】:

    在我运行 job1 之前我不知道目录名称

    因为您不想要任何后期构建操作。

    你能:

    1. 运行 job1 并将生成的目录存储在文本文件中
    2. 在 job2 和 job3 中,从该文件中读取您需要的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-17
      • 2021-07-10
      • 2017-05-16
      相关资源
      最近更新 更多