Jenkins使用Publish Over SSH插件实现部署

介绍

这个插件可以通过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脚本即可

posted @ 2022-05-17 20:21  iXiAo9  阅读(3034)  评论(0编辑  收藏  举报