我想在jenkins脚本调用的groovy文件中使用“ $ WORSKPACE”变量。但是在SO上找到的所有解决方案都失败了:
// KO : Wks = build.getEnvironment(listener).get('WORKSPACE')
// KO : Wks = "${WORKSPACE}"
/* KO :
def thr = Thread.currentThread()
def build = thr?.executable
def envVarsMap = build.parent.builds[0].properties.get("WORKSPACE")
*/
// KO : def build = this.getProperty('binding').getVariable('build')
// KO : Wks = "%WORKSPACE%"
我收到的消息: 不允许脚本使用groovy.lang.GroovyObject方法setProperty java.lang.String java.lang.Object(JenkinsHelper.name)。管理员可以决定是批准还是拒绝此签名。
是否有任何代码或选项可供设置以允许Jenkins脚本正常工作?
我的案例:
JenkinsHelper.groovy文件:
class JenkinsHelper {
def init(String sln) {
Wks = "%WORKSPACE%"
}
}
return new JenkinsHelper();
从jenkins脚本调用:
def helper = load 'C:/.../test.groovy'
helper.init("Mon SLN")
谢谢:)
答案 0 :(得分:1)
您应该使用groovy风格的环境变量格式,而不是Windows风格的格式:
class JenkinsHelper {
def init(String sln) {
Wks = "${WORSKPACE}"
}
}
答案 1 :(得分:1)
这是由Jenkins进程内脚本批准引起的,以保护可能执行的恶意脚本。
如果您是管理员,请在管理Jenkins > 配置系统> 全局管道库中注册管道代码,以避免出现这种情况。
参考: