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

标签 jenkins jenkins-pipeline credentials

我有一个基于 Jenkinsfile 的参数化 Jenkins 管道.一些参数包含我不想出现在作业的构建日志中的敏感密码。

所以我的问题是:我可以以某种方式在 Jenkinsfile 中注册一个字符串吗?然后被替换 - 比方说 ********** - 每当它出现在日志输出中?

我知道 withCredentials步骤,但我无法使用它,因为凭据未存储在 Jenkins 凭据存储中(但在运行时作为参数提供)。

我在这里找到了这个答案 https://stackoverflow.com/a/42372859/1549950并像这样尝试:

def secrets = [
    [password: firstPassword, var: 'SECRET'],
    [password: secondPassword, var: 'SECRET'],
    [password: thirdPassword, var: 'SECRET']
]

node() {
    wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: secrets]) {
        // my stages containing steps...
    }
}

哪里firstPassword , secondPassword , thirdPassword是包含我的密码的变量。但我仍然得到了 firstPassword 的内容...在日志输出中显示纯文本。

我有 Mask Password plugin安装在我的 Jenkins 版本 2.12.0 上。

基本上我正在寻找这样的东西:https://issues.jenkins-ci.org/browse/JENKINS-27486 - 票已解决,但没有给出最终实现的示例片段。

最佳答案

实际上我不知道为什么这首先不起作用,但这是问题的解决方案。

定义一个包含要隐藏的 secret 的数组,如下所示:

def splunkPassword = 'verySecretPa55w0rd'
def basicAuthPassword = 'my8asicAuthPa55w0rd'

def getSecrets() {
    [
            [password: splunkPassword, var: 'SECRET'],
            [password: basicAuthPassword, var: 'SECRET']
    ]
}

免责声明:我不知道 SECRET value 有重要作用,从某个片段复制并粘贴它,它按预期工作:)

之后,您可以在 中包裹任何电话。脚本化管道 像这样:
node {
    wrap([$class: 'MaskPasswordsBuildWrapper', varPasswordPairs: getSecrets()]) {
        stage 'First Stage' { ... }
        stage 'Second Stage' { ... }
    }
}
getSecrets()中提供的所有密码数组将在您的构建输出中像这样被屏蔽:
SPLUNK_PASSWORD: ********
BASIC_AUTH_ADMIN_PASSWORD: ********

关于jenkins - 在 Jenkins Pipeline 日志输出中隐藏密码而不使用 WithCredentials,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52551232/

相关文章:

jenkins - 通过Jenkins执行Newman( postman )作业(输出问题)

Jenkins Pipeline currentBuild 持续时间总是返回 0

database - 如何在 Julia 中管理凭据?

httpwebrequest - 替换可移植类库中的 PreAuthenticate

security - 您如何支持带有散列或加密密码的 Web 应用程序?

Jenkins 从同一提交开始重复构建多分支管道

git - 启动后将文件发送到容器实例 (Docker)

jenkins - 将 Jenkins 管道阶段显示为失败,但不会导致整个作业失败

jenkins - Jenkins xUnit 插件的控制参数

java - 在 Jenkins 插件中设置 envvars