前提条件下的詹金斯声明性管道负载参数

时间:2020-09-26 12:49:35

标签: jenkins pipeline declarative jenkins-declarative-pipeline

在jenkins声明性管道中,

有一种执行前提条件的方式,它应该从文件中加载构建参数。在詹金斯(Jenkins)中,有一个选项可以使我们重新启动各个阶段。因此,我希望每个阶段都可以从groovy文件中加载参数。

当前是

pipeline {
    agent any

        stage("Grep the values") {
            steps {
                load "${WORKSPACE}/file-parameter.groovy"
            }
        }


        stage("Perform Deploynment) {
            when {
                expression { "${Perform_Deployment}" == "true" }
            }

            steps {
                withCredentials([
                    usernamePassword(credentialsId: "LoginID", passwordVariable: "LoginPassword", usernameVariable: "LoginUser")
                ]) {
                    ansiblePlaybook (
                        playbook: "${WORKSPACE}/ansible-playbook.yml",
                        forks: 5,
                        extraVars: [
                            loginUser: "${LoginUser}",
                            loginPassword: "${LoginPassword}"
                        ]
                    )
                }
            }
        }
    }
}

在出现条件之前,如何在阶段加载“ $ {WORKSPACE} /file-parameter.groovy”。我的期望应该如下所示

pipeline {
    agent any

        stage("Grep the values") {
            steps {
                load "${WORKSPACE}/file-parameter.groovy"
            }
        }


        stage("Perform Deploynment) {
            load "${WORKSPACE}/file-parameter.groovy"
            when {

                expression { "${Perform_Deployment}" == "true" }
            }

            steps {
                withCredentials([
                    usernamePassword(credentialsId: "LoginID", passwordVariable: "LoginPassword", usernameVariable: "LoginUser")
                ]) {
                    ansiblePlaybook (
                        playbook: "${WORKSPACE}/ansible-playbook.yml",
                        forks: 5,
                        extraVars: [
                            loginUser: "${LoginUser}",
                            loginPassword: "${LoginPassword}"
                        ]
                    )
                }
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

load步骤返回执行脚本时返回的常规脚本,因此您需要将其存储在变量中

file-parameter.groovy可能看起来像这样:

return [
    performDeployment: true,
    // other variables
]

或这样

performDeployment = true

// other variables and methods

return this

在两种情况下,您都可以像这样在管道中使用它:

stage("Grep the values") {
    steps {
        script {
            fileParams = load("${WORKSPACE}/file-parameter.groovy")
        }
    }
}

stage("Perform Deploynment) {
    when {
        expression { fileParams.performDeployment }
    }

我敢肯定,您不需要进行字符串比较,而可以只使用布尔值。