我检查环境变量,可以看出它们与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在管理员用户下作为守护进程启动。
答案 0 :(得分:1)
Jenkins旨在让您绝对控制构建运行的环境。这使您可以在“实验室条件”下测试代码,这样如果出现问题,您就可以确切了解条件是什么。
作为向您提供“每次都相同”可靠性的一部分,它会重置您的所有环境变量,以便您的构建运行的环境是独立 Jenkins运行的环境。
如果要为Jenkins构建设置环境变量,请查看How to set environment variables in Jenkins?
答案 1 :(得分:0)
jenkins rpm提供的默认init.d脚本将源文件/ etc / sysconfig / jenkins如果你将环境内容添加到那里,它也应该选择它。