是否可以在Jenkins Declatative管道中重用代码?

时间:2017-10-23 22:00:01

标签: jenkins jenkins-pipeline

我想在不同的部署之间重用代码,例如分阶段和生产,唯一的区别是环境变量?

我想它看起来像这样:(虽然这显然不起作用)。

pipeline {
    stage("Dev Deploy"){
        environment {
             PROP1 = "abc"
        }
        deploy ()
    }
    stage("Prod Deploy"){
        environment {
           PROP1 = "xyz"
        }
        deploy ()
    }
}

deploy = steps{
            sh "./gradlew deploy -Pproperty1=${env.PROP1}"
        }

谢谢!

1 个答案:

答案 0 :(得分:5)

你很亲密。你不能用直接的声明来完成它,但如果你混合了一点脚本,你可以用一个Closure完成这个。 "步骤"必须在每个阶段,所以你可以运行一个"脚本",但是定义为deploy的Closure可以有任何正常的步骤。

def deploy = {
            sh "./gradlew deploy -Pproperty1=${env.PROP1}"
        }

pipeline {
    agent any

    stages {
        stage("Dev Deploy"){
            environment {
                 PROP1 = "abc"
            }
            steps {
                script {deploy ()}
            }
        }
        stage("Prod Deploy"){
            environment {
               PROP1 = "xyz"
            }
            steps {
                script {deploy ()}
            }
        }
    }
}