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

时间:2017-08-25 21:46:55

标签: jenkins jenkins-plugins jenkins-pipeline jenkins-shared-libraries

基本上我希望我的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 个答案:

答案 0 :(得分:7)

现在可以在Declarative Pipeline 1.2中的共享库中定义整个管道。

您可以找到更多herehere

答案 1 :(得分:4)

正如shared libraries plugin documentation所述:

  

定义声明性管道

     

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

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

答案 2 :(得分:1)

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

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

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

最终引用Cuong Tran的jenkins users mailing list

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

答案 3 :(得分:0)

不建议将整个管道都放在共享库中...因为开发人员永远不会知道幕后发生的事情...声明式的整个目标都会消失..我建议创建一个可重用的类或脚本让开发人员撰写管道