掩码密码插件仍在控制台输出中显示密码

时间:2018-08-14 06:53:27

标签: jenkins passwords jenkins-pipeline credentials masking

我们需要屏蔽管道作业中的密码,我们使用了屏蔽密码2.10.1,凭据和凭据绑定插件。但是我们仍然看到密码在Job Console输出中暴露出来。

代码:

node {
{
    withCredentials([[$class: 'UsernamePasswordMultiBinding', credentialsId: 'c6989249-6a8d-4618-9fd7-012720791e12', usernameVariable: 'artifact_id', passwordVariable: 'artifact_pwd']]){
                echo "password masking"
                sh "echo $artifact_id $artifact_pwd "
}}

输出:

[Pipeline] {
[Pipeline] withCredentials
[Pipeline] {
[Pipeline] echo
password masking
[Pipeline] sh
[workspace] Running shell script
+ echo **** 'Test!123'
**** Test!123
[Pipeline] }
[Pipeline] // withCredentials
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS

请帮助解决此问题

1 个答案:

答案 0 :(得分:0)

在管道运行期间,应在整个管道脚本中定义/创建一个Groovy变量artifact_pwd

另外,您使用"将字符串包装在行sh "echo $artifact_id $artifact_pwd "中,这将首先导致Groovy进行变量替换,因此$artifact_pwd将被替换为同名Groovy变量的值。

如果您不希望在字符串上进行变量替换,则可以使用''''来包装字符串,如下所示:

sh 'echo $artifact_id $artifact_pwd' 
//or 
sh '''echo $artifact_id $artifact_pwd'''

您可以将sh "echo $artifact_id $artifact_pwd"替换为sh 'echo $artifact_id $artifact_pwd',然后再次运行以查看输出内容。