3

本质上,我希望我的 Jenkinsfile 看起来像这样:

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

然后我的共享库(/vars/descriptivePipeline.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 蔓延。声明性管道可以做到这一点吗?

4

4 回答 4

7

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

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

于 2017-10-13T03:42:28.853 回答
4

正如共享库插件文档所述:

定义声明性管道

从 2017 年 9 月下旬发布的声明式 1.2 开始,您也可以在共享库中定义声明式管道。

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

于 2017-10-13T06:50:47.667 回答
1

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

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

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

在詹金斯用户邮件列表中结束来自 Cuong Tran 的引用。

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

于 2017-08-26T00:31:51.447 回答
1

不建议将整个管道放在共享库中...因为开发人员永远不会知道幕后发生了什么...声明性的条目目标将消失..我建议创建一个可重用的类或脚本并让开发人员组成管道

于 2019-12-28T16:50:34.517 回答