jenkins:部署多仓库多pom的maven项目

一 工程背景

本工程是一个springboot的项目,共有五个仓库,其中一个父工程,三个是依赖工程,一个是启动工程,每个工程还是父子pom,大致结构如下

FatherEngine 父工程,最顶级工程
Son1Engine 依赖工程
	son1-base
	son1-test
Son2Engine 依赖工程
	son2-mail
	son2-user
	son2-security
Son3Engine 依赖工程
	son3-pa
	son3-sa
springbootRun 启动工程

二 Jenkins多任务部署插件

jenkins想要部署这样的工程项目,就没有办法采用传统的maven项目去部署,因为单独仓库的工程没有启动类,会报main class 找不到,所幸jenkins提供了一个插件,多模块部署,可以解决这种问题。

Multijob plugin
Multiple SCMs plugin

三 创建多任务

将上述插件安装成功以后便可以创建一个mutijob project任务
在这里插入图片描述
任务创建成功后,仍然按照部署一个springboot工程的正常思路,拉取git源码,maven打包,jar包启动
git源码管理
选择新插件 Mutiple ScMS, 选择git,然后输入git仓库的地址…
注意:因为是多仓库多pom工程,在配置了多个git地址的时候,如果按照以前的方式直接拉下来,会导致pom文件覆盖,所以我们需要为每个git仓库地址都新建一个文件夹来存放,就如同刚开始的工程目录结构一样,jenkins可以通过 check out to a sub-directory 实现,在当前任务空间下创建一个子目录
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置完一个之后,将其他仓库的git也按照同样的方式配置下来
在这里插入图片描述
maven构建
因为都是父子pom,所以我们构建的时候直接选择 构建最顶层maven目标,这里需要注意的是,因为我们的项目有多个,所以需要将每个仓库目录下的pom打包一次,这就需要指定特定目录的pom,jenkins也可以实现这一功能,在高级选项中可以指定pom的位置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
多添加几个构建过程,分别指向不同目录下的pom将他们打包
在这里插入图片描述
maven打包成功后,便是执行shell脚本去启动项目
在这里插入图片描述
在这里插入图片描述
构建成功后还可以通过ssh 发送到目标服务器上
在这里插入图片描述

四 构建

保存后便可以直接构建。
shell脚本

echo "check $port"
grep_port=$(netstat -nlp | grep :$port | awk '{print $7}' | awk -F"/" '{ print $1 }')
echo "grep port is $grep_port"
if [ -n "$grep_port" ]
then
  echo "port $port is in use"
  kill -9 "$grep_port"
else
  echo "port is not in use"
fi

cd bootRun
nohup mvn clean install -DskipTests spring-boot:run -Dspring-boot.run.arguments="p.lifecycle=AUTO"  > out 2>&1 &
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值