FreeStyle的JenkinsJob
在freestyle的job中配置执行shell命令后,job在运行时默认的执行方式为
/bin/bash -xe /tmp/jenkinsxxxx.sh
1 | Building in workspace /var/lib/jenkins/workspace/jenkins_shell_test |
在执行机上查看对应的进程
1 | [root@localhost ~]# ps -ef |grep -i jenkins |
/bin/sh -xe xxx.sh
方式运行的shell为非交互式非登录的模式,这种模式下的shell在启动时不会读取/etc/profile中的内容,所以/etc/profile中定义的环境变量不能访问
解决方法:
在shell中添加 #!/bin/bash -ilex
,将shell模式修改为交互登录模式即可。
1 | [root@localhost ~]# ps -ef |grep -i jenkins |
注意, #!/bin/bash -ilex 一定要在首行
pipeline模式的JenkinsJob
pipeline模式下的原因与解决方案与FreeStyle类似,只是pipeline模式下脚本运行的进程不是jenkins主进程直接fork出来的。
1 | [root@localhost ~]# ps -ef |grep -i jenkins |
pipeline中配置bash的登录模式
1 | // #!/bin/bash -ilex 一定要在首行,与第一个 """ 同行 |