提问者:小点点

可以Jenkins源. bashrc关联的用户?


我的Jenkins运行在Tomcat中,它运行在userbuildman下,因此所有作业都运行在该用户下(在CentOS中)。我的一些作业依赖于我在. bashrc中设置的环境变量。但是,Jenkins作业看不到该文件中设置的任何变量,即使该脚本应该是为非登录shell提供的,例如我认为Jenkins应该是(?)。

解决方法很简单:我只是将. bashrc中的所有变量复制并粘贴到Jenkins的build命令脚本中。但这不是很优雅。有没有办法让Jenkins来获取运行它的用户的.bashrc,以便它获得通常的配置,而不必在每个作业中单独设置它?


共3个答案

匿名用户

Jenkins为每个脚本部分创建一个临时sh-script(至少在使用“经典”项目时——对于Pipeline方法,我不确定)。这个临时脚本是用sh执行的。在大多数Linux系统上,这是bash的符号链接,这个SO提供了一些见解。
此外,根据bash使用sh调用bash的手册页,“试图尽可能接近地模仿sh历史版本的启动行为,同时也符合POSIX标准。”这意味着. bashrc根本没有被解释。然而,您可以尝试为每次shell调用获取bashrc…

匿名用户

所以,我尝试了一些事情,唯一有效的解决方案是:

  • 在您的repo中有一个使用bash的外壳脚本
  • 编写一个文件,通过sh对其进行chmod,然后运行它

在这两种情况下,都需要有一个可执行文件,其内容如下:

#!/usr/bin/env bash
...

使用sh""bash-c"……""""似乎不起作用

匿名用户

当我的Jenkins代理在redhat linux上SSH启动时,我看到它确实打印了. bashrc中定义的环境变量。

我看不到. bashrc更改的问题是因为我需要重新启动代理,所以它接受了更改。