gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:28:22 27 4
gpt4 key购买 nike

我有一个基于 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com