我有以下目录结构
(root)
+- src # Groovy source files
| +- org
| +- foo
| +- Bar.groovy # for org.foo.Bar class
+- vars
| +- foo.groovy # for global 'foo' variable
我在以下文件中有以下代码行
Bar.groovy
package org.foo
class Bar implements Serializable {
def config
def script
Bar(script, config){
this.script = script
this.config = config
}
def accessGlobalVars(){
this.script.echo "${foo.GlobalVar}" // throws an err
}
}
foo.groovy
import groovy.transform.Field
@Field GlobalVar="Hello World!"
我能够访问脚本块中的Jenkins文件中的变量
echo "${foo.GlobalVar}"
是否可以访问类中的相同变量,因为vars文件夹位于src文件夹级别?
答案 0 :(得分:5)
示例代码中的"${foo.GlobalVar}"
正在尝试针对foo
类型解析Bar
。由于没有foo
引用,因此无法解析,您可能会得到类似MissingPropertyException
的内容。
Jenkins Pipeline Groovy使用Groovy编译和运行时API进行一些不同的编译和绑定。全局变量也可以通过script
对象通过其动态GroovyObject
API(在源代码here中演示)来解析。最简单的方法是让Jenkins实现的动态Groovy对象解析解析你的变量。
从以下位置更改您的行:
this.script.echo "${foo.GlobalVar}"
要从foo
对象(我认为詹姆斯金融管道中的script
或this
script
)new Foo(this, config)
来查找this.script.echo "${this.script.foo.GlobalVar}"
:
import pandas as pd
def main():
data = [{'cast_id': 1, 'character': 'W', 'credit_id': '5', 'gender': 2, 'id': 31, 'name': 'To', 'order': 0, 'profile_path': 'pQ'} , {'cast_id': 2, 'character': 'Bu', 'credit_id': '52', 'gender': 2, 'id': 12, 'name': 'Ti', 'order': 1, 'profile_path': 'uX'}]
df = pd.DataFrame.from_dict(data)
print(df)
if __name__ == '__main__':
main()