使用环境变量Jenkins Pipeline加载文件 [英] Load file with environment variables Jenkins Pipeline
问题描述
我正在做一个简单的管道:
I am doing a simple pipeline:
构建->阶段->生产
我需要不同的环境变量进行暂存和生产,因此我试图提供 source 变量.
I need different environment variables for staging and production, so i am trying to source variables.
sh 'source $JENKINS_HOME/.envvars/stacktest-staging.sh'
但是它返回找不到
[Stack Test] Running shell script
+ source /var/jenkins_home/.envvars/stacktest-staging.sh
/var/jenkins_home/workspace/Stack Test@tmp/durable-bcbe1515/script.sh: 2: /var/jenkins_home/workspace/Stack Test@tmp/durable-bcbe1515/script.sh: source: not found
路径是正确的,因为通过ssh登录时我运行相同的命令,并且运行正常.
The path is right, because i run the same command when i log via ssh, and it works fine.
这是管道的想法:
node {
stage name: 'Build'
// git and gradle build OK
echo 'My build stage'
stage name: 'Staging'
sh 'source $JENKINS_HOME/.envvars/stacktest-staging.sh' // PROBLEM HERE
echo '$DB_URL' // Expects http://production_url/my_db
sh 'gradle flywayMigrate' // To staging
input message: "Does Staging server look good?"
stage name: 'Production'
sh 'source $JENKINS_HOME/.envvars/stacktest-production.sh'
echo '$DB_URL' // Expects http://production_url/my_db
sh 'gradle flywayMigrate' // To production
sh './deploy.sh'
}
我该怎么办?
- 我当时正在考虑不使用管道(但是我将无法使用我的Jenkinsfile).
- 或者使用EnvInject插件为舞台制作和制作不同的工作(但我失去了舞台视图)
- 或者用withenv制作(但是代码变大了,因为今天我正在使用12个env vars)
推荐答案
从文件加载环境变量的一种方法是加载Groovy文件.
One way you could load environment variables from a file is to load a Groovy file.
例如:
- 假设您在"$ JENKINS_HOME/.envvars"中有一个名为"stacktest-staging.groovy"的常规文件.
-
在此文件中,您定义了2个要加载的环境变量
- Let's say you have a groovy file in '$JENKINS_HOME/.envvars' called 'stacktest-staging.groovy'.
Inside this file, you define 2 environment variables you want to load
env.DB_URL="hello"
env.DB_URL2="hello2"
然后您可以使用加载它
You can then load this in using
load "$JENKINS_HOME/.envvars/stacktest-staging.groovy"
然后,您可以在随后的echo/shell步骤中使用它们.
Then you can use them in subsequent echo/shell steps.
例如,这是一个简短的管道脚本:
For example, here is a short pipeline script:
node {
load "$JENKINS_HOME/.envvars/stacktest-staging.groovy"
echo "${env.DB_URL}"
echo "${env.DB_URL2}"
}
这篇关于使用环境变量Jenkins Pipeline加载文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!