luk*_*a5z 9 jenkins jenkins-pipeline
Jenkins共享管道库是否支持vars/*. groovy文件中的静态变量?
file: vars/foo.groovy
---
def functionFoo() {return "foo"}
file: vars/bar.groovy
---
def result = functionFoo()
def functionBar() {println result}
file:Jenkinsfile
---
@Library('MyLib') _
bar.functionBar()
Run Code Online (Sandbox Code Playgroud)
抛出错误:
groovy.lang.MissingPropertyException:没有这样的属性:对于类的结果:groovy.lang.Binding.getVariable(Binding.java:63)中的groov.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty的groovy.lang.Binding (SandboxInterceptor.java:224)org.kohsuke.groovy.sandbox.impl.Checker $ 4.call(Checker.java:241)org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238)在com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:24)com.cloudbees.groovy.cps.impl.PropertyAccessBlock.rawGet(PropertyAccessBlock.java:20)....
file: vars/foo.groovy
---
def functionFoo() {return "foo"}
file: vars/bar.groovy
---
def functionBar() {
def result = functionFoo()
println result
}
file:Jenkinsfile
---
@Library('MyLib') _
bar.functionBar()
Run Code Online (Sandbox Code Playgroud)
我假设变量要么以不同的方式初始化,要么根本无法与vars/目录一起使用,就像函数一样.这个功能是Groovy语言的一部分吗?还是詹金斯全球管道图书馆的限制?
要在groovy变量中定义变量而不是函数,请使用groovy.transform.Field:
@groovy.transform.Field result = functionFoo()
def functionBar() {println this.result}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4444 次 |
| 最近记录: |