我有一个配置文件config.txt
,其中包含以下键:值
a=1,2,3
b=5,6,7
我想使用groovy脚本读取密钥和密钥,但是它给出了以下错误消息:
org.jenkinsci.plugins.scriptsecurity.sandbox.RejectedAccessException: Scripts not permitted to use staticMethod org.codehaus.groovy.runtime.DefaultGroovyMethods withInputStream java.io.File groovy.lang.Closure
代码如下:
Properties properties = new Properties()
File propertiesFile = new File('config.txt')
propertiesFile.withInputStream {
properties.load(it)
}
def runtimeString = 'a'
assert properties."$runtimeString" == '1'
assert properties.b == '2'
我错过了什么?
答案 0 :(得分:2)
管道DSL上下文在master
节点上运行,即使您在管道中写入node('someAgentName')
也是如此。 new File
仅适用于主人。
但您可以通过sh()从文件中读取数据。类似的东西:
def a = sh(returnStdout: true, script: "cat config.txt | grep a | cut -f2 -d'='").trim()
def b = sh(returnStdout: true, script: "cat config.txt | grep b | cut -f2 -d'='").trim()
答案 1 :(得分:0)
我在Groovy控制台中测试了以下内容,并且断言传递
new File('config.txt').withReader {
def props = new Properties()
props.load(it)
assert props.getProperty('a') == '1,2,3'
assert props.getProperty('b') == '5,6,7'
}