Jenkins自动编译打包前后端分离项目
前提:假如你的后端项目和前端项目都在同一个git仓库
准备工作:配置shell;
点击Manage Jenkins的系统设置,找到shell
然后找到本地安装的git的安装目录,将路径复制过来,像我一样就好
1. 创建Jenkins项目,我是选择自由风格
2.源码管理选择git
输入自己的仓库地址和选择git凭证
3.构建触发器按自己要求选择,我这边选择轮询
意思就是,每天两点钟,你的Jenkins就会去检查git仓库有没有更新;如果有更新,则开启构建。
4.构建步骤思路
在写入构建步骤命令时,我们要先想一下,在我们拉去代码后我们要做些什么:打包、然后启动新的jar包;但如果只做这两步,在下一次构建就会出错,因为我们要执行mvn clean package,如果你的Java应用程序还在运行着,肯定会出错啦。所以我们在打包前,要先关闭Java应用程序。
为了更方便的关闭Java应用程序,我们最好启动时给Java应用程序指定好端口,便于我们关闭。
start /B java -jar yami-shop-admin-0.0.1-SNAPSHOT.jar --server.port=8085 &
其中,start /B是使Java应用程序在后台运行。因为Jenkins在构建完成时会杀死所有衍生进程,为了我们的Java应用程序不被杀死,故使他在后台运行;。
java -jar xxx.jar 是启动一个xxx.jar包;--server.port=8085 是指定端口为8085。
为了下次构建时能够正常的启动Java应用程序,我们要先检测端口有没有被占用,如果有,杀死占用端口的进程。
我们可以先新建一个.txt文件,填入下面的命令,再修改后缀把.txt改为.bat,并把.bat文件放入我们Jenkins项目里。
@echo off setlocal set port=8085 echo 正在检测端口 %port%... netstat -ano | findstr :%port% > nul if %ERRORLEVEL% EQU 0 ( for /f "tokens=5" %%p in ('netstat -ano ^| findstr :%port%') do ( echo 端口 %port% 被占用,进程ID是 %%p,正在尝试结束进程... taskkill /F /PID %%p > nul echo 进程已被结束。 ) ) else ( echo 端口 %port% 未被占用。 )
5.构建步骤之打包
思路有了,我们就可以开始编写构建步骤了。
我们点击添加构建步骤,选择执行shell。
第一步,先检测端口有没有被占用(我的项目需要启动三个,所以我有三个.bat)
cmd.exe /C kill8085.bat cmd.exe /C kill8086.bat cmd.exe /C kill8088.bat
第二步,我们开始打包,我的目录结构是这样的:
我要先进入我的后端项目,再使用mvn打包,所以有了cd mall4j。
cd mall4j
mvn clean package
接下来是我的前端项目打包,我添加了构建步骤,选择执行shell。前端项目的运行需要用到插件"http-serve",所以我先npm install http-serve,再进行前端项目的打包"npm run build"
cd mall4v npm install npm install postcss@latest npm install http-serve npm run build
6.构建步骤之启动
我们要先安装插件"Post build task",再重启jenkins,我们要把启动命令放在构建后进行。
点击增加构建后操作步骤选择Post build task
把启动的命令放在Script里,我需要运行三个,所以就创了三个script
这样我们就实现了自动打包部署。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签