Jenkins:PasswordParameterValue.value 需要 String 但收到 Secret

Jenkins: PasswordParameterValue.value expects String but received Secret

我有两个 jenkins 作业,一个接受密码的父作业,然后父作业将此信息传递给另一个需要密码参数的 jenkins 子作业。我收到如下所述的错误。

ERROR:
java.lang.ClassCastException: hudson.model.PasswordParameterValue.value expects class java.lang.String but received class hudson.util.Secret

--

parent-job:
pipeline {
    agent any   
    stages {
        stage('Parameters'){
            steps {
                script {
                properties([
                        parameters([
                            password(defaultValue: '', name: 'uma_auth_client_secret'),
                            password(defaultValue: '', name: 'pki_client_cacert_password'),
                            password(defaultValue: '', name: 'db_url')
                        ])
                    ])
                }
            }
        }
        stage('Deploy'){
            steps {
                script {
                        def jobBuild = build job: child-job, propagate: false, parameters: [
                            password(name: 'uma_auth_client_secret', value :params.uma_auth_client_secret),
                            password(name: 'pki_client_cacert_password', value: params.pki_client_cacert_password),
                            password(name:'db_url', value: params.db_url)
                        ]
                }
            }
        }
    }
}

--

child-job:
pipeline {
    agent { label 'master' }
    parameters {
    password(defaultValue: '', description: '', name: 'pki_client_cacert_password')
    password(defaultValue: '', description: '', name: 'db_url')
    }

        stage('DeployToDev') {
                steps {
                    script{
                        withEnv(["ENV_PKI_CLIENT_CACERT_PASSWORD=${params.pki_client_cacert_password}", "ENV_DB_URL=${params.db_url}"]) {
                            ....
                            }
                }
            }
        }
    }
}

我的问题是

  1. 帮我解决这个问题。

我能够如下解决这个问题,我创建了 jenkins 凭据并且能够将这些值推送到下游 'child-job' 作业

pipeline {
    agent any   
    stages {
        stage('Parameters'){
            steps {
                script {
                properties([
                        parameters([
                            password(defaultValue: '', name: 'uma_auth_client_secret'),
                            password(defaultValue: '', name: 'pki_client_cacert_password'),
                            password(defaultValue: '', name: 'db_url')
                        ])
                    ])
                }
            }
        }
        stage('Deploy'){
            steps {
                script {
                    withCredentials(
                        [
                            string(credentialsId: 'uma_auth_client_secret_o2', variable: 'uma_auth_client_secret'),
                            string(credentialsId: 'db_url_o2', variable: 'db_url'),
                            string(credentialsId: 'pki_client_cacert_password_o2', variable: 'pki_client_cacert_password')
                        ]
                        ){
                            def jobBuild = build job: "child-job", propagate: false, parameters: [
                            password(name: 'uma_auth_client_secret', value : "${uma_auth_client_secret}"),
                            password(name:'db_url', value: "${db_url}"),
                            password(name: 'pki_client_cacert_password', value: "${pki_client_cacert_password}")
                        ]
                        
                    }

                }
            }
        }
    }
}