我正在开发jenkins共享库。
目录如下。
project
- src
--- Operations.groovy
- vars
--- entry.groovy.
现在在entry.grooy中。
我的代码很烂
import Operations;
def call(body){
def operation=new Operation();
podTemplate(xxxxxx){
node(nodelabel){
operation.stage_checkout()
}
}
}
在文件Operations.groovy
中class Operations {
def stage_checkout(){
stage('Checkout') {
checkout scm
}
}
}
当我尝试在jenkins中运行它时,出现如下错误。
GitHub has been notified of this commit’s build result
groovy.lang.MissingPropertyException: No such property: scm for class: Operations
Possible solutions: ui
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:53)
at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.getProperty(ScriptBytecodeAdapter.java:458)
at com.cloudbees.groovy.cps.sandbox.DefaultInvoker.getProperty(DefaultInvoker.java:39)
at
我认为“ checkout”是jenkins插件的内置方法,我如何正确使用它?有什么正确的方法或指南可以帮助我正确使用jenkins内置方法吗?
非常感谢。
答案 0 :(得分:3)
您可以通过对工作流程脚本的引用来使用内置的Jenkins管道步骤。您可以通过传递Operations
对象来通过构造函数传递对this
类的引用。考虑以下示例:
vars / entry.groovy :
import Operations;
def call(body){
def operation=new Operation(this); // passing a reference to workflow script
podTemplate(xxxxxx){
node(nodelabel){
operation.stage_checkout()
}
}
}
src / Operations.groovy :
class Operations {
private final Script script
Operations(Script script) {
this.script = script
}
def stage_checkout(){
script.stage('Checkout') {
script.checkout script.scm
}
}
}