介绍
这个插件可以通过ssh连接其他服务器。
1、安装插件
在jenkins应用商店中下载Publish Over SSH插件,离线环境请手动上传jenkins插件文件夹
2、生成 SSH 秘钥
在配置Publish over SSH中使用明文也可以
生成 SSH 秘钥,并将公钥发布到各服务器
登录 jenkins 服务器,执行 “ssh-keygen”:
秘钥生成存放的路径,默认/root/.ssh/id_rsa, 还有让你设置一个 “passphrase”密码,可以不加密码直接回车。
在这里我设置了密码,比如 “ixiao9”。
生成成功后,进入到/root/.ssh 目录下查看秘钥文件:
将公钥发到要远程的各服务器上,执行 “ssh-copy-id root@192.168.X.X”, root 是远程服务器的登录名,@ 后面是目标服务器 IP。
可以用 “ssh root@192.168.X.X”,验证下是否成功,无需输入密码登录到192.168.X.X即可。
一般会有多台服务器,同样的方式操作就行。
3、配置Publish over SSH
在 jenkins 的 “Configure System”(系统配置)中拉到最下面,找到 “Publish over SSH” 添加要远程的服务器,并进行配置。、
Passphrase:密码(输入刚刚的ixiao9)
Path to key:key文件(私钥)的路径
Key:将私钥复制到这个框中
Disable exec:禁止运行命令
4、SSH Server 配置
添加被操作的节点
完成配置后,点击下方的 “Test configuration”,如果出现 “success” 说明通了。
5、在项目中配置
在项目配置中,可以从下面三个地方找到此插件的配置。
选择一个自由风格项目
构建环境: Send files or execute commands over SSH before the build starts
和Send files or execute commands over SSH after the build runs
SSH Server Name:选个一个你在系统设置里配置的名字
Source files:本机的文件
Remove prefix:移除目录(只能指定Transfer Set Source files中的目录)
Remote directory:文件远程目录
Exec command:远程执行命令
6、注意
Source files部分
注意Source files部分
此图片来自:https://tendcode.com/article/Publish-Over-SSH/
超时问题
Exec timed out or was interrupted after 120,00ms
一般是因为网络问题,或jenkins节点ssh访问指定服务器错误。
还有一种是shell命令执行过久,导致超时。
修改默认时间。
首先找到你需要修改的项目——》下拉到ssh Publishers ——》Transfers ——》右下角选择高级
修改Exec timeout(ms)部分即可。
远程执行脚本超时
Exec exit status not zero. Status[xx]
这种情况是脚本执行过久没有结束Publish Over SSH等待将结果返回jenkins,超过了上面设置最大时间。
查看下面这张图Exec command部分
tar xf /home/mp-portal.tar.gz -C /home
cd /home/portal/bin/ && sh run.sh start
问题出现在sh run.sh start中
run.sh脚本上。
看下run.sh脚本
脚本最后一句前台滚动查看日志没有结束,Publish Over SSH等待run.sh脚本执行完毕将结果返回jenkins,超过了上面设置最大时间。
修改run.sh脚本即可