管道作业 - 向上游传递参数?

2023-11-26

TL;DR:显然,在 Jenkins 管道作业中,您可以轻松地将参数传递给下游。我想知道的是你能否通过它们upstream.

使用案例:

我们有三份工作;job_one, job_two, and job_three。这些通常单独运行,因为只需要一个阶段,但在越来越频繁的情况下,我们希望能够连续运行所有三个阶段。

第一个和第二个依赖于您可以提前定义的参数,但第三个需要从第二个作业生成的参数(在 job_two 运行之前其结构未知的文件名)。

我已经建立了umbrella,它为每个作业调用类似以下内容的内容。在这种情况下,PARAM1已填充,因为伞运行为“使用参数构建”。

build job: 'job_one', parameters: [[$class: 'StringParameterValue', name: 'PARAM1', value: "$PARAM1"]]

一切都很好,然后我就可以使用PARAM1 in job_one正好。

问题:

For job_three我需要参数filename。这是在内生成的job_two,因此据我所知,这是无法访问的,因为 job_ Three 不知道 job_two 在做什么。

在理想的世界中,我只会让 job_two 通过filename到伞式作业,这会将其反馈到 job_ Three 中。所以,我怎样才能传递生成的filename回到保护伞工作?

我正在想象最终的剧本是这样的;

node('on-demand-t2small'){

    stage ('Build 1') {

        build job: 'job_one', parameters: [[$class: 'StringParameterValue', name: 'PARAM1', value: "$PARMA1"]]
}
    stage ('Build 2') {

        build job: 'job_two', parameters: [[$class: 'StringParameterValue', name: 'PARAM2', value: "$PARMA2"]]

    //somehow get the filename parameter out of job_two here so that I can move it to job three...
} 
    stage ('Build 3') {

        build job: 'job_three', parameters: [[$class: 'StringParameterValue', name: 'filename', value: "$filename"]]
} }

补充笔记:

我认识到第一个问题是“为什么不让 job_two 触发 job_ Three?我无法以这种方式设置系统,原因有两个:

  1. job_two 需要能够在不触发 job_third 的情况下运行,而 3 并不总是需要 2 的输入才能运行。
  2. 我争论过让雨伞启动两个,然后在两个中设置一个条款,只有在雨伞启动的情况下才会触发三个,但据我所知,这将限制雨伞工作中的反馈;你不会知道两个失败是因为两个失败,还是因为三个(作为两个的一部分)失败。如果我的这个假设是错误的,请告诉我。

我曾考虑过将参数设置为环境变量,但我相信这是特定于节点的,我不能保证这两个作业将在同一节点上运行,因此这似乎不是解决方案。

Umbrella 是一个用 Groovy 编写的管道作业,其他三个可能是管道或自由式作业,如果这很重要的话。

如果可能的话,我希望得到详细的答案,我对 Groovy、Jenkins 和一般编码仍然很陌生。


它应该这么简单:

stage ('Build 3') {
        res = build job: 'job_three', parameters: [[$class: 'StringParameterValue', name: 'filename', value: "$filename"]]
        echo "$res.buildVariables.filename"
}

假设在 job_ Three 中你做了

env.filename = "col new file name"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

管道作业 - 向上游传递参数? 的相关文章

随机推荐

  • dagger2 错误“如果没有 @Inject 构造函数或 @Provides 注释方法,则无法提供 android.app.Application”

    我正在尝试在我的项目中实现 dagger2 但遇到错误 如果没有 Inject 构造函数或 Provides 注释的方法 则无法提供 android app Application 这是我的代码 App java package com p
  • iPhone 屏幕键盘的高度是多少?

    纵向高度和横向高度以点为单位 我使用以下方法来确定 iOS 7 1 中键盘的框架 在我的视图控制器的 init 方法中 我注册了UIKeyboardDidShowNotification NSNotificationCenter cente
  • Javascript - 使用字符串串联设置变量[重复]

    这个问题在这里已经有答案了 是否可以通过将两个字符串连接在一起形成名称来设置变量 如果可能的话 我想根据用户单击的对象的类名确定要设置的变量 我知道我可以硬编码一堆 if else if 语句 但如果我可以间接引用变量 那就太酷了 我在想这
  • 在 Android Studio 上重建时“SHA-1 摘要算法的安全强度不足以满足此密钥大小”

    我在构建项目时遇到了这个问题 下面是堆栈跟踪 我为发布密钥创建了一个新的密钥库文件 但不起作用 Caused by java io IOException Failed to generate v1 signature at com and
  • 如何使用 SciPy 对非均匀信号进行均匀重采样?

    我有一个 x y 具有非均匀采样率的信号x 采样率大致与 1 x 成正比 我尝试使用统一重新采样scipy signal s resample功能 根据我对文档的理解 我可以向其传递以下参数 scipy resample array of
  • 如何将程序集版本设置为 Jenkins 内部版本号?

    我正在 Jenkins 中使用 更改程序集版本 插件来更新 ASP NET MVC 项目的所有 AssemblyInfo cs 文件 以在构建过程中应用版本号 如果我将 Assembly Version 值设置为硬编码值 则效果非常好 但我
  • 如何替换字符串中的单词?

    我正在使用一个String like String message NAME is inviting you 我在用message replaceAll NAME me where me is a String 这行代码对我不起作用 我想知
  • ImportError:dlopen:无法使用静态 TLS 加载更多对象

    我得到一个ImportError如果在之后导入 OpenCV cv2 tensorflow出口商 ubuntu ip 172 31 2 144 Downloads opencv 2 4 13 release python Python 2
  • 在 VBA 中声明 0 长度字符串数组 - 不可能吗?

    在VBA中真的不能声明0长度的数组吗 如果我尝试这个 Dim lStringArr 1 As String 我收到一个编译错误 指出范围没有值 如果我尝试欺骗编译器并在运行时重新调整 如下所示 ReDim lStringArr 1 我收到下
  • 清除 chrome webdriver 上的日期输入失败

    我在使用 selenium 从 firefoxdriver 切换到 chromedriver 时遇到了问题 它在 FF 中工作正常 但现在当我尝试清除日期输入字段时出现此错误 Caused by org openqa selenium In
  • 如何使用c#在datagridview中动态添加列

    如何使用c 在datagridview中动态添加列 例如 DataGridViewColumn col new DataGridViewTextBoxColumn col HeaderText Hi there int colIndex g
  • Angular 2 中指令评估的控制顺序

    我想在 Angular 2 中创建一个属性指令 它的主机上需要有一个单击处理程序 需要在评估元素上的其他指令之前添加单击处理程序 因为它控制对某些功能的访问 在 Angular 1 中 您可以在创建指令时使用优先级选项来执行此操作 Angu
  • ASP.NET MVC:@section 的目的是什么? [关闭]

    很难说出这里问的是什么 这个问题模棱两可 含糊不清 不完整 过于宽泛或言辞激烈 无法以目前的形式合理回答 如需帮助澄清此问题以便重新打开 访问帮助中心 对于 ASP NET MVC 应用程序 我看到这篇博客文章 作者 ScottGu 补充道
  • 安卓解密错误

    我正在尝试在 Android 应用程序中加密和解密字符串 但不断收到 InvalidKeyException 错误 这是我的代码 生成密钥方法 public void generateKeys Calendar cal Calendar g
  • Android,检测其他应用程序何时启动

    我正在尝试开发一个应用程序 阻止用户在没有密码的情况下访问指定的应用程序 场景是 用户点击 电子邮件 应用程序 例如 我的应用程序检测到应用程序的启动 我的应用程序确认它是 电子邮件 应用程序 我的应用程序在顶部打开一个视图 要求输入密码
  • 获取所有打开的 WPF 窗口

    我正在尝试获取所有打开的窗口 我尝试使用System Windows Application Current Windows但我在行中得到空指针异常foreach卢普群岛有人知道出了什么问题吗 public Window getWindow
  • C++14 标准中哪里说非 constexpr 函数不能在 constexpr 函数的定义中使用?

    例如 下面的代码不会编译 除非incr 被宣布constexpr int incr int n return n constexpr int foo int n 0 incr n return n 查看 C 14 中的 7 1 5 3 我们
  • 来自现有 SQLite 数据库的 Core Data 数据架构

    是否可以从现有的 SQLite 数据库文件生成 xcdatamodel CoreData 数据模型 我开发了一个 SQLite 数据库并针对它编写了一个 Java API 现在 我需要为同一个数据库 文件 编写等效的 iOS API 我不想
  • 安装 Eclipse IDE 时出错

    我正在尝试安装 eclipse IDE Java for Developers 但在安装过程中遇到以下错误 我的系统驱动器有足够的空间 过去我已经安装和卸载了 eclipse IDE 那么这会给我重新安装带来任何问题吗 10 50 59 E
  • 管道作业 - 向上游传递参数?

    TL DR 显然 在 Jenkins 管道作业中 您可以轻松地将参数传递给下游 我想知道的是你能否通过它们upstream 使用案例 我们有三份工作 job one job two and job three 这些通常单独运行 因为只需要一