我觉得应该有一个简单的方法可以做到这一点,但我找不到。
我的 git 存储库中有一个名为 .env 的文件,其中包含 Jenkins 代理中所需的变量列表。这些变量是公共的,例如版本号(不是密码)。 如何将变量文件加载到我的 Jenkins 管道中?
我正在使用 Jenkins 2.462.1
在没有 Jenkins 的 Linux 环境中,我可以执行以下操作来加载和查看我的变量:
source .env
printenv
我尝试将以下内容添加到我的 Jenkinsfile 中的阶段。变量在 source 命令之后打印到控制台输出,但不在 printenv 返回的列表中。
sh "source ${WORKSPACE}/.env"
sh "printenv"
使用
sh ". ${WORKSPACE}/.env"
返回与 sh "source ${WORKSPACE}/.env"
相同的结果。
可以使用的功能之一是
withEnv
函数。通常它看起来像这样。环境变量列表被传递给它。
withEnv(['ENV_VARIABLE_1=/path/to/tool']) {
sh "echo ${ENV_VARIABLE_1}"
}
出于问题的目的,可以将其修改为如下所示
withEnv(readFile('fullfilepath.env').split('\n') as List) {
// Test the loaded environment variable by echoing ${variablenme}
// Do other actions
// Step - 1 step - 2 so on.
}
上面的例子取自这里的参考。 https://www.jenkins.io/doc/pipeline/steps/workflow-basic-steps/#withenv-set-environment-variables
可以在此处找到 readfile 文档 https://www.jenkins.io/doc/pipeline/steps/workflow-basic-steps/#readfile-read-file-from-workspace