Jenkins Slave 设置

Jenkins Slave node环境变量设置有不少trap,在最近的工做当中,我把slave部署在red hat linux 上,进行c++项目的编译部署和发布,可是在执行工程的时候,总会报出某些命令 command cannot found,这种问题很是奇怪,你已经在linux的环境变量中设置了PATH等变量,并且在服务器上手动执行命令的时候没有任何问题。个人master主机部署在windows机器上,经过 Launch slave agents on unix machines via shh的方式运行slave.node

全部的一切看似正常,可是当你查看slave node 的系统信息的时候,你会发现以下状况:linux

PATH根本不是你设置的PATH,我倒如今都没弄明白这个path slave是从哪里读取出来的,你能够看到这个path里面没有你所要执行的命令。首先咱们要确认的一点是,你在linux上环境变量是设置在哪一个文件里面的,你们都知道在linux上能够有三种方式设置环境变量:c++

1. .bashrcshell

2. etc/profilewindows

3. .bashprofilebash

坑爹的事情发生了,jenkins 是从sh去执行shell的,而不是从bash执行,因此你在bash.*中设置的环境变量jenkins是读取不到的,一样你在你本身的shell脚本里面设置环境变量,jenkins一样读取不到,所以你只有两种方法去改变你jenkins slave的PATH路径:服务器

1.编辑你的etc/profile文件,把你的path放在这个文件中,可是你的shell脚本不能是#!/bin/bashunix

2.在你的slave node 配置页面,增长你的node properties的environment variable,添加PATH。blog

注意,最坑人的是,当你作了这两种变动,你在你的slave node 配置页面中看到环境变量仍是跟原来同样,不会有任何变化,我就是被这个给坑了,反复尝试。部署

总之你作了这两个更改以后,一切都OK了,我的以为这个是jenkins的bug。

相关文章
相关标签/搜索