首页 > 解决方案 > 在 Jenkinsfile 中设置环境变量

问题描述

这是一个奇怪的问题。我正在尝试使用我们的 Jenkins 团队创建的一个函数,该函数接受一个名为 secrets 的环境变量并使用它来推送到保险库。

当我使用参数构建并将机密用作参数时,这工作正常,我也可以使用打印出机密 print("{$env.secrets}")但我想在我的文件中生成机密而不是将它们作为参数发送。

如果我不包含参数并在我的代码print("{$env.secrets}")打印中定义一个名为 secrets 的变量null并且该函数不起作用,

我努力了

 SECRETS = "{{\"username\":\"${USERNAME}\",\"password\":\"${PASSWORD}\"}}"
        environment {
            secrets = SECRETS
    }

使用秘密的函数不直接接受它作为参数,所以我不能改变我发送给它的东西,它看起来像这样

withCredentials([[$class: 'XXXXX', credentialsId: 'XXXX',
            usernameVariable: 'USERNAME', passwordVariable: 'PASSWORD']]) {
            vaultLoadSecrets(username:"$USERNAME",password:"$PASSWORD")
        }

我想如果我可以{$env.secrets}在运行时设置它应该能够解决我的问题,有人知道该怎么做吗?

谢谢

标签: jenkinsgroovyscriptingcontinuous-integrationjenkins-pipeline

解决方案


假设这个函数被称为 processSecret(),那么你可以像下面的代码片段那样做:

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

推荐阅读