You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

问题原因

Jenkins中每个sh步骤都会启动独立的Shell进程,进程间环境变量完全隔离。你分开执行source .env和printenv时,前者在一个进程里加载了变量,后者是全新进程,自然看不到这些变量。

解决方案

1. 同一Shell进程内执行命令

把source和后续需要使用变量的命令放在同一个sh块里,确保在同一个进程中运行:

sh """
source ${WORKSPACE}/.env
printenv
"""

或者简化为单行命令:

sh "source ${WORKSPACE}/.env && printenv"

2. 将.env变量注入Jenkins全局环境

如果需要在多个sh步骤或其他Jenkins步骤中复用这些变量,可以用Groovy脚本解析.env文件,把变量注入Jenkins的环境变量中:

stage('加载环境变量') {
    steps {
        script {
            def envContent = readFile "${WORKSPACE}/.env"
            envContent.eachLine { line ->
                // 跳过注释行和空行
                if (!line.startsWith('#') && line.contains('=')) {
                    def (key, value) = line.split('=', 2)*.trim()
                    // 移除变量值两端的引号(如果有)
                    value = value.replaceAll(/^["']|["']$/, '')
                    env[key] = value
                }
            }
        }
    }
}

之后在任意步骤中都能直接使用这些变量,比如:

sh "echo 版本号:${env.VERSION}"

3. 使用插件(不推荐)

曾经可以用EnvInject插件批量加载.env文件,但该插件已被标记为废弃,存在安全风险,不建议使用。

内容的提问来源于stack exchange,提问作者MatCat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 05:34:59