Jenkins maven git 多模块自动部署 只发布更新的服务

    技术2023-04-02  77

    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工程 可以 实现 某一个更新了就只发布这个服务 具体的问题可以私信

    Processed: 0.022, SQL: 9