如何将.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
相关产品推荐
相关产品推荐

