ber*_*olo 1 groovy jenkins-groovy jenkins-pipeline
我正在尝试使用 groovy 脚本对 jenkins 管道进行一些更改,但我不断收到此错误:
groovy.lang.MissingPropertyException: No such property: credentials for class:
我试过用 with 声明变量,def但仍然出现异常,eclipse 无法识别该属性存在。
我究竟做错了什么?!
#!/usr/bin/groovy
package common.pipeline
import common.pipeline.Credentials
Credentials credentials = new Credentials()
def withCredentials(steps) {
credentials.productionPipeline(steps)
}
Run Code Online (Sandbox Code Playgroud)
这个脚本将被 groovy 编译成一个 Script 类,该类在run方法内部定义了字段,并使用另一个withCredentials尝试访问该字段的方法(有点像这样):
import common.pipeline.Credentials
class Script1 extends Script {
def withCredentials(steps) {
credentials.productionPipeline(steps)
}
def run(args) {
Credentials credentials = new Credentials()
}
}
Run Code Online (Sandbox Code Playgroud)
如您所见,这是行不通的,因为凭据不在类中的字段级别...
Groovy 有一个注释来实现这一点:
#!/usr/bin/groovy
package common.pipeline
import common.pipeline.Credentials
import groovy.transform.Field
@Field Credentials credentials = new Credentials()
def withCredentials(steps) {
credentials.productionPipeline(steps)
}
Run Code Online (Sandbox Code Playgroud)