当前位置: 首页 > 面试题库 >

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

幸乐湛
2023-03-14
问题内容

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

建立- >分期->生产

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

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}"
}


 类似资料:
  • 问题内容: 我在 根文件夹 文件中有.env 文件 并将文件放在文件夹中。文件的第一行是 我还尝试了以下操作: ; ; 但是,当我从 命令提示符* 运行文件时,不会加载我的env变量 * 如果我使用 Visual Studio 并按 F5 ,它将加载! 我不确定我在做什么错,我想念什么。任何建议都非常感谢。谢谢。 问题答案: 使用如何? 您的问题似乎是执行路径。

  • 这是我的next.config.js文件:

  • 从2.7.3版本开始,Dubbo会自动从约定key中读取配置,并将配置以Key-Value的形式写入到URL中。 支持的key有以下两个: dubbo.labels,指定一些列配置到URL中的键值对,通常通过JVM -D或系统环境变量指定。 增加以下配置: # JVM -Ddubbo.labels = "tag1=value1; tag2=value2" # 环境变量 DUBBO_LAB

  • 问题内容: 我有以下情形:我定义了一个env变量,并想在nginx块中使用它。参考nginx文档,我在文件中使用伪指令,如下所示: 现在我想将变量用于。我尝试如下所示: 但我最终收到以下错误消息: 问题答案: 正确的用法是,但是从nginx.conf设置的环境变量不能在服务器,位置或http块中使用。 如果使用openresty包(包括Lua),则可以使用环境变量。

  • laravel 在启动时,会加载项目的 env 文件,本文将会详细介绍 env 文件的使用与源码的分析。 ENV 文件的使用 多环境 ENV 文件的设置 一、在项目写多个 ENV 文件,例如三个 env 文件: .env.development、 .env.staging、 .env.production, 这三个文件中分别针对不同环境为某些变量配置了不同的值, 二、配置 APP_ENV 环境变量

  • 问题内容: 这是我第一次在Go中进行编码,而无需使用GOPATH。 我有一个档案。 我正在尝试通过Sendgrid发送电子邮件;我有一个包含我的SENDGRID_API_KEY的文件。 当尝试在我的文件中使用密钥时,该值并未被提取。 我也使用了’LookupEnv’,它返回false。 任何帮助,将不胜感激。 问题答案: 并且不检查文件。如果您的环境变量在文件中,则必须自己加载它们。或者使用为您执