繁体   English   中英

如何屏蔽 Jenkins Pipeline 项目中的密码字段?

[英]How to mask a password field in Jenkins Pipeline project?

Jenkinsfile定义密码属性时:

properties([
    parameters([
        password(name: 'KEY', description: 'Encryption key')
    ])
])

每次执行管道时,Jenkins 都会提示用户提供其值:

构建参数

我希望这个参数被屏蔽,以便echo ${KEY}不打印用户传递的实际值。 但是,目前 echo 它会逐字打印提供的值:

properties([
    parameters([
        password(name: 'KEY', description: 'Encryption key')
    ])
])

node {
    stage('Stage 1') {
        # Will print the actual value of the KEY, verbatim
        sh "echo ${KEY}"
    }
}

此外,Mask Passwords 插件似乎不适用于 Jenkins 管道,因此不能选择使用它。

有没有办法在构建日志中屏蔽这些密码类型的参数?

您将需要使用 掩码密码插件 这是从我的共享管道库中获取的Jenkinsfile示例。

properties([
    parameters([
        password(name: 'KEY', description: 'Encryption key')
    ])  
])  

node {
    stage('Stage 1') {
       // Will print the masked value of the KEY, replaced with ****
       wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: [[var: 'KEY', password: KEY]], varMaskRegexes: []]) {
            sh "echo ${KEY}"
        }   
    }   
}

除了现有的关于withCredentials建议withCredentials ,没有什么可添加的。 但是,如果您通过模板自动生成作业并设置默认密码,那么您可能希望使用hudson.util.Secret来保护您的模板。

您可以使用Jenkins Credentials 插件。使用此插件,您可以创建一个带有 ID 的凭证,以在您的管道中使用:

代码将是:

withCredentials([string(credentialsId: 'pass', variable: 'password1')]) {
     echo "My password is '${password1}'!"
}

在您的用户案例中:

node {
    stage('Echo') {
        withCredentials([string(credentialsId: 'pass', variable: 'password1')]) {
            echo "'${password1}'!"
        }
    }
}

注意:密码只会在 withCredentials 块中被屏蔽。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM