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

Fra*_*ell 7 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}"
        }
Run Code Online (Sandbox Code Playgroud)

谢谢!

Rob*_*les 6

你很亲密 你不能用直接的声明来完成它,但是如果你混合使用一点脚本,你可以用一个Closure完成这个."步骤"必须在每个阶段,因此您可以运行"脚本",但Closure定义为deploy可以在其中执行任何常规步骤.

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 ()}
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)