使用环境变量Jenkins Pipeline加载文件

我正在做一个简单的管道:

建立- >分期->生产

我需要分期和生产不同的环境变量,所以我试图 变量。

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插件为舞台制作和制作不同的工作(但我失去了舞台视图)
  • 或者用env制作(但是代码变大了,因为今天我正在使用12个env vars)

回答:

您可以从文件加载环境变量的一种方法是加载Groovy文件。

例如:

  1. 假设您在“ $ JENKINS_HOME / .envvars”中有一个名为“ stacktest-staging.groovy”的常规文件。
  2. 在此文件中,您定义了两个要加载的环境变量

    env.DB_URL="hello"

    env.DB_URL2=”hello2”

  3. 然后,您可以使用

    load "$JENKINS_HOME/.envvars/stacktest-staging.groovy"

  4. 然后,您可以在随后的echo / shell步骤中使用它们。

例如,这是一个简短的管道脚本:

node {

load "$JENKINS_HOME/.envvars/stacktest-staging.groovy"

echo "${env.DB_URL}"

echo "${env.DB_URL2}"

}

以上是 使用环境变量Jenkins Pipeline加载文件 的全部内容, 来源链接: utcz.com/qa/415672.html

回到顶部