我正在做一个简单的管道:
建立- >分期->生产
我需要分期和生产不同的环境变量,所以我试图 源 变量。
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' }
我该怎么办?
您可以从文件加载环境变量的一种方法是加载Groovy文件。
例如:
在此文件中,您定义了两个要加载的环境变量
env.DB_URL="hello"
env.DB_URL2=”hello2”
然后,您可以使用
load "$JENKINS_HOME/.envvars/stacktest-staging.groovy"
然后,您可以在随后的echo / shell步骤中使用它们。
例如,这是一个简短的管道脚本:
node { load "$JENKINS_HOME/.envvars/stacktest-staging.groovy" echo "${env.DB_URL}" echo "${env.DB_URL2}" }