Jenkins可以找到关联用户的.bashrc吗?

时间:2017-03-17 21:40:00

标签: bash jenkins environment-variables .bash-profile

我的JenkinsTomcat内运行,该buildman在用户CentOS下运行,因此所有作业都在该用户下运行(在.bashrc中)。我的一些工作依赖于我在fseek中设置的环境变量。但是,Jenkins作业没有看到该文件中设置的任何变量,即使该脚本应该来源于非登录shell,例如我认为Jenkins应该是什么(?)。

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

3 个答案:

答案 0 :(得分:2)

Jenkins为每个脚本部分创建一个临时的sh脚本(至少在使用“经典”项目时 - 对于Pipeline方法我不确定)。这个临时脚本用sh执行。在大多数Linux系统上,这是一个bash的符号链接,SO-post gives some insights. 另外根据bash调用bash的man-pages,“尽可能地模仿sh的历史版本的启动行为,同时也符合POSIX标准。” 这意味着根本不解释.bashrc。但是,您可以尝试为每个shell调用...

获取bashrc

答案 1 :(得分:0)

因此,我尝试了一些尝试,似乎可行的唯一解决方案是:

  • 您的存储库中有一个使用bash的shell脚本
  • 编写一个文件,通过sh对其进行chmod,然后运行它

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

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

使用sh“”“ bash -c” ....“”“”“似乎无效

答案 2 :(得分:0)

我找到了一个对我有用的命令

在.profile,.bashrc等中:

export MY_BASH_VAR=123

在Execute Shell中:

VAR=$(bash -c "source ~/.profile && echo \$MY_BASH_VAR")
echo $VAR

构建作业后,将在输出控制台中打印123