【问题标题】:Environment variables are not found in JenkinsJenkins 中找不到环境变量
【发布时间】:2018-12-27 02:22:28
【问题描述】:

我想在 Jenkins 中设置很多变量。我尝试将它们放在jenkins 用户的.bashrc.bash_profile.profile 中,但是当构建发生时詹金斯找不到它们。

唯一可行的方法是将所有环境变量放入 Jenkinsfile 中,如下所示:

env.INTERCOM_APP_ID = '12312'
env.INTERCOM_PERSONAL_ACCESS_TOKEN = '1231'
env.INTERCOM_IDENTITY_VERIFICATION_KEY='asadfas'

但我认为这不是一个好方法。

在 Jenkins 中设置环境变量的正确方法是什么?

【问题讨论】:

  • 您在使用 Amazon Linux AMI 吗?
  • @TalhaJunaid 不,我正在使用 GCP 计算实例。
  • 以前我使用 Amazon Linux AMI 遇到过这个问题,它会在重启后刷新环境变量。

标签: linux ubuntu jenkins environment-variables


【解决方案1】:

对我来说,这似乎很正常。 INTERCOM_PERSONAL_ACCESS_TOKENINTERCOM_IDENTITY_VERIFICATION_KEY 应被视为文本凭据,您可以使用 environment 指令添加环境变量。

stages {
    stage('Example') {
        environment {
            INTERCOM_APP_ID = '12312'
            INTERCOM_PERSONAL_ACCESS_TOKEN = credentials('TokenCrednetialsID')
            INTERCOM_IDENTITY_VERIFICATION_KEY = credentials('VerificationCrednetialsID')
        }
        steps {
            echo "Hello ${env.INTERCOM_APP_ID}"
        }
    }
}

如果您需要将环境变量与 JenkinsFile 分开,您可以创建一个包含所有这些的 groovy 文件,然后使用

将该文件加载到 Jenkinsfile
load "$JENKINS_HOME/.envvars/stacktest-staging.groovy"

欲了解更多信息,请查看以下链接

https://jenkins.io/doc/pipeline/steps/workflow-cps/

SO: Load file with environment variables ...

【讨论】:

  • 我认为这不是一个好的解决方案,因为我有很多环境变量,而不仅仅是三个。我不希望它们占据我的大部分 Jenkinsfile
  • 在系统级别设置 Jenkins 特定的环境变量是危险的,因为它也包含秘密文本。您可以创建一个 groovy 文件,其中包含并将其加载到 jenkinsFile 中。请查看stackoverflow.com/a/39178479/3358570。学习如何做到这一点。
  • 是的。这就是我需要的。如果您将其添加到您的答案中,我会接受它。谢谢。
【解决方案2】:

Jenkins 将环境变量重置为他们工作的一些默认值。设置它们的最佳方法是在 jenkins 配置中。您可以设置全局变量、本地为项目或本地为节点。

现在我不记得这个功能是内置的还是由某个插件提供的。

【讨论】:

    猜你喜欢
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 2016-07-11
    • 2013-04-17
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多