从 Jenkins 管道并行步骤收集数据

2023-12-08

从并行步骤收集数据(例如通过/失败结果)的最佳方法是什么?

到目前为止我已经达到了什么:

#!groovy
def fspam(name, spam){
    spam[name] = "BEEN THERE TOO"
}

// pipeline
node('slave'){
    stage("test"){
        targets = ["a", "b"]
        def tasks = [:] 
        def spam = [:]
        targets.each{ tasks["${it}"] = {
            node('slave'){
                echo "dry-run ${it}"
                spam[it] = "BEEN THERE" <--- works
                fspam(it)         <--- fails
            } 
        } 

        }
        parallel tasks
        print("spam")
        print(spam)
    }
}

但它失败了:

另外:groovy.lang.MissingPropertyException:没有这样的属性:stam 对于类:WorkflowScript groovy.lang.MissingPropertyException:否 这样的属性:类的 stam:WorkflowScript at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)

  1. 似乎闭包中它成功填充了地图,但是在使用函数时它会抛出错误
  2. 我不确定拥有全球地图是最好/最干净的方法

有什么建议


Use .asSynchronized():

targets = ["a", "b"]

tasks = [:]
spam = [:].asSynchronized()

targets.each { target ->
    tasks[target] = {
        echo "dry-run ${target}"
        spam[target] = "BEEN THERE"
        fspam(target, spam)         // <--- passing spam fixes the issue
    } 
}

parallel tasks

print("spam")
print(spam)

这保证了映射的更新是线程安全的。要收集列表,您可以使用[].asSynchronized(). Link

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

从 Jenkins 管道并行步骤收集数据 的相关文章

随机推荐

  • 如何在matlab中用特定颜色绘制矩阵的值

    我在matlab中工作 我有一个矩阵 我想通过给每列 行的最低值赋予绿色来可视化它 给其余的值赋予红色 或者根据距离的接近程度赋予不同级别的红色或者这个值距离最低值很远 最后打印其中的值 例如 假设我有以下矩阵 0 0085 0 0244
  • 如何对齐 discord.py 嵌入消息中的字段

    I am creating an embedded discord py message that will look like 每个字段的值都有一个由单词组成的字符串以及每个单词后面的换行符 但正如您所看到的 格式略有偏差 并且列没有完全
  • UrlDecode 是否正确处理加号 (+)?

    根据RFC 2396 加号 美元 和逗号 添加了 字符那些在 保留 集中 因为 它们被视为保留 查询组件 事实上 在这个网站上搜索 plus comma dollar 你会得到 https stackoverflow com search
  • ParseException:无法解析的日期:

    我有像 2015 07 13T10 44 58Z 这样的时间戳字符串 当我尝试将其转换为日期对象时 它总是会生成异常 Caused by java text ParseException Unparseable date 2015 07 1
  • Apriori 算法未显示结果

    我正在使用 Python 进行购物篮分析 当我执行此代码时 它仅显示列名称 没有任何结果 frequent tr apriori data tr min support 0 05 这是删除的数据集 我已经调整了 min support 值
  • 线性回归上的 R 循环

    我浏览了论坛 但找不到我要找的东西 我想运行几次简单的线性回归 每次使用不同的列作为自变量时 因变量保持不变 运行后 我希望能够从每个回归中提取 R 平方 我的思考过程是使用一个简单的 for 循环 但是 我无法让它发挥作用 假设我使用以下
  • 如何根据提供的最小和最大字符范围在 Javascript 中生成随机数

    我有一个有点奇怪的要求 我需要生成用户给出的长度的随机数 用户可以给Minimum Length和Maximum Length我需要生成由该范围之间的字符长度组成的随机数 例如 如果Minimum Length is 6 and Maxim
  • 将 sympy 表达式分解为矩阵系数?

    我试图勤奋地查看文档 但一无所获 我正在尝试将表达式中的项分解或消除为矩阵形式 我的问题似乎与多项式因式分解不同 因为我计划实现一个函数phi x y z a 1 a 2 x a 3 y a 4 z import sympy from sy
  • 缓存控制失败

    我的 index php 页面不断被缓存 显示旧的计时器值和其他值 即使我正在使用这个 session cache limiter nocache session start header Cache Control no cache mu
  • Jquery 中的 XML 解析

    我有一个 XML 文件 其中有四个
  • 如何使用特定的TaskScheduler使TaskCompletionSource.Task完成

    怎样才能完成TaskCompletionSource Task发生在特定的TaskScheduler 当我打电话时TaskCompletionSource SetResult 目前 我正在使用我借用的想法这个帖子 static public
  • 如何使用批处理(.bat)脚本在给定行号的情况下删除文本文件的一行?

    我想编写一个批处理脚本 用户可以在其中输入行号 脚本将删除文本文件的该行 例如 tmp txt 1 aaa 2 bbb 3 ccc 4 ddd 我希望当我执行我的脚本和用户输入 3 时 tmp txt 是 1 aaa 2 bbb 4 ddd
  • Rails - 使用复选框选择多个对象并选择要执行的操作

    我希望能够为对象列表创建复选框 然后向用户提供对所选对象执行的许多操作 IE 删除 存档等 我知道 ryan 的截屏视频 但它没有解释如何为所选对象创建多个操作的链接 它只是显示他创建一个 form tag 其中包含一个操作的 url 和一
  • 在非托管 C++ 程序中实现 C# DLL COM 文件

    这是我的另一个问题 也导致了这个问题作为参考 如何从非托管 C 调用托管 C 方法 我已成功创建 C COM 文件 现在我需要一个关于如何在非托管 C 中实现它的简单解释 我正在遵循这个示例 但 C 部分很弱 http www codepr
  • JTextField 的值更改侦听器

    我希望在用户更改文本字段中的值后立即显示消息框 目前 我需要按 Enter 键才能弹出消息框 我的代码有什么问题吗 textField addActionListener new java awt event ActionListener
  • 如何在我的汇编代码中调用 C++ 函数

    我需要从程序集中调用 PrintResult 来显示结果 我知道我必须在某处使用 extrn PrintResult 并且我应该使用 call PrintResult 来调用该函数 但我不太确定如何使用它 有什么建议 public Squa
  • NSAttributedString 的boundingRectWithSize 返回错误的大小

    我试图获取属性字符串的矩形 但boundingRectWithSize调用不考虑我传入的大小 并且返回一个具有单行高度的矩形 而不是一个大高度 它是一个长字符串 我已经尝试过传递一个非常大的高度值和 0 如下面的代码所示 但返回的矩形始终是
  • 如何在页面关闭时执行 PHP 代码?

    我试图找到一种方法来在用户关闭页面后执行一些 PHP 代码 在我的应用程序中 一旦用户关闭或导航离开页面 服务器就会在数据库中将用户状态为 离线 这需要代码知道用户何时离开页面 我的应用程序也有无限的负载 即它将休眠直到用户关闭页面 当用户
  • 使用 Gulp 来连接和 Uglify 文件

    我正在尝试使用 Gulp 来 获取 3 个特定的 javascript 文件 将它们连接起来 然后将结果保存到文件中 concat js 获取这个串联文件并对其进行 uglify minify 然后将结果保存到另一个文件 uglify js
  • 从 Jenkins 管道并行步骤收集数据

    从并行步骤收集数据 例如通过 失败结果 的最佳方法是什么 到目前为止我已经达到了什么 groovy def fspam name spam spam name BEEN THERE TOO pipeline node slave stage