如何在课堂上使用詹金斯的内置方法?

时间:2018-11-07 11:51:28

标签: jenkins groovy jenkins-pipeline

我正在开发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内置方法吗?

非常感谢。

1 个答案:

答案 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
        }
    }
}