【问题标题】:how to call a Jenkins 2 shared library with parameters and a closure from a Jenkinsfile pipeline?如何从 Jenkinsfile 管道调用带有参数和闭包的 Jenkins 2 共享库?
【发布时间】:2018-07-04 01:02:44
【问题描述】:

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

[链接]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"
            }
         }
    }
  }
}

【问题讨论】:

    标签: jenkins-shared-libraries


    【解决方案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}"
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多