Jenkins+Git+Maven自动化部署配置

3.1 git配置

3.2 maven配置


(相关资料图)

3.3 pom.xml配置

3.4 build

4.1 安装Publish Over SSH插件

4.2 修改Post Steps配置

4.3 执行构建

4.4 publish over ssh优化

4.5 运行前清理

4.6 代码提交测试

4.1 构建的时候报错找不到jdk

4.2 阿里云镜像配置

4.3  配置testserver之后构建异常

基本思路

服务器配置如下:

192.168.159.50 gitlab服务器(Gitlab,内存至少5个G,要不根本跑不动)

192.168.159.51 jenkins服务器(Jenkins-Server+Maven+JDK)

192.168.158.52 测试服务器(JDK)

1、jenkins安装maven依赖

2、git安装

git安装

这里先在jenkins这台机器上装个git

yum install -y git

3、Jenkins中新建任务

新建一个任务,这里选择构建一个maven项目

项目名称写first

3.1 git配置

输入项目地址(就是我们在自己gitlab服务器上的项目地址)

选择分支,看你的是master分支还是main分支

3.2 maven配置

这里写你jenkins服务器上的maven安装位置:我的是/usr/local/maven

3.3 pom.xml配置

代码仓库中pom.xml的位置

这里还要看你pom.xml文件的位置,如果不是直接暴露在仓库最外层,比如在demo目录下,那就要写成demo/pom.xml

3.4 build

点击构建按钮

查看控制台输出:

看到如下页面说明打包完成了。

Dashboard这里也可以看到成功了,并且显示出了曾经成功和失败的时间

去jenkins服务器上面查看是否打包成功,如下,可以看到target目录和jar包说明打包成功了

运行jar包测试一下

java -jar demo-0.0.1-SNAPSHOT.jar --server.port=8888

这个只是个测试项目,只有一个负责测试的Controller,结构大概如下

测试下简单的业务类,访问:http://192.168.159.51:8888/index/hello

简单业务类的测试也没有任何的问题。这样一个简单的自动化部署就完成了,但是我们还想自动把jar包传到测试服务器(192.168.159.52)上面执行,而不是我们去手动执行jar包。

4、自动化发布到测试服务器并自动执行(Test-server)

4.1 安装Publish Over SSH插件

先在jenkins服务器上安装个插件:Publish Over SSH

选中,点击Install without restart

4.2 修改Post Steps配置

1、由于还没有添加测试服务器,先去System Configuration中配置

2、在Configure System菜单里 往下拉,找到Publish over SSH

3、添加一台目标服务器:这里我的测试服务器IP是192.168.159.52

4、测试下链接是否正常,左下角显示Success说明连接没问题

5、再去看Post Steps中,选择Send files or execute commands over SSH

这里就可以看到我们刚才添加的testserver了,如下图所示。

6、发布到远程服务器的配置

这样让远程测试服务器上的jar包以后台进程方式启动

4.3 执行构建

查看控制台输出

查看jar包是否传到了测试服务器上,如下图。

查看测试服务器是否执行了启动jar包的脚本(脚本就是我们在Post Steps配置的那一行)

jps

可以看到,jar包已经被执行了。

验证业务类是否可访问,192.168.159.52:8888/index/hello

好了,到此我们已经了解了持续集成和持续部署的基本操作,当然,这些还都是皮毛,后面再研究下。

4.4 publish over ssh优化

1、 超时机制

输出命令时一定要注意不要让窗口卡主,不然Jenkins会认为认为一直没完成

2、shell的日志输出

将jenkins构建成功后的脚本修改成如下命令:

nohup java -jar /root/xxoo/demo*.jar >mylog.log 2>&1 &

或者下面这个也可以

nohup java -jar /root/xxoo/demo*.jar &>mylog.log &

数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他地方

标准输入(stdin):代码为0,使用<或<<;

标准输出(stdout):代码为1,使用>或>>;

标准错误输出(stderr):代码为2,使用2>或2>>

> 覆盖写

>> 追加写

>是数据流操作符,2>&1正常输出和错误输出全部追加

jenkins的配置文件修改下:

可以看到,201毫秒 ,时间缩短了

4.5 运行前清理

配置杀死之前运行的进程

我们需要在测试服务器上编写好这个x.sh脚本,脚本内容如下

#!/bin/bash#删除历史数据rm -rf xxooappname=$1#获取传入的参数echo "arg:$1"#获取正在运行的jar包pidpid=`ps -ef | grep $1 | grep 'java -jar' | awk '{printf $2}'`echo $pid#如果pid为空,提示一下,否则,执行kill命令if [ -z $pid ];#使用-z 做空值判断        then                echo "$appname not started"        else               kill -9 $pid                echo "$appname stoping...."check=`ps -ef | grep -w $pid | grep java`if [ -z $check ];        then                echo "$appname pid:$pid is stop"        else                echo "$appname stop failed"fifi

4.6 代码提交测试

我们改动下代码,之后提交到GitLab服务器

然后执行构建

访问:http://192.168.159.52:8888/index/hello,看是否构建成功

这里都是手动的,颇为麻烦,后面用钩子改成自动的。

5、小插曲

4.1 构建的时候报错找不到jdk

默认yum安装java的时候会显示安装的是openjdk1.8,实则实际上只安装了jre

yum install -y java-devel

4.2 阿里云镜像配置

修改/usr/local/maven/conf/settings.xml

4.3  配置testserver之后构建异常

Exception when publishing, exception message [Exec timed out or was interrupted after 120,001 ms]

参考了其他大佬的文章,需要勾选Exec in pty选项

然后重新构建就成功了

标签: MAVEN Jenkins Java ECHO CONTROLLER CHECK KILL 自动化部 TARGET SHELL printf Demo STOP FIRST MAIN 基本操作 HTTP 只有一个 MASTER

x 广告
Jenkins+Git+Maven自动化部署配置

3 1git配置3 2maven配置3 3pom xml配置3 4build4 1安装PublishOverSSH插件4 2修改PostSteps配置4 3执行构建4 4publishoverssh优化4 5运行前清

全球聚焦:腾讯控股:于1月18日回购93万股,回购价格为371.2-380.6港元,共耗资约3.51亿港元。

腾讯控股:于1月18日回购93万股,回购价格为371 2-380 6港元,共耗资约3 51亿港元

中科星图(688568)1月18日主力资金净卖出1708.00元

截至2023年1月18日收盘,中科星图(688568)报收于61 69元,上涨1 43%,换手率0 53%,成交量5659 03手,成交额3475 79万元。

科士达获2.1亿美元储能产品采购订单!_环球新消息

12月21日科士达公告,科士达及控股子公司宁德时代科士达科技有限公司(以下简称“时代科士达”)于近日收到与客户A签订的产品采购订单,订...

弘业期货1月18日开盘涨幅达5%

以下是弘业期货在北京时间1月18日09:26分盘口异动快照:1月18日,弘业期货开盘涨幅达5%,截至9点26分,报19 3元,成交4921 5万元,换手率2 53%

总投资517 亿!亿纬锂能携手三巨头布局锂电全产业链-全球视点

2月16日,亿纬锂能发布公告称与云南省玉溪市人民政府、恩捷股份、华友控股、云南云天化股份有限公司在云南省昆明市签订《新能源电池全产业链项

母亲过世修坟都要老板赞助,“这个书记太贪” 环球快讯

长安街知事微信公众号|记者蒙江1月16日晚,广西纪检监察网发布三集电视专题片《清廉建设勇毅前行》第三集《风腐同查同治》,披露了广西桂林市

津城年货市场纷纷启幕 一站式采购线上线下互动激活节日消费 环球播报

津城年货市场纷纷启幕一站式采购线上线下互动激活节日消费,

中超控股开启双主业驱动的多元化战略 实现全新生态圈

江苏中超控股股份有限公司发布的半年财报中显示,实现营业总收入286,559 74万元,较上年同期增长23 55%;实现利润总额7,157 62万元,同比减少6

天键股份IPO:业绩波动大且造血能力弱 资产负债率高存隐患_环球时讯

近日天键股份成功在创业板上会,但是公司资产负债率较高,现金流不足,以及毛利率低于同行的情况也不容忽视,值得投资者广泛关注。2022年11月1

x 广告

Copyright ©  2015-2022 全球城市网版权所有  备案号:豫ICP备20009784号-11   联系邮箱:85 18 07 48 3@qq.com