jenkins - 如何屏蔽 Jenkins Pipeline 项目中的密码字段?

标签 jenkins jenkins-plugins jenkins-pipeline

当在 Jenkinsfile 中定义密码属性时:

properties([
    parameters([
        password(name: 'KEY', description: 'Encryption key')
    ])
])

每次执行管道时,Jenkins 都会提示用户提供其值:

Build parameters

我希望这个参数被屏蔽,以便 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/

相关文章:

loops - 如何在 Jenkinsfile 的 for 循环中正确使用变量

ios - 有没有办法在构建之前下载配置文件(使用 Jenkins 或脚本)来构建机器?

java - 值不存在于可选 block 的下拉列表中 - jelly/jenkins

jenkins - 使用 Jenkins 管道访问电子邮件分机模板中的变量

jenkins - 在 Jenkins Pipeline 日志输出中隐藏密码而不使用 WithCredentials

docker - 使用 Jenkins 在 Heroku 容器注册表上部署 Docker 镜像

java - 从 jenkins Freestyle 项目部署 Artifact

unity-game-engine - 使用 Jenkins Xcode 插件构建项目时出现异常

Jenkins 脚本化管道使用全局时间戳选项

jenkins - 使用 groovy 解析 Jenkin 的 shell 脚本中的 JSON 对象