Jenkins Groovy 如何在不结束管道的情况下从 @NonCPS 方法调用方法

2024-04-15

我需要在 Jenkins Pipeline 中解析一些 JSON 并在循环中调用一些常规方法,但是脚本总是在第一个函数调用后退出。这个怎么做?

import groovy.json.JsonSlurper
import com.cloudbees.groovy.cps.NonCPS

@NonCPS
def myMethod(String json) {
    def jsonSlurper = new JsonSlurper()
    def jsonObject = jsonSlurper(json)
    jsonObject.each {
        obj ->
            switch(obj.name) {
                case "foo":
                    doAThing(obj)
                    break
                case "bar":
                    doAnotherThing(obj)
                    break
            }
    }
}

在上面的示例中,即使使用如下 json 对象:

[{
    "name": "foo"
}, {
    "name": "bar"
}]

...管道总是在第一次迭代后退出。这可能是由于混合了同步和异步功能。有什么办法可以做到这一点吗?


我基本上通过执行以下操作解决了这个问题:

import groovy.json.JsonSlurper

def myMethod(String json) {
    def jsonSlurper = new JsonSlurper()
    def jsonObject = jsonSlurper(json)
    jsonSlurper = null
    for(int i = 0; i < jsonObject.size(); i++) {
        switch(jsonObject[i].name) {
            case "foo":
                doAThing(jsonObject[i])
                break
            case "bar":
                doAnotherThing(jsonObject[i])
                break
        }
    }
}

使用后立即销毁 JsonSlurper 实例,删除 @NonCPS 注释,切换到 C 风格的 for 循环而不是each。

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

Jenkins Groovy 如何在不结束管道的情况下从 @NonCPS 方法调用方法 的相关文章

  • 使用 Java EE 将文件存储在云中

    我正在使用 CloudBees 部署我的 Java EE 应用程序 因为我需要写入和读取文件 但我找不到 CloudBees 中的任何云文件系统 请向我推荐任何免费的云文件系统存储和用于访问该文件系统的java代码 使用 jclouds 您
  • 通过 HTTP Post-Commit Hook 将 Github 连接到安全的 Jenkins

    我已经在我的测试服务器上使用 Github 插件设置了 Jenkins 我通过仅允许经过身份验证的用户 匿名用户没有任何权限 和安全连接来保护 Jenkins 不幸的是 Github 提供的提交后挂钩似乎不适用于我的情况 我尝试访问以下网址
  • 使用 Groovy 在 Java 属性中进行变量扩展

    我经常使用标准 Java 属性文件来配置我的 Groovy 应用程序 我一直缺少的一项功能是能够使用变量作为属性值的一部分 以便它们可以在使用过程中动态扩展 我想我可以使用以下设计提供此功能 使用特殊的格式来注释应该扩展的属性 我选择将此类
  • Jenkins/Apache 反向代理错误

    根据我的搜索 我遇到了一个似乎相当常见的问题 但是我已按照我遇到的所有说明和 或修复进行操作 但没有一个对我有用 所以我问这个希望有人可以引导我走向正确的方向 我在 OS X 10 11 2 上通过 Homebrew 安装了 Jenkins
  • postbuild UIAutomation 脚本未在 jenkins 中运行

    我正在尝试做端到端自动化 for an iOS项目 我的目标是自动化持续集成处理与附加UIAutomation脚本作为构建后操作 因此 从用户在 SVN 中检查他的代码开始 直到我们得到自动化测试结果 一切都将是自动化的 Jenkins安装
  • 没有安排分支的构建

    我刚刚从詹金斯开始 我正在尝试在分支 主控上运行构建 我得到的只是没有安排分支的构建 master 这是日志 Started by timer Sun Mar 05 18 23 43 NPT 2017 Starting branch ind
  • Jenkins Slack 集成

    我想使用 Jenkins 中的 Slack 插件将通知发送到 Slack 通道 当我测试连接时 Jenkins 表示成功 但我在 Slack 频道中没有收到任何通知 是否存在任何已知问题 如何让 Jenkins 向 Slack 发送通知 我
  • 如何在 Jenkins Build Execute Shell 中运行 docker 命令

    我是詹金斯的新手 我一直在四处寻找 但找不到我要找的东西 我想知道如何在 Jenkins 中运行 docker 命令 构建 执行 Shell 例子 docker run hello world 我在 Jenkins 配置系统中将 Docke
  • 漏洞! “语义分析”阶段的异常

    我有一个使用 Gradle 1 10 和 jdk1 8 的 1 1 7 spring boot 应用程序 我使用 Groovy Spock 进行测试它有两个依赖项 使用 Apache Maven 3 1 1 和 jdk 1 8 构建的 ja
  • GPars:返回eachParallel{}

    我想对每个示例字符串做很多事情 并在此处返回一些其他类型的对象 整数 然后返回一些更大的类对象 在这个例子中 我正在尝试一些简单的事情 但我得到了完全错误的结果 至少对于我希望得到的东西 xD 我希望得到 6 5 6 5 但我得到的是 bu
  • aws key 和 Secret 在 aws cli 上工作但在 jenkins 上不起作用

    我正在尝试运行 python 脚本 其中包含使用 boto3 sdk 访问 s3 的代码 我已经在我的 Windows 机器中创建了默认配置文件 aws cli 命令在窗口 cmd 中可以正常工作以访问 s3 存储桶 python 脚本在窗
  • Dotfuscator Pro无法读取Jenkins构建服务器下的许可信息

    我试图让 Dotfuscator Pro 4 13 在单元测试和创建安装包之间运行 我们使用的构建服务器是 Windows Server 2008 R2 上的 Jenkins 1 487 dotfuscator 的命令行非常简单 我使用 q
  • 使用 shell 脚本在 Jenkins 中手动构建失败吗

    我想将 Jenkins 构建标记为在一种情况下失败 例如 if f file then echo file found else echo file not found Do Jenkins Build Fail fi 可以通过Shell脚
  • Groovy 语言书籍/教程 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何在 Docker 容器内动态添加 Jenkins 用户和权限

    当我为 python 项目构建声明式 Jenkins 管道时 使用 Pip 时收到以下错误消息 WARNING The directory cache pip or its parent directory is not owned or
  • 在soapui groovy脚本中从xml获取文本值

    我的任务是从soapui 中的xml 获取值以按顺序创建下一个测试 我使用groovy脚本 我的目标是获取标签内的文本 它很容易识别 因为它是 Base64 编码的字符串 def project testRunner testCase te
  • 詹金斯总体/阅读权限

    当在 URL 中打开我的 Jenkins 时 我似乎无法登录 它会抛出消息 用户缺少总体 读取权限 我已经尝试过answer https stackoverflow com questions 6988849 reset jenkins c
  • Windows 主服务器上的 Jenkins Poll SCM (Git) / Linux 从服务器上的构建

    这是我的场景 使用 git 作为我的 SCM Jenkins Job 在 Linux Slave 上运行 Jenkins master 托管在 Windows 上 我已经配置了两个 Git 安装 如所示Jenkins 到 git Windo
  • Windows 从属设备上的 Jenkins Git SSH 密钥

    目前 我们在 Windows 上有一个 Jenkins 主服务器 一个 ubuntu 从服务器和一个 Windows 从服务器 我正在尝试在 Windows 从机上设置 git msysgit 已安装 并且我将该目录包含在系统路径变量中 以
  • groovy 中具有默认值的命名参数

    是否可以在 groovy 中使用具有默认值的命名参数 我的计划是创建一种对象工厂 可以在没有任何参数的情况下调用它 以获得具有默认值的对象 另外 我需要显式设置对象的任何参数的功能 例如 我相信这可以通过 Python 关键字参数实现 我现

随机推荐

  • IntelliJ 结构搜索和替换问题

    有没有一种简单的方法来捕获类型 我似乎无法做一些基本的事情 例如并排使用变量表达式 例如 mapType mapEnd 做一个简单的替换 这可能有什么原因吗 也就是说 如果我有一个表达式 比如 s abc 我把它分成两个变量 s and a
  • 受密码保护的 pdf 中密码字段不可见

    我正在使用 PDF 套件框架来显示 编辑 pdf 文件 它在 macOS 10 12 上严重损坏 有时受密码保护的文件不显示密码字段 有时密码字段在普通文件中可见 我可以使用未记录的 API 来修复此问题 它的问题与隐藏 取消隐藏密码视图有
  • javax.net.ssl.SSLException:SSLSocketFactory 为 null

    我的以下代码有问题 System setProperty javax net ssl keyStoreType pkcs12 System setProperty javax net ssl trustStoreType jks Syste
  • 从核心数据中获取子项总和

    假设我有三个实体 Person 姓名 地址 对多工资 和 对多贷款 Salary 收入 税 相对 对一个人 Bills数量 相对 对一个人 如何执行获取结果如下 John Doe SUM gt 收入 SUM gt 金额 Eva Doe SU
  • ES2015 (ES6) `class` 语法有什么好处?

    我对 ES6 类有很多疑问 使用有什么好处class句法 我读到 public private static 将成为 ES7 的一部分 这是一个原因吗 而且 是class一种不同类型的 OOP 或者它仍然是 JavaScript 的原型继承
  • Android 收到新电子邮件时如何执行一些代码?

    在 Android 中 当新电子邮件 gmail 到达时 如何执行一些代码 在 Android 中 当新电子邮件 gmail 到达时 如何执行一些代码 没有记录的广播Intents当 Gmail 到达时发送出去 Gmail 不是 Andro
  • 处理单数和复数控制器/路由

    我对如何在网络应用程序中处理单数和复数路由和控制器感到有点困惑 该网站是一个简单的报价网站 想想爱因斯坦 莎士比亚等 而不是保险 在项目中 我有一个名为 QuoteController 的控制器 控制器名称是单数 那么这是否意味着控制器应该
  • 检查 csv 列中除一项之外的所有项目 [python pandas]

    我试图弄清楚如何使用 python pandas 检查整个列以验证所有值都是整数 除了一个 一行名称始终有一个浮点数 CSV 示例 name num random1 2 random2 3 random3 2 89 random4 1 ra
  • 使用 Volley android 将发布数据发送到服务器

    我正在尝试使用 Volley 库向服务器发送一些数据 private void registerUser final String email final String username final String password Tag
  • Shadow dom 内的 FontAwesome svg

    我正在尝试在 Web 组件中使用 font Awesome js svg 库 但图标不会显示 这可能吗 我正在尝试在现有的 webforms 项目中实现一个角度组件 而无需 css 和脚本 流血 关于如何做到这一点还有其他建议吗 ifram
  • 如何使用 gtest 对 std::bind 函数进行单元测试?

    我正在尝试为项目中的一些 cpp 文件编写单元测试用例 这里的场景是 我有一个 cpp 文件 只定义了一个公共方法 然后又调用私有方法 这里私有方法在公共方法中作为回调方法被调用 我如何在这里测试私有方法 我将对回调指针进行模拟 但我不知道
  • 如何更新 ListView 中的单行?

    我有一个ListView显示新闻项目 它们包含图像 标题和一些文本 图像加载在一个单独的线程中 带有队列和所有 当下载图像时 我现在调用notifyDataSetChanged 在列表适配器上更新图像 这可行 但是getView 被调用太频
  • .NET Core依赖注入,解析泛型接口

    我在 ASP NET Core 依赖注入方面遇到问题 无法解析 IServiceProvider 的通用接口 这是我的设置 通用接口 public interface IRequest
  • 有没有办法在表达式树中设置“DeclaringType”?

    我正在做一个Func gt 表达 gt Func转换 如果我从方法 下面的第一个示例 创建 Func 它工作得很好 但是如果我使用表达式树 第二个示例 创建函数 它会失败并显示空引用异常当访问时func2 Method DeclaringT
  • 使用字符向量索引命名数据帧的嵌套列表 - R

    我有一个命名数据框的嵌套列表 如下所示 mylist2 lt list list df1 a data frame replicate 2 sample 0 1 5 rep TRUE df2 b data frame replicate 2
  • 在命令行上构建 Windows 8 Phone 应用程序

    我目前正在将现有的跨平台框架移植到 Windows Phone 8 构建过程是完全自动化的 我们使用的是坚如磐石的 CI 系统 我可以从 Visual Studio Express 2012 构建和部署 Windows Phone 8 示例
  • 帮助我使用 jquery 验证插件的远程方法

    任何人都可以帮助我使用jquery远程 验证方法 我的意思是我知道如何在 jquery 部分使用它 谁能告诉我服务器端部分 我正在使用 PHP 和 codeigniter 来做到这一点 考虑下面的例子 myform validate rul
  • 如何使用 jQuery Uniform 库取消选中复选框

    我在取消选中时遇到问题checkbox 看一下我的jsFiddle http jsfiddle net r87NH 我正在尝试 check2 attr checked true I use uniform http pixelmatrixd
  • Spring Web 服务客户端和服务器 - 未找到端点映射

    我正在尝试将基于 Spring WS 的服务器和基于 Spring WS 的客户端连接在一起 在服务器上使用 org codehaus mojo jaxb2 maven plugin 在客户端上使用 org jvnet jaxb2 mave
  • Jenkins Groovy 如何在不结束管道的情况下从 @NonCPS 方法调用方法

    我需要在 Jenkins Pipeline 中解析一些 JSON 并在循环中调用一些常规方法 但是脚本总是在第一个函数调用后退出 这个怎么做 import groovy json JsonSlurper import com cloudbe