jenkins中slave节点连接的两种常用方式
任务一般是在slave上面运行的。当然不是讲master节点不能跑任务,master节点主要是处理调度构建作业,把构建分发到slave节点进行实际执行,监视slave节点的状态(必要时让它们进行上线或者离线),记录和发布构建产物。
主要常用的的连接slave节点的方式就是通过ssh和jnlp。两个特点分别如下:
1)ssh来说,我们一般用的服务器都是linux系统,当然最方便的就是通过ssh启动jenkins节点,但是这个有个前提的要求就是master和slave之前能进行ssh连接
2)jnlp连接方式有个好处就是不用master和slave之间能够ssh连接,只需要能够ping即可。并且如果slave的机器是windows的话,也是可以的这个其实是非常实用的,因为有时候,可能一些权限或者防火墙的原因,这master和slave真的不能够ssh连接,还有一些未知的原因无法ssh到slave节点都可以通过jnlp的方式进行连接。
(一)SSH连接linux Windows Slave安装OpenSSH,并启动ssh服务,测试ssh的22端口是否开启
安装SSH插件
去插件管理-可选插件搜索: SSH Agent
安装完成
启用SSH Server Jenkins- 系统管理 - 全局安全配置, 把 SSH Server 设置为启用(默认是禁用)
新增节点
Jenkins- 系统管理 - 节点管理,新建节点
添加节点页面
名称 自定义一个节点名称
执行器数量 可以同时执行的job线程数,随便写个数字
远程工作目 宿主机上workspace目录
标签 自定义
用法 尽可能的使用这个节点
启动方式 Launch agent agents via SSH
主机 你自己的宿主机linux服务的ip
Credentials 添加你的linux服务器远程访问的root账号和密码
Host Key Verification Strategy 这项选择Non verifying Verifcation Stragegy
添加成功后,是离线状态
启动代理节点
点上面新增的节点启动代理
保存后重新构建job任务,会发现这个任务就在节点机器上运行了
(一)SSH连接windows
1,下载openSSH windows版(注:该版本是64位)
链接: pan.baidu.com/s/19V2W_e1A…
提取码: xgjp
openssh官网:
Windows Slave需安装OpenSSH,并启动ssh服务,测试ssh的22端口是否开启
cmd到openSSH路径下
安装sshd服务
powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
开放22号端口(如果你在windows关闭了防火墙并配置了入站规则可以不执行如下命令,多执行不影响)
netsh advfirewall firewall add rule name=sshd dir=in action=allow protocol=TCP localport=22
配置开机自启sshd服务
sc config sshd start= auto
将C:\Program Files\OpenSSH添加到path中,免得每次都要切到C:\Program Files\OpenSSH才能使用ssh,启动ssh服务
net start sshd
ssh出于安全考虑,每次连接都会提示输入密码,为了避免麻烦,就要配置密钥对。
1)生成密钥对命令
这里采用rsa算法,你也可以使用其他算法,但dsa默认不支持,这里是个坑,最好生成rsa密钥,ssh支持,随自己吧
ssh-keygen -t rsa
2)将公钥传到master主机的~/.ssh目录下
名字改成authorized_keys
3)修改远程主机sshd_config配置
PubkeyAuthentication yes
StrictModes no
重启sshd服务
Jenkins安装Publish Over SSH插件
Jenkins上配置ssh客户端
Publish Over SSH算是一个比较流行的ssh工具,可以传输文件,也可以执行命令(针对linux,可以执行命令和shel;针对windows,cmd里能够进行的操作都可以)。
在Jenkins管理界面中,依次打开:系统管理--》系统设置--》Publish over SSH部分,按照下图进行配置:
填写完成后,可以点击下面的按钮,测试下连接是否成功。
注意:
Name随便填,Hostname是ip或者主机名,用户名同远程桌面 用的用户名,点击高级后,填写密码部分。
其中的Remote Directory需要重点关注,该参数表示的是:ssh文件上传后,文件在远端服务器上的保存路径,路径需要预先建立好。
同时,如果上传了文件后,需要执行命令的话,这也是bat、shell等命令的工作目录。
针对windows类型的ssh服务器,这边的填写只能写相对路径,(base 路径为C:\Users\Administrator,如果作为非管理员登录,可能会稍微不一样,可以自己用SecureCRT之类的登进去试试,看看在哪个路径下)
如果不填,就是在base路径;
如果填写内容为“\”,(不含双引号),则路径会是c盘根路径;
如果填"target",则路径会是C:www.wanmeiyuele.cn www.120xh.cn \www.thd178.com/ Users\Administrator\target。
我这边简单起见,先不填。因为其作为后续命令执行的工作路径的原因,会有一些坑。后边我再补充。