当在 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 管道,因此不能选择使用它。
有没有办法在构建日志中屏蔽这些密码类型的参数?
最佳答案
您需要使用 mask passwords plugin .这是一个 Jenkinsfile
示例取自 my shared pipeline library .
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
的现有建议之外,没有太多要补充的。但是,如果您通过模板自动生成作业并设置默认密码,那么您可能需要使用 hudson.util.Secret
以保护您的模板。
关于jenkins - 如何屏蔽 Jenkins Pipeline 项目中的密码字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46659862/