持续部署jar包_基于Jenkins实现项目自动化部署

本文介绍了如何使用Jenkins实现Java项目的自动化部署,详细阐述了Jenkins的安装配置、相关插件安装、源码管理、构建触发器设置以及构建后的操作,包括停启脚本。通过这种方式,可以有效节省手动部署时间,提高开发效率。
摘要由CSDN通过智能技术生成
背景

Jenkins是基于Java开发的一种持续集成工具,主要用于持续、自动构建/测试软件项目、监控外部任务的运行,功能包括:

  • 持续的软件版本发布/测试项目。

  • 监控外部调用执行的工作。

为什么使用Jenkins?

先来看看一般的后端项目发布流程:

1、本地或打包服务器利用maven打成war包

2、远程或者SSH连上项目服务器

3、停掉tomcat,删除旧包和缓存,将新打的包放进去

4、重启tomcat,完成

看似步骤简单,其实占用了大量开发和运维的时间。

使用Jenkins后:

1、点击立即构建,完成。

什么?点击个按钮就完成了?没错,就是个按钮。其实在你点击按钮后Jenkins已经帮你把上述该走的流程后台跑了一遍了。再搭配Gitlab的githooks可实现提交代码后自动构建发布,连按钮也不需要点了。

在开发项目的过程中会部署测试环境来验证产品功能,重复以上操作会显得很繁琐,浪费大量时间,所以使用Jenkins来实现持续集成,对整个开发项目的过程有着重要的意义。使用Jenkins后,可节省手动发布时间成本,避免人工打包出错,同时也能及时发现系统开发集成过程中产生的问题。

本文接下来介绍如何基于Jenkins+Maven+Git(GitLab)持续集成Java项目。

流程概览

8a844fe36215feb04973bca6eea06e56.png

上图为Java测试环境从代码提交到应用部署的自动化完整流程。

下面我们具体来看Jenkins的安装和配置。

环境准备

现场测试环境如下,两台Linux虚拟机,安装好以下软件:

名称

IP

安装软件

代码托管、持续集成

192.168.3.144

JDK1.8、Maven3.5.4、Git1.7.1、Gitlab、Jenkins

应用服务器

192.168.3.145

JDK1.8、Tomcat

分别检验上述软件的安装情况:

检验JDK环境

bfaa0c6ef33e73df30e3124ff12d7a33.png

检验Maven

017dd07aa5811beae660677a38d2646a.png

检验Git

54ee373a3c5235412c3f4a0514d422fa.png

检验Gitlab

726fb38e5c43eb7aa1e4d323f54d533f.png

添加访问Gitlab的ssh凭证

在192.168.3.144使用root用户生成公钥和私钥

执行ssh-keygen-t rsa,在/root/.ssh/目录生成公钥和私钥

id_rsa:私钥文件
id_rsa.pub:公钥文件

aecffe73895aba3bd9c7214c2fcb1f88.png

把生成的公钥放在Gitlab中

登录192.168.3.144->点击头像->Settings->SSHKeys

93e803c7089c072ffe78643ffcb55961.png

Jenkins提前安装完毕。以Tomcat的war包形式来安装,启Jenkins。

f6bcf5894395df264f27000e8ce4808f.png

安装相关插件

发布插件Deploy to container Plugin

Maven插件Maven Integration plugin

Git插件Git plugin

SSH插件Publish Over SSH

Gitlab插件GitLab Plugin

Gitlab钩子插件Gitlab Hook Plugin

在Jenkins中配置SSHServers

9266a0a1b8b1ca66e5fcf2a6486335ad.png

创建一个Maven工程

构建Maven项目

3d2413f35d3c41dae1c48f7aba5cb7da.png

源码管理

填写git地址信息,由于已配置ssh,无需配置认证凭据

6e82f096ea7f0d2e6549a4206d0781f6.png

构建触发器

Buildwhen a change is pushed to GitLab:检测到Gitlab项目代码提交后就触发

df55c9c4dab8dc09e9a4bb921a4c5882.png

同时需要在Gitlab的Webhooks中配置上图圈出的地址,勾上Pushevents触发

496b9894ebc07f8f2b87908bce969290.png

打包前步骤

根据自己需求可以添加一些操作:如一些shell命令

d7c05d5d1fc762b615ea3e545c543ca6.png

Build打包构建

RootPOM:指定pom.xml的文件路径(这里是相对路径)

Goalsand options:mvn的选项,构件参数

ccb4e95e1a91414443a93d5f976bce7b.png

构建后操作

把构建好的jar包推送至应用主机,并执行启停脚本拉起应用服务

3ca31af619cfa6caf7228b7e80631c27.png

stop.sh

#!/bin/sh

APP_NAME=amp_dev_server.jar

tpid=`ps-ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`

if [${tpid} ]; then

echo'Stop Process...'

kill-15 $tpid

fi

sleep5

tpid=`ps-ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`

if [${tpid} ]; then

echo'Kill Process!'

kill-9 $tpid

else

echo'Stop Success!'

fi

向上滑动查看更多 内容

start.sh

#!/bin/sh

source/etc/profile

APP_NAME=amp_dev_server.jar

tpid=`ps-ef|grep $APP_NAME|grep -v grep|grep -v kill|awk '{print $2}'`

if [${tpid} ]; then

echo 'App is running.'

else

echo 'App is NOT running.'

fi

#!/bin/sh

rm-f tpid

nohupjava -jar /home/gpadmin/soft/amp_dev_server/amp_dev_server.jar--spring.profiles.active=test>/home/gpadmin/soft/amp_dev_server/amp_dev_server.log 2>&1&

echo$! > tpid

echoStart Success!

向上滑动查看更多内容

到此配置完成,保存即可。

构建项目

Jenkins常用构建方式有三种:

  • 手动构建:用于测试环境或者预上线环境部署,只需要在Jenkins的界面点立即构建即可执行

  • 触发式构建:用于开发环境部署,开发人员可以push代码或者合并代码到Gitlab项目的开发分支上,Jenkins就自动部署代码到对应服务器

  • 定时构建:在参数化构建基础上添加,可以每天定时打包

验证项目是否构建成功

b51069c78a1f3b5ef6edef6fb4eabee6.png

Jenkins使用各种颜色表示任务当前的状态:

蓝色:任务最近一次构建是成功的

红色:任务最后一次构建是失败的

黄色:任务最后一次构建表示成功了,但不稳定(主要是因为有失败的测试)

灰色:任务从未被执行过或被禁用了

Jenkins使用一组天气图标表示任务长期的一个状态,他们分别是:

  • 万里晴空,任务80%以上的集成都是成功的

  • 稍有乌云,任务有60%~80%的集成是成功的

  • 乌云密布,任务只有40%~60%的集成是成功的

  • 阴雨绵绵,任务的集成成功率只有20%~40%

  • 电闪雷鸣,任务的集成成功率不到20%

总结

实际上,产品在从需求到部署的过程中,会经历若干种不同环境,例如各种自动化测试运行环境、仿真环境、生产环境等。这些环境的搭建、配置、管理过程中,产品对应也需要在不同环境中进行部署,状况也会比较复杂,从头到尾地全自动持续部署的确困难。但如果能克服困难,做到持续交付,保证代码在整个上线流程环境没问题,整个团队就能做到有的放矢,也更加有力的保证了代码上线质量。所以,持续集成、持续部署和持续交付提供了一个优秀的DevOps环境,对于整个团队来说,好处与挑战并行。无论如何,频繁部署、快速交付以及开发测试流程自动化都将成为未来软件工程的重要组成部分。未来已经改变,不变者终将被淘汰。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值