Jenkins maven git 多模块自动部署
某一模块提交更改只打包发布这个模块和他相关的依赖
考虑下面的场景:
一个Git repository中有6个Java项目A,B,C,D,E,F.
A是最底层模块。B依赖A, C,D,E,F又同时依赖A和B。 这时候项目可以分成三层关系。
最近看到这个场景 深思熟虑后发布这个教程,大家多多指教
- 下载jenkins
官网下载地址 https://www.jenkins.io/download/nohup java -jar jenkins.war &
后台运行war包 - 登录Jenkins, 点击左侧的新建,创建新的构建任务。
进入这个页面
输入工程名称
选择构建一个maven项目(没有这个选项需要下载一个 maven插件)
选择确定
3.配置这个项目
首页选择 配置
4.重点来了 ! 精华就在这个配置
描述可以不填
看个人爱好
选择 Discard old builds 打钩
那两个选项根据自己服务器配置与需求填写
这里用的是gogs git仓库 需要装 gogs 这个插件 下面会用到 不要会没有这个模块
不需要勾选任何
下面这里需要填写你的 git仓库地址 这里仓库不能是私有 不要会一直爆红
Credentials可以选择账号密码
也可以使用公钥秘钥 两者都可以
接下来就是构建触发器 配置后根据条件自动部署项目
这里我们选的是 Build when a change is pushed to Gogs (这就是装gogs 插件的原因)
git钩子的配置 百度有很多 我用的是 git webhook
构建环境 这个就是实现需求的关键 (这里需要一个插件支持 pathignore )
Add timestamps to the Console Output 勾选这个控制台会有时间
Do not build if only specified paths have changed 勾选这个 来实现第一步
Invert ignore? 勾选这个
Ignored paths 填上你需要更新构建的路径 ** 表示这个路径下的所有
然后就是构建了
Root POM 选择父pom
Goals and options 填上你需要打包的一个命令
clean install -pl ZuulGateway -am -amd -Pdev -Dmaven.test.skip=true
这个命令意思是 只打包 ZuulGateway 并且打包它需要的相关依赖包 跳过test
Post Steps
默认构建后的选
Run only if build succeeds
将构建后的项目推送到目标服务器
这里选的是 send build artifacts over SSH 这个是装插件(SSH )才有的
Source files 文件build 后路径
Remove prefix 移除前缀
Remote directory 推送的服务器路径
Exec command 执行的命令 以及shell 脚本启动服务
最后点击保存
这种做法不好就是 我们一个项目 有6个子工程 就需要分别建6个project工程
可以 实现 某一个更新了就只发布这个服务 具体的问题可以私信