【发布时间】:2017-01-03 10:10:47
【问题描述】:
我正在做一个简单的管道:
构建 -> 暂存 -> 生产
我需要不同的环境变量用于暂存和生产,所以我正在尝试获取变量。
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 登录时运行相同的命令,并且运行良好。
这是管道的想法:
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 插件为登台和生产制作不同的工作(但我失去了我的舞台视图)
- 或者 make withEnv(但是代码变大了,因为今天我使用了 12 个环境变量)
【问题讨论】:
标签: jenkins environment-variables jenkins-pipeline