控制台日志中的 Jenkins 声明性管道掩码参数密码

Jenkins declarative pipeline mask parameter password in console logs

我想屏蔽在 Jenkins 作业中作为参数提供的密码,它使用的是声明性管道语法。我不想保存任何凭据并使用它们。因为这将是用户输入的凭据 运行 特定于他们的工作。

我已经尝试过 MaskPasswordsBuildWrapper,但它不起作用。如果有人可以提供工作示例,我将不胜感激。

这是我使用 MaskPasswordsBuildWrapper 的声明性管道的 Jenkinsfile,它不起作用:

pipeline {

    agent none

    options {
        skipDefaultCheckout()
        skipStagesAfterUnstable()
    }

    parameters {
        string(name: 'userid', defaultValue: 'master', description: 'Enter User ID')
        password(name: 'passwd', defaultValue: 'secret', description: 'Enter Password')
    }

    stages {
        stage('Test') {
            agent {
                label 'someLabel'
            }
            steps {
                script {
                    wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[var: 'PSWD', password: params.passwd]], varMaskRegexes: []]) {
                        sh "echo PSWD: ${PSWD}"
                    }
                }
            }
        }
    }
}

我能够在控制台日志中屏蔽密码,下面是工作代码:

pipeline {

    agent none

    options {
        skipDefaultCheckout()
        skipStagesAfterUnstable()
    }

    parameters {
        string(name: 'userid', defaultValue: 'master', description: 'Enter User ID')
        password(name: 'passwd', defaultValue: 'secret', description: 'Enter Password')
    }

    stages {
        stage('Test') {
            agent {
                label 'someLabel'
            }
            steps {
                script {
                    wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[password: "${passwd}", var: 'PSWD']]]) {
                        sh '''echo PSWD: ${passwd}'''
                    }
                }
            }
        }
    }
}