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

 这样我们就实现了自动打包部署。

posted @   caimiao  阅读(1200)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· [翻译] 为什么 Tracebit 用 C# 开发
· 腾讯ima接入deepseek-r1,借用别人脑子用用成真了~
· Deepseek官网太卡,教你白嫖阿里云的Deepseek-R1满血版
· DeepSeek崛起:程序员“饭碗”被抢,还是职业进化新起点?
· RFID实践——.NET IoT程序读取高频RFID卡/标签
点击右上角即可分享
微信分享提示