如何使用工作流插件在Jenkins的workflowLibs中共享代码

时间:2015-07-22 19:48:01

标签: jenkins-workflow

在我的 workflowLibs 目录中,我有几个文件:

src/org/inin/Pipeline.groovy
src/org/inin/Build.groovy
src/org/inin/Test.groovy

Build.groovy 如下所示:

package org.inin;

def DoBuild(foo){
  echo "I am building: $foo"
}

Test.groovy 如下所示:

package org.inin;

def DoTest(foo){
  echo "I am testing: $foo"
}

我希望我的构建能够做到这样的事情:

def pipeline =  new org.inin.Pipeline()
pipeline.DoBuild() or pipeline.Build.DoBuild()
pipeline.DoTest()  or pipeline.Test.DoTest()

但我不知道如何在其自己的目录中制作Pipeline.groovy参考文件。 我试过这样做:

package org.inin;
load "Build.groovy"
//evaluate(new File("./Build.groovy"))

但我总是得到:

java.lang.NoSuchMethodError: No such DSL method DoBuild found among ...

workflowLibs 目录结构中的groovy文件之间共享代码的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

我最后做了一些hackery:

<强> SRC /组织/ ININ / Pipeline.groovy:

package org.inin;

def getBuild(){
 return new Build();
}

def getTest(){
 return new Test();
}

<强> SRC /组织/ ININ / Build.groovy:

package org.inin;

def DoMavenBuild(gitRepo, gitBranch, pomName ){
    ...
}

<强> SRC /组织/ ININ / Test.groovy:

package org.inin;

def DoTest(){
    ...
}

在工作本身:

def pipeline =  new org.inin.Pipeline();
pipeline.build.DoMavenBuild(...);
pipeline.test.DoTest();