gpt4 book ai didi

Jenkins 共享管道库 : Can I declare static variables in vars file?

转载 作者:行者123 更新时间:2023-12-04 04:09:58 26 4
gpt4 key购买 nike

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()

这会引发错误:

groovy.lang.MissingPropertyException: No such property: result for class: groovy.lang.Binding at groovy.lang.Binding.getVariable(Binding.java:63) at org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.SandboxInterceptor.onGetProperty(SandboxInterceptor.java:224) at org.kohsuke.groovy.sandbox.impl.Checker$4.call(Checker.java:241) at org.kohsuke.groovy.sandbox.impl.Checker.checkedGetProperty(Checker.java:238) at com.cloudbees.groovy.cps.sandbox.SandboxInvoker.getProperty(SandboxInvoker.java:24) at 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()

概括

我假设变量要么以不同的方式初始化,要么根本不能与 vars/ 一起使用。目录功能一样可以。
这个特性是 Groovy 语言的一部分吗?或者 Jenkins 的全局管道库的限制?

最佳答案

要在 groovy 变量中定义一个变量而不是函数,请使用 groovy.transform.Field :

@groovy.transform.Field result = functionFoo()
def functionBar() {println this.result}

关于Jenkins 共享管道库 : Can I declare static variables in vars file?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40227332/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com