【问题标题】:Why does my Jenkins environment not the same as my local user environment为什么我的 Jenkins 环境和我的本地用户环境不一样
【发布时间】:2016-05-14 23:08:59
【问题描述】:

我检查了环境变量,发现它们与 Jenkins 的不同。我在admin(用户名)下启动了终端并执行了一个简单的命令id -un; echo $PATH

~ admin$ id -un
admin
~ admin$ echo $PATH
/Users/admin/.rvm/gems/ruby-2.2.3/bin:/Users/admin/.rvm/gems/ruby-2.2.3@global/bin:/Users/admin/.rvm/rubies/ruby-2.2.3/bin:/Users/admin/.rvm/bin:/Users/admin/.gem/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/admin/.gem/bin:/Users/admin/.gem/bin

当我从 shell 脚本运行相同的命令作为 Jenkins 构建的一部分时,我可以看到不同的输出:

+ id -un
admin
+ echo /usr/bin:/bin:/usr/sbin:/sbin
/usr/bin:/bin:/usr/sbin:/sbin

我的 ~/.bach_profile 似乎被 Jenkins 忽略了,或者它可能是在 Jenkins 加载后执行的。

我该如何解决这个问题?

ps:Jenkins 作为守护进程在 admin 用户下启动。

【问题讨论】:

    标签: bash jenkins path environment-variables


    【解决方案1】:

    Jenkins 旨在让您对构建运行的环境进行绝对控制。这使您可以在“实验室条件”下测试您的代码,这样如果出现问题,您就可以确切地知道条件是什么。

    作为为您提供“每次都一样”的可靠性的一部分,它会重置您的所有环境变量,以便您的构建运行的环境独立 Jenkins 运行的环境。

    如果您想为您的 Jenkins 构建设置环境变量,请查看 How to set environment variables in Jenkins?

    【讨论】:

    • 我经常使用 EnvInject,但是每次构建都配置它们很不方便。我也尝试通过Manage Jenkins->Configure System->Environment Variables 全局配置它们,但它似乎不起作用,在构建期间输入的环境变量对我的环境变量没有影响。我发现的唯一方法是/usr/local/opt/jenkins/... 中的自定义 plist,但这真的很不方便。此外,当我安装新软件时,我还必须了解配置并在 Jenkins 中模仿它。
    【解决方案2】:

    jenkins rpm 提供的默认 init.d 脚本将获取文件 /etc/sysconfig/jenkins 如果您将环境内容添加到该文件中,它也应该选择它。

    【讨论】:

      猜你喜欢
      • 2021-04-20
      • 1970-01-01
      • 2011-04-26
      • 2021-12-05
      • 2016-09-08
      • 2022-10-21
      • 1970-01-01
      • 2020-01-12
      • 1970-01-01
      相关资源
      最近更新 更多