Jenkins的按照分支部署+部署后打包上传到服务器

26 篇文章 0 订阅
23 篇文章 0 订阅

Jenkins的按照分支部署+部署后打包上传到服务器

安装Publish Over SSH 插件

在这里插入图片描述

在这里插入图片描述

配置Publish over SSH

这个配置就是说你把打包好的文件上传到哪台服务器上

逻辑关系为:Jenkins所在的主机为A,我们要把打包的文件上传到主机B,那我们就需要Jenkins登录到主机B上,按照正常的理解,比如说我要去朋友家,应该是朋友把他的钥匙,给我,我就可以出入他家了,但是ssh免密登录的逻辑是相反的,我要去朋友家,我要先把自己的钥匙给朋友,这样我就可以出入朋友家了,是不是很神奇?这个比喻,是我抄的,嗯,是抄的,至于为什么,请大家移步看下面两篇博客。如果不想看的话,我来复述一下它真实的交互流程

1、我们在主机A上生成了公钥和私钥

2、我们将公钥推送给了主机B

3、主机A请求主机B,主机B根据公钥加密一个请求返回给主机A

4、主机A根据自己的私钥解密这个请求,再返回给主机B

5、主机B发现这个内容和自己发出去的是一样的,那么就信任了这台主机A,主机A就可以登录主机B了
传送门1
传送门2
在这里插入图片描述
我们接下来就要在这里配置
在这里插入图片描述
但是在配置前,我们要先登录一下Jenkins所在的主机,也就是主机A
在这里插入图片描述

[root@hecs-82454 local]# ssh -keygen
Bad escape character 'ygen'.
[root@hecs-82454 local]# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
The key's randomart image is:
+---[RSA 2048]----+
|                +|
|             + =.|
|            . =o+|
|         o .   +X|
|        S o   o*+|
|    .      . .+oo|
|   . .     ..=o+=|
|  .   o   = =o.EO|
|   ... oo+ oo=+==|
+----[SHA256]-----+
[root@hecs-82454 local]# ls

我们来看一下生成的文件,根据Your identification has been saved in /root/.ssh/id_rsa.这句话的提示,我们知道了私钥的存储地址,根据Your public key has been saved in /root/.ssh/id_rsa.pub.知道了公钥的存储地址
在这里插入图片描述
在这里插入图片描述

现在我们在主机A上生成密码了,那怎么让主机B获取到呢

命令

ssh-copy-id root@远程主机名

在这里插入图片描述
我们来检查一下远程主机,也就是主机B,发现在/root/.ssh的authorized_keys的内容=我们主机A的公钥,
在这里插入图片描述

其实我是在同一台主机上做的,因为我就一台远程主机,但是这并不影响结果。

终于,我们可以开始配置Jenkins了!
在这里插入图片描述
但是,不知道为啥,我这里Path to key识别不到,就只能用Key来放置私钥了,把私钥复制下来放进去即可
在这里插入图片描述

新建一个 自由风格的项目

在这里插入图片描述

General

GitHub项目

在这里插入图片描述

丢弃旧的构建

在这里插入图片描述

参数化构建过程

在这里插入图片描述
在这里插入图片描述

源码管理

Git

这个Repositories不知道怎么获取的请参考另一片篇传送门
在这里插入图片描述

构建

在这里插入图片描述
在这里插入图片描述

构建后操作

在这里插入图片描述
在这里插入图片描述
Transfer Set Source files: 这个的意思是源文件,Jenkins把代码从GitHub上拉取代码后在本地通过maven编译打包,打包后的东西在target文件夹里,也会生成一个jar包,这就是源文件

Remove prefix: 写死为target就行,话说我也不太清楚这个是干啥的

Remote directory: 还记不记得我们在配置Publish over SSH的时候也有一个Remote Directory,/usr/local/JenkinsAndSpring,也就是远程主机的目录,现在这个Remote directory和Publish over SSH的Remote Directory是相对路径,比如我现在配置的是/jenkinsjars,那么就应该有一个目录为/usr/local/JenkinsAndSpring/jenkinsjars,如果没有的话,就会新建一个这个目录,我们Jenkins打包生成的jar包就会传到远程主机的这个目录下

Exec command: 这个就是我们可以执行脚本,比如我们远程主机已经获取到jar包了,我们需要停掉原来的服务,再启动新的jar包,这个功能就可以放到脚本里。这个可以加可以不加。

这样,配置任务就完成了。

执行-测试一下

在这里插入图片描述
接下来我们看一下Jenkins干了点什么
在这里插入图片描述

我们来看一下“/var/lib/jenkins/workspace/安得猛士兮守四”都有啥,发现,外层是源码,target里是打包后的文件

[root@hecs-82454 安得猛士兮守四]# cd target/
[root@hecs-82454 target]# ls
classes                 maven-archiver              NewCRUD-0.0.1-SNAPSHOT.jar.original
generated-sources       maven-status                surefire-reports
generated-test-sources  NewCRUD-0.0.1-SNAPSHOT.jar  test-classes
[root@hecs-82454 target]# ls
classes                 maven-archiver              NewCRUD-0.0.1-SNAPSHOT.jar.original
generated-sources       maven-status                surefire-reports
generated-test-sources  NewCRUD-0.0.1-SNAPSHOT.jar  test-classes
[root@hecs-82454 target]# pwd
/var/lib/jenkins/workspace/安得猛士兮守四/target
[root@hecs-82454 target]# cd ..
[root@hecs-82454 安得猛士兮守四]# ls
mvnw  mvnw.cmd  pom.xml  src  target  testng2.xml  testng.xml
[root@hecs-82454 安得猛士兮守四]# 

同时也做了单元测试
在这里插入图片描述
还将/var/lib/jenkins/workspace/安得猛士兮守四/target/NewCRUD-0.0.1-SNAPSHOT.jar复制了一份到/var/lib/jenkins/.m2/repository/com/NewCRUD/0.0.1-SNAPSHOT/NewCRUD-0.0.1-SNAPSHOT.jar,这一步的目的,我没搞明白
在这里插入图片描述
最后,我们来检查一下远程主机是不是已经收到了jar包,看来是有的,这个restart.sh是抄的,还没抄明白,所以就不加进去了。

[root@hecs-82454 jenkinsjars]# pwd
/usr/local/JenkinsAndSpring/jenkinsjars
[root@hecs-82454 jenkinsjars]# ls
NewCRUD-0.0.1-SNAPSHOT.jar  restart.sh

然后我们再来试一下部署其他的分支,比如我现在是dev分支,变化是我在dev分支新增了一个testng3.xml文件
在这里插入图片描述
在这里插入图片描述
执行了testng3.xml的单元测试
在这里插入图片描述

至此,大功告成,虽然还有可改进的很大空间,但至少流程是通过了的。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值