[英]How to mask password passed as user input while running Jenkins CI 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.