使用环境变量 Jenkins Pipeline 加载文件 [英] Load file with environment variables Jenkins Pipeline

查看:71
本文介绍了使用环境变量 Jenkins Pipeline 加载文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am doing a simple pipeline:

构建 -> 分期 -> 生产

我需要不同的环境变量用于暂存和生产,所以我正在尝试变量.

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

推荐答案

从文件加载环境变量的一种方法是加载 Groovy 文件.

One way you could load environment variables from a file is to load a Groovy file.

例如:

  1. 假设您在$JENKINS_HOME/.envvars"中有一个名为stacktest-staging.groovy"的 groovy 文件.
  2. 在这个文件中,你定义了2个要加载的环境变量

  1. Let's say you have a groovy file in '$JENKINS_HOME/.envvars' called 'stacktest-staging.groovy'.
  2. 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屋!

  • 查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆