Jenkins运行时,场景遇到一些奇怪的问题,特别是在Powershell下能运行的命令,在Jenkins下运行就不行。
原因在于其特殊性:Jenkins执行脚本时,不是用当前Windows的登录账户执行的,所以当前登录账户的很多属性,环境变量,ssh配置,都无法使用!!!
下面列出一些遇到的问题。
1. Jenkins无法找到python 或git等命令
问题背景
Jenkins配置为执行一个python脚本,例如
运行时,发现python找不到,或者python内的子命令git什么的,找不到。
解决办法
需要给jenkins配置各种环境变量。
Dashboard -> 构建执行状态,然后编辑右边的设置图标
然后,添加Path环境变量。
同时,有一些必须的环境变量,例如JAVA_HOME,也可以这里设置。
2. Host key verification failed.
问题背景
python写了脚本,包括git pull origin master等命令,用PowserShell运行,没有问题。但是,放到Jenkins下执行python,就说git没权限了
解决办法
将文件夹C:\Users\当前用户.ssh 下的id_rsa、id_rsa.pub、known_hosts 拷贝到C:\Windows\System32\config\systemprofile\.ssh
文件夹下,即可。
C:\Windows\System32\config\systemprofile\.ssh
这个目录,所有登录账户都有权限,也就包括了Jenkins!