如何将环境变量文件加载到Jenkins Pipeline中

问题描述 投票:0回答:1

我觉得应该有一个简单的方法可以做到这一点,但我找不到。

我的 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"
相同的结果。

jenkins
1个回答
0
投票

可以使用的功能之一是

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

© www.soinside.com 2019 - 2024. All rights reserved.