为什么我的 Jenkins 环境和我本地的用户环境不一样

Why does my Jenkins environment not the same as my local user environment

我检查了环境变量,发现它们与 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 作为守护进程在管理员用户下启动。

Jenkins 旨在让您完全控制您的构建运行的环境。这让您可以在 "lab conditions" 下测试您的代码,这样如果出现问题,您就可以确切地知道当时的情况。

作为为您提供 "same every time" 可靠性的一部分,它会重置您的所有环境变量,以便您的构建运行环境 独立于 Jenkins 运行环境英寸

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

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