这是一个奇怪的问题。我正在尝试使用我们的Jenkins团队创建的函数,该函数需要一个称为secrets的环境变量,并使用它来推送至Vault。
当我使用参数进行构建并将秘密用作参数时,此方法可以很好地工作,我也可以使用以下命令打印出秘密
print("{$env.secrets}")
但我想在文件中生成机密,而不是将其作为参数发送。
如果我没有在代码中print("{$env.secrets}")
打印参数null
时未包含参数并定义了一个称为secrets的变量,而该函数不起作用,则
我尝试过
SECRETS = "{{\"username\":\"${USERNAME}\",\"password\":\"${PASSWORD}\"}}"
environment {
secrets = SECRETS
}
使用秘密的函数不会直接将其作为参数接受,因此我无法更改发送给它的内容,它看起来像这样
withCredentials([[$class: 'XXXXX', credentialsId: 'XXXX',
usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
vaultLoadSecrets(username:"$USERNAME",password:"$PASSWORD")
}
我认为,如果我可以在运行时设置{$env.secrets}
,那么它应该能够解决我的问题,有人知道如何做到这一点吗?
谢谢
答案 0 :(得分:1)
假设该函数称为processSecret(),那么您可以像下面的代码片段一样进行操作:
withEnv(["secrets="+SECRETS]) {
processSecret()
}