e.t*_*.t. 10 groovy refactoring jenkins jenkins-pipeline jenkinsfile
我想将我的Jenkins管道脚本重构为类以便于阅读和重用.
问题是我这样做时会遇到异常.我们来看一个简单的例子:
当我跑
echo currentBuild.toString()
Run Code Online (Sandbox Code Playgroud)
一切都好
但是当我把它提取到一个类中时:
class MyClass implements Serializable {
def runBuild() {
echo currentBuild.toString()
}
}
new MyClass().runBuild()
Run Code Online (Sandbox Code Playgroud)
我得到一个例外:
Started by user admin
Replayed #196
[Pipeline] End of Pipeline
groovy.lang.MissingPropertyException: No such property: currentBuild for class: MyClass
Run Code Online (Sandbox Code Playgroud)
将管道代码提取到类中的正确方法是什么?
ssh*_*pel 12
你是正确的方法,但问题是你没有将脚本对象传递给你的类的实例,并试图调用未在你创建的类中定义的方法.
以下是解决此问题的一种方法:
// Jenkins file or pipeline scripts editor in your job
new MyClass(this).runBuild()
// Class declaration
class MyClass implements Serializable {
def script
MyClass(def script) {
this.script=script
}
def runBuild() {
script.echo script.currentBuild.toString()
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6494 次 |
| 最近记录: |