如何在Jenkins管道中实现和调用实用程序方法?

时间:2017-01-20 22:43:07

标签: jenkins groovy jenkins-pipeline

我想在我的Jenkins管道中实现可重用的函数/方法......

 listAllUnitTests([
      $class: 'MyUtilities',
      arg1: 'foo',
      arg2: 'bar'
      ])

目前尚不清楚如何实际做到这一点;这是一个插件,扩展,是什么?

亨特

所以我从熟悉的东西开始,比如Git checkout ......

node {
    checkout([
         $class: 'GitSCM',
         branches: scm.branches,
         extensions: scm.extensions,
         userRemoteConfigs: scm.userRemoteConfigs
    ])
 }

查看Jenkins插件GitSCM的来源,checkout方法看起来相当标准;没有特殊的注释或其他任何东西,虽然我不确定管道参数如何与方法签名对齐,因为它显然是不匹配的。我怀疑我走错了路。

@Override
public void checkout(
   Run<?, ?> build,
   Launcher launcher,
   FilePath workspace,
   TaskListener listener,
   File changelogFile,
   SCMRevisionState baseline)
        throws IOException, InterruptedException {

问题

我会保持简单:如何实现参数化功能以从Jenkins管道调用来实现这样的目标?

node {
  stage('test'){

     myUtilMethod([
          $class: 'MyUtilities',
          arg1: 'foo',
          arg2: 'bar'
          ])
  }
}

1 个答案:

答案 0 :(得分:1)

您可以使用https://github.com/jenkinsci/workflow-cps-global-lib-plugin/

实施一个或多个库

我建议明确指定您需要库(使用上面页面中提到的@Library注释),而不是隐式可用。这样,您可以在开发和测试库时在测试作业上使用它的特定分支。

查看fabric8,了解一组非常全面的示例:https://github.com/fabric8io/fabric8-pipeline-library