如何从Jenkinsfile管道调用带有参数和闭包的Jenkins 2共享库?

时间:2018-07-04 01:02:44

标签: jenkins-shared-libraries

我想从管道中调用下一个共享库:

[链接] https://github.com/docker/jenkins-pipeline-scripts/blob/master/vars/wrappedNode.groovy

我不知道如何从Jenkins 2管道中调用并填充vars映射和主体闭包。

我的共享库名称为“ vars / my_shared_library.groovy”,其内容为

def call(Map vars, Closure body=null) {
    vars = vars ?: [:]
    def myParameter = vars.get("myParam1",null)
    if (body) { body() }
    stuff...
}

Jenkinsfile的内容是:

@Library 'my_shared_library'
pipeline {
  agent none
  stages {
     stage ('info') {
         node {
            my_shared_library {
               myParam1 = "myValue1"
            }
         }
    }
  }
}

1 个答案:

答案 0 :(得分:1)

要从管道中调用自定义步骤,请像这样调用它:

node {
  my_shared_library(myParam1: "Jose"){
    echo "hello"
  }
}

要在上交地图的情况下对体内进行某些操作,您需要更改步骤:

def call(Map vars, Closure body=null) {
    vars = vars ?: [:]
    def myParameter = vars.get("myParam1",null)
    if (body) { body(myParameter) }
    stuff...
}

以及到此的管道:

node {
  my_shared_library(myParam1: "Jose"){ param -> 
    echo "hello ${param}"
  }
}