当前位置: 首页 > 知识库问答 >
问题:

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

洪弘壮
2023-03-14

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

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

我不知道如何调用和填充来自Jenkins 2管道的vars映射和body闭包。

我的共享库名称是“vars/My_shared_library.groovy”,它们的内容是

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

文件内容为:

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

共有1个答案

长孙和悦
2023-03-14

要从管道中调用自定义步骤,请按如下方式调用它:

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}"
  }
}
 类似资料:
  • 问题内容: 有任何方法可以从具有参数的另一个管道触发管道作业,我已经尝试过 也尝试过 和 没有运气,它说: 项目类型不支持参数 问题答案: 由于子作业是另一个多分支管道项目,因此我需要指定我要运行的分支 现在可以用了

  • 我们试图切换到jenkins管道,但我在groovy/java的低水平阻止了我们建立一个共享库。 这里是我的共享库(位于bitbucket中git repo的{root}/src/com/pipeline.groovy中)我必须承认,我在这里做什么都不知道,因为我不知道包裹的定义 Jenkins的管道看起来 通过所有这些设置,我最终得到了错误: 我怀疑我的漂亮包裹的定义,但我坚持这样做。 非常欢迎

  • 我正在尝试创建一个定制的Jenkins管道,它将多个Jenkins作业生成的工件绑定在一起。每个作业都在不同的存储库上运行(基于它们自己的文件)。这些Jenkins文件的阶段完成了创建档案、编译代码等任务。 有人可能会说,我可以使用单个作业中的工件,然后将它们绑定在一起,但问题是这个高级管道将在特定的 ,因此它无法凭空创建存档。 由于我是詹金斯管道公司的新手,您对如何解决这个问题有什么建议吗? 最

  • 正如您所知道的,在Jenkins的共享库中,可以在Jenkinsfile中调用vars文件夹中文件的内容。 例如,在共享库的vars文件夹中,我们可以有一个名为在Jenkins文件中,我们可以通过以下方式调用它: 如本节所述。使用groovy文件并使用Jenkins文件中的方法调用它们,我没有任何问题。 但是我想定制一个管道,并使其尽可能通用。所以我想调用包含在文件夹中但在同一管道中的groovy

  • 问题内容: 从共享库/ dll调用函数的最简单,最安全的方法是什么?我对在Linux上执行此操作最感兴趣,但是如果有一种与平台无关的方法会更好。 有人可以提供示例代码来显示如何在用户将自己的版本编译到共享库的情况下执行以下工作吗? 顺便说一句,我知道如何编译共享库(),我只需要知道一种在运行时加载它的简单方法。 问题答案: 注意: 您正在库调用周围传递C 对象(在这种情况下为STL字符串)。有 *