我们需要屏蔽管道作业中的密码,我们使用了屏蔽密码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
请帮助解决此问题
答案 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'
,然后再次运行以查看输出内容。