Jenkins,如何在Jenkins声明式管道中运行XmlParser /读取XML

时间:2019-06-11 00:33:38

标签: jenkins jenkins-pipeline jenkins-groovy

我在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$1.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)

根据here发布的针对该问题的解决方案,我需要进入并设置In-process Script Approval,但是我已经做了几次。

enter image description here

另外,在其他地方,我也看到了禁用沙箱模式的注释,但是我没有其他屏幕截图所示的此选项...

enter image description here

也许情况发生了变化。

所以,我的问题是,如果不能使用XMLParser,如何读取XML文件的内容?或者如何使用XMLParser?

在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

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

我没有注意到它们需要不同的批准。