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

我可以在共享库中定义并参数化整个声明性管道吗?

党建义
2023-03-14

基本上,我希望我的Jenkins文件看起来像这样:

@Library('my-descriptive-pipline') _
myPipeline('arg1','arg2','arg3')

然后我的共享库(/vars/description ptivePipeline.groovy)会像这样:

pipeline {
    agent any
    options {
      skipDefaultCheckout()
    }
    environment {
    }
    stages {
        stage('stageA') {
            steps {
                ... Do something with arg1, arg2 or arg3
            }
        }
        stage('stageB') {
            steps {
                ... Do something with arg1, arg2 or arg3
            }
        }
    ....

我想集中管道配置,这样我就不必担心Jenkinsfile蔓延。声明式管道可以做到这一点吗?

共有3个答案

郗阳德
2023-03-14

否,目前无法共享完整的声明性管道。脚本化管道可以:

Begin quote:“声明性选项很好,但您将失去通过共享库提取可重用代码的能力。例如,您还不能这样做:

MyCompanyStandardPipeline {
    ... // which will plugin standard sections...
}

结束jenkins用户邮件列表中Cuong Tran的报价。

正如链接线程上的下一个回复指出的那样,您可以将共享库与Jenkinsfile变体一起使用,但只有使用脚本才能共享完整的管道。

冯曾笑
2023-03-14

正如共享库插件留档状态:

定义声明性管道

从2017年9月底发布的声明性1.2开始,您还可以在共享库中定义声明性管道。

这是相当新的,所以可能仍然有一些错误,但它应该可以工作。不要忘记升级共享库和声明插件。

武彭薄
2023-03-14

声明性管道1.2开始,现在可以在共享库中定义整个管道。

你可以在这里和这里找到更多

 类似资料:
  • 问题内容: 我正在使用声明性Jenkins管道来运行我的一些构建管道,并且想知道是否可以定义多个代理标签。 我有许多构建代理与我的Jenkins挂钩,并且希望此特定管道能够由具有不同标签的各种代理(但不能由ALL代理)构建。 更具体地说,假设我有2个代理,标签为“小”,4个为标签“中”,有6个为标签“大”。现在,我有一个非常节省资源的管道,我希望仅在“小型”或“中型”代理上执行,而不在大型代理上执

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

  • Jenkins共享管道库是否支持文件? 这会引发错误: groovy.lang.缺少属性异常:没有这样的属性:类的结果:groovy.lang.绑定在groovy.lang.Binding.get变量(Binding.java:63)在org.jenkinsci.plugins.scriptsecurity.sandbox.groovy.Sandbox Interceptor.onGetPrope

  • 问题内容: 我正在尝试做这样的事情: 但这给了我这个例外: 是否可以将阶段定义为外部闭包? 问题答案: 您不能在声明式管道之外定义阶段。声明性管道的主要目的是提供经过简化且自以为是的语法,因此您可以专注于应该做什么(通过使用一些可用的步骤)而不是如何去做。 如果您对更灵活的管道实现方式感兴趣,可以选择“ 脚本化管道”方法,该语法在语法方面并不严格-仅受Groovy和CPS执行模块的限制。 您的示例

  • 我正在尝试将工作场所中的所有脚本管道转换为声明性管道。我是新手。我有一个脚本化的管道,它有两个方法。我能够完成其余的脚本到声明式,但在方法上遇到了困难。由于声明性并不真正支持方法,而且我还必须在其他声明性管道中多次使用此方法,因此我想将此方法描述为共享库中的groovy脚本。 我的问题是,由于这是一个来自脚本化管道的方法,我可以直接将我的方法复制粘贴到groovy脚本中吗?还是它需要groovy的

  • 问题内容: 我正在尝试将旧样式的基于项目的工作流转换为基于Jenkins的管道。在浏览文档时,我发现有两种不同的语法分别命名为和。例如最近(2016年底)发布的Jenkins网络语法。尽管有一个新的语法版本,Jenkins仍然也支持脚本语法。 现在,我不确定这两种类型的哪种情况最合适。语法将很快被弃用吗?詹金斯管道的未来会是这样吗? 任何可以分享有关这两种语法类型的想法的人。 问题答案: 最初创建