在Jenkinsfile中设置环境变量

时间:2019-09-17 10:56:53

标签: jenkins groovy scripting continuous-integration jenkins-pipeline

这是一个奇怪的问题。我正在尝试使用我们的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},那么它应该能够解决我的问题,有人知道如何做到这一点吗?

谢谢

1 个答案:

答案 0 :(得分:1)

假设该函数称为processSecret(),那么您可以像下面的代码片段一样进行操作:

withEnv(["secrets="+SECRETS]) {
    processSecret()
}