Jenkins部署ssh连接远程主机执行脚本找不到环境变量的问题

最近在Jenkins部署远程执行其他服务器上的编译脚本时遇到报找不到编译器的问题,耗时两天尝试了排序比较靠前的一些方法,但都没能解决问题,所以决定记录下,希望能帮助到大家。

执行命令:ssh root@远程主机 /studio/test.sh

编译报错:
/bin/sh: 1: aarch64-linux-gnu-gcc: not found
注:尝试了编译其他架构也都一样报对应的编译器不存在

1、首先找到的方法就是在Jenkins里设置全局属性Environment variables,添加PATH,值是编译器路径。添加调试信息echo $PATH发现PATH已成功添加编译器路径,但就是报找不到编译器。

2、远程主机PATH设置在/root/.bashrc文件里,尝试在执行脚本前先source /root/.bashrc,测试结果与1中一样。
为了方便测试,后边直接在Jenkins主机上执行下面的命令进行测试,当which这条命令能打印出编译器路径时即成功。
ssh root@远程主机 “source /root/.bashrc && ehco $PATH && which aarch64-linux-gnu-gcc”

3、参考以下文章中的方法,在相应配置文件中添加PATH并在远程主机上执行source,还是不行。
https://blog.csdn.net/whitehack/article/details/51705889

4、通过对3中博文的学习,在/etc/profile中添加PATH并在执行编译脚本前进行source,终于能找到编译器了,emmmm前边尝试执行前source /root/.bashrc不行source /etc/profile终于可以了,太不容易了,必须记录下。
最终在Jenkins执行的命令:
ssh root@远程主机 “source /etc/profile && /studio/test.sh”

你可能感兴趣的:(jenkins,jenkins,ssh,运维,linux,centos)