如何在 Jenkins 声明管道中 运行 XmlParser / Read XML

How to run XmlParser / Read XML in Jenkins declarative pipeline

我在 Jenkins 文件中有以下内容,我试图从 XML 文件中获取一些文本:

    pipeline {
      agent any
      stages {
        stage('Start') {
          steps {
            echo 'Build start'  
            script {
              def xml = readFile "${env.WORKSPACE}/config.xml"
              def xmlContents = new XmlParser().parseText(xml)
              def text = xmlContents.text()
              echo 'contents are...'
              echo text
              
            }
          }
        }
    .....

这会导致以下异常

    org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use method groovy.util.XmlParser parseText java.lang.String
        at org.jenkinsci.plugins.scriptsecurity.sandbox.whitelists.StaticWhitelist.rejectMethod(StaticWhitelist.java:262)
        at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onMethodCall(SandboxInterceptor.java:161)
        at org.kohsuke.groovy.sandbox.impl.Checker.call(Checker.java:156)
        at org.kohsuke.groovy.sandbox.impl.Checker.checkedCall(Checker.java:160)
        at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.methodCall(SandboxInvoker.java:17)
        at WorkflowScript.run(WorkflowScript:9)

根据 发布的此问题的解决方案,我需要进入并设置 In-process Script Approval,但是我已经这样做了几次..

此外,我在其他地方看到过禁用沙盒模式的评论,但我没有其他屏幕截图中显示的此选项...

也许情况发生了变化。

所以,我的问题是,如果无法使用 XML 解析器,我该如何读取 XML 文件的内容?或者如何使用 XMLParser?

从那以后我发现您只需要继续批准每个单独的方法(包括构造函数),一次一个。也就是说,您可能会批准一个,然后您会收到下一个错误。

我没有注意到他们需要的批准有细微差别。