json - Jenkins 更新后,readJSON 和 readYaml 在 Jenkins 中停止工作

标签 json jenkins groovy yaml jenkins-pipeline

我已经在 J​​enkins 中安装了 Pipeline Utility Steps 插件,并且我曾经使用 readJSONreadYaml 没有任何问题。

一个月后,当我尝试时,我都收到以下错误

groovy.lang.MissingMethodException: No signature of method: Script1.readJSON() is applicable for argument types: (java.util.LinkedHashMap) values: [[file:/data/ecsnames/dev_ECSNames.json]]

readYaml 步骤的错误也类似。

我不知道它是怎么突然停止工作的。我从一位队友那里得到的唯一信息是 Jenkins 几周前已更新到 2.235.5 版本。

我使用了以下命令

def clstrndsrvcnme = readJSON file: "/data/ecsnames/dev_ECSNames.json"

有人可以帮我解决这个问题吗?这个错误意味着什么?

更新*

所以我在 JenkinsURL/script 尝试上述命令。有一个小 IDE 可以运行 groovy 脚本。我在那里进行各种调试。 在那个位置它抛出了错误。

但是当我从 Jenkins 作业运行相同的命令时,它工作得很好,并且我能够从 Yaml 和 Json 读取值。所以我相信,不知何故 JenkinsURL/script 无法使用 Pipeline Utility Scripts 插件。

我能够完成我的工作,但仍然想了解为什么它在这里失败JenkinsURL/script

最佳答案

我花了一天的大部分时间来解决这个同样的问题。这在脚本控制台中失败:

def jstring = '{"one":1, "two":2}'
def jobj = readJSON text: jstring

感谢您的帖子,我在测试管道中进行了尝试,它有效:

pipeline {
    agent any
    stages {
        stage('readjson') {
            steps {
                script {
                    def jstring = '{"one":1, "two":2}'
                    def jobj = readJSON text: jstring
                    echo jobj.toString()
                }
            }
        }
    }
} 
 [Pipeline] Start of Pipeline
 [Pipeline] node
 Running on Jenkins in C:\Program Files (x86)\Jenkins\workspace\readJSON
 [Pipeline] {
 [Pipeline] stage
 [Pipeline] { (readjson)
 [Pipeline] script
 [Pipeline] {
 [Pipeline] readJSON
 [Pipeline] echo
 {"one":1,"two":2}
 [Pipeline] }
 [Pipeline] // script
 [Pipeline] }
 [Pipeline] // stage
 [Pipeline] }
 [Pipeline] // node
 [Pipeline] End of Pipeline
 Finished: SUCCESS

我已在 Jenkins Jira 中记录了此插件的问题:https://issues.jenkins.io/browse/JENKINS-65910

我将用 Jenkins 的任何回复更新这篇文章。

关于json - Jenkins 更新后,readJSON 和 readYaml 在 Jenkins 中停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64314913/

相关文章:

android - 使用 Jenkins 构建 Android 应用程序,包括图书馆项目

python - 如何进行具有多个过滤器的 Django 数据库查询?

ruby - 如何解析来自 JSON 对象的数据?

javascript - 选择多个 JSON 时出现问题

grails - 如何使用域类字符串名称访问用户定义的Grails项目包名称

groovy - 从子项目build.gradle访问根gradle build.gradle中的变量?

java - GroovyClassLoader - 将已解析的类添加到类路径

javascript - 将数组形式的字符串转换为实际数组

jenkins - Chef 卡在 "Recipe: java::openjdk"

Jenkins 在两个奴隶上工作?