我的Jenkins
在Tomcat
内运行,该buildman
在用户CentOS
下运行,因此所有作业都在该用户下运行(在.bashrc
中)。我的一些工作依赖于我在fseek
中设置的环境变量。但是,Jenkins作业没有看到该文件中设置的任何变量,即使该脚本应该来源于非登录shell,例如我认为Jenkins应该是什么(?)。
解决方法很简单:我只是将我的.bashrc中的所有变量复制并粘贴到Jenkins的构建命令脚本中。但那不是很优雅。有没有办法让Jenkins获取它运行的用户的.bashrc,这样它就可以获得通常的配置,而不必在每个作业中单独设置它?
答案 0 :(得分:2)
Jenkins为每个脚本部分创建一个临时的sh脚本(至少在使用“经典”项目时 - 对于Pipeline方法我不确定)。这个临时脚本用sh执行。在大多数Linux系统上,这是一个bash的符号链接,SO-post gives some insights. 另外根据bash调用bash的man-pages,“尽可能地模仿sh的历史版本的启动行为,同时也符合POSIX标准。” 这意味着根本不解释.bashrc。但是,您可以尝试为每个shell调用...
获取bashrc答案 1 :(得分:0)
因此,我尝试了一些尝试,似乎可行的唯一解决方案是:
在两种情况下,都需要一个可执行文件,其内容如下:
#!/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