在Jenkinsfile中使用pipeline编写脚本执行命令时候,很多时候我们的命令中需要携带密码,所以我们需要将密码隐藏避免输出到控制台日志中,先看一下隐藏密码后的效果:

Masking supported pattern matches of $SONAR_USERNAME or $SONAR_PASSWORD
[Pipeline] {
[Pipeline] sh
+ /var/maven_home/bin/mvn sonar:sonar -Dsonar.host.url=http://192.168.1.13:9000 -Dsonar.login=**** -Dsonar.password=**** -Dsonar.java.binaries=target/classes -Dsonar.projectName=shanhy-example1:develop -Dsonar.projectKey=shanhy-example1:develop
[INFO] Scanning for projects...

具体的方法很简单:
1、在Jenkins的“凭据”中,添加好账号密码生成一个记录(ID你可以指定,不指定的话系统自动生成)
Jenkins pipeline 隐藏密码_自动生成
Jenkins pipeline 隐藏密码_日志输出_02
2、编写 pipieline 脚本,示例如下:

withCredentials([usernamePassword(credentialsId: '55b64065-888888888888-c5261888', passwordVariable: 'SONAR_PASSWORD', usernameVariable: 'SONAR_USERNAME')]) {
	sh("${mvn_home}/bin/mvn sonar:sonar -Dsonar.host.url=http://192.168.1.13:9000 -Dsonar.login=${SONAR_USERNAME} -Dsonar.password=${SONAR_PASSWORD} -Dsonar.java.binaries=target/classes -Dsonar.projectName=${project_name}:${git_branch_name} -Dsonar.projectKey=${project_name}:${git_branch_name}")
}

这样的脚本执行后,控制台日志输出的密码就是 **** 这样脱敏的了。

(END)