Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

时间:2022-12-24 17:51:57

场景

Docker+Jenkins+Gitee+Maven项目配置jdk、maven、gitee等拉取代码并自动构建以及遇到的那些坑:

Docker+Jenkins+Gitee+Maven项目配置jdk、maven、gitee等拉取代码并自动构建以及遇到的那些坑_霸道流氓气质的博客-CSDN博客

在上面将后台jar包构建成功之后,如果需要将构建的jar包传输到服务器可以通过

配置ssh并传输来实现。

在上面讲过如果需要上传jar包到服务器上,即jenkins所在服务器和jar包所在服务器不是同一个,需要进行传输jar包。

需要安装插件Publish Over SSH

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

注:

博客:
霸道流氓气质的博客_CSDN博客-C#,架构之路,SpringBoot领域博主

实现

1、添加SSH Servers

Dashboard-系统配置-SSH Servers

Name:自取

HostName:SSH 服务器的ip

UserName:SSH服务器的用户名

Remote Directory:配置的根目录,需要注意的是

此目录必须存在,否则不会创建。发布者只能将文件放在此目录下。

注意,没有什么可以阻止exec创建、删除或移动文件到用户有权限的任何地方。

换句话说,登录ssh的用户需要有该目录的权限,且后续的操作以该目录为根目录,其他目录的后续配置是在此目录的基础上。

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

这里配置的用户只对/home/iunisjzx/目录有权限,所以配置Remote Directory为当前目录。

然后点击高级配置

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

勾选Use password authentication ,or use a different key

勾选这个选线才会出来输入密码的地方

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

在Passphrase/Password框中输入上面ssh用户的密码,下面的Path tp key 和Key不t用管,那是配置.ssh公钥私钥对的方式,

这里使用用户名和密码的方式。

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

配置完成之后点击Test Configuration,提示Success 则配置成功。

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

2、构建任务配置

安装完插件并配置了SSH Server之后,来到任务的构建配置中

在Post Steps中选择Send files or execute commands over SSH

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

然后选择你上面新建的SSH Server,并配置其他参数

Source files:jar包所在的路径,注意这里的是相对路径,是相对于项目所在目录下的路径

比如上面构建后jar包的全路径为:

/home/badao/jenkinsworkspace/workspace/fzys_show_server_maven/Server/ruoyi-admin/target/ruoyi-admin.jar

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

那么这里项目路径就是

/home/badao/jenkinsworkspace/workspace/fzys_show_server_maven

所以这里的Source files 为

Server/ruoyi-admin/target/ruoyi-admin.jar

Remove prefix:要移除的前缀,我们只希望传输jar包,而不是将整个Server/ruoyi-admin/target/ruoyi-admin.jar连同这前面路径也会创建。

所以这里Remove prefix为

Server/ruoyi-admin/target

Remote directory:远程目录,即传输过去jar包存放的目录,注意这里是在前面配置SSH Server时

配置的Remote directory路径的基础上,这里希望上传后的jar包就存储在/home/iunisjzx这个路径下,所以这里再

配置Remote directory时只需要为/即可。

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

后面Exec command即是在传输之后需要执行的命令,这里根据自己jar的环境具体配置。

这里只是简单的输出一句话

echo "succ"

一般是备份jar包,替换jar包,重启容器、compose之类的操作。

3、此时再进行构建

查看控制台输出时能看到传输文件成功

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

此时去ssh server上查看jar包也上传成功

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

但是为什么没有看到配置的执行的命令的输出

这是因为需要勾选Verbose output in console

才能在构建日志台输出中看到输出的日志

如果说执行的步骤较多,通过添加一些echo输出并打开日志输出,就能看到执行到哪一步以及一些调试信息等。

 Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令

 

此时再构建时就能在控制台中看到输出了

Docker+Jenkins+Gitee+Maven构建后台jar包后配置SSH传送到服务器并执行指定命令