- 本文章支持以下:
- 针对前端Vue、后端SpringBoot项目进行自动化构建
- 支持构建完成后自动上传到svn指定目录
- 针对在windows上部署的Jenkins,相关命令为windows命令,可根据需要自行改写为shell指令
- 文章摘要
- Jenkins前端build
- Jenkins后端build
- Jenkins构建后自动上传SVN
- Jenkins权限管理(后续完善)
- Jenkins修改默认workspace(后续完善)
一、全局Plugin配置
1.1 Subversion
- 安装SVN插件
- 配置SVN账户
在新建工程时直接配置即可
1.2 Node JS
- 安装nodeJs插件,前端打包必要
- 配置参数
安装完成后,在Global Toool Configuration
配置node信息,这里配置了本地的node
1.3 Build With Parameters
安装参数化构建插件
1.4 Maven与JDK
- 安装maven插件
- 配置
- 找到Maven配置项,配置本地maven,不勾选自动升级
- 安装完成后,在
Global Toool Configuration
配置maven与JDK,这里配置了本地的maven和JDK-
二、前端build
2.1新建FreeStyle工程
2.2前置配置
2.2.1 Discard old builds
用于配置该工程默认保留几天或最多几次的构建信息,其余的删除。建议配置,因为保留过多严重占用磁盘空间。这里以保留最后3次构建为例。
2.2.2 参数化构建This project is parameterized
-
- 找到Maven配置项,配置本地maven,不勾选自动升级
- 用于在每次构建时,由构建人填写动态的参数,可应用于后续的指令。
windows使用占位符:%占位符% Linux使用占位符:${占位符}
- 以下示例共使用了三个占位符,用于判断SVN上传的位置以及是否覆盖文件等信息
2.3 拉取代码
配置代码在SVN的存放路径,配置SVN账号密码 P.S. 如果这里没有Subversion的选项,请先安装Subversion插件
2.4 配置node
如图,配置node信息,这里的node请选择之前在全局配置中配置的。
2.5 配置构建command
由于该Jenkins部署在windows上,因此均采用windows指令,思路相同,可根据需要自行修改为Linux试用的shell指令。 具体的文件目录需要根据实际情况修改。
#删除上次编译好的文件压缩包
del D:\jenkins\workspace\test_MunicipalWeb\dist.zip
#删除上次编译好的文件夹
rmdir /s D:\jenkins\workspace\test_MunicipalWeb\dist
#执行npm构建
npm run build
#将构建好的打成zip(需要先下载7z插件,去7z官网下载即可)
7z a -tzip dist.zip dist*
#复制到中转用的文件夹(上传svn中转用)
copy D:\jenkins\workspace\test_MunicipalWeb\dist.zip G:\项管\测试版\lasted\MunicipalWeb
#根据Jenkins参数化构建来判断是否先删除svn上的文件(避免重复上传报错的问题)
IF NOT %firstPublish%==true svn delete -m "jenkins自动发布-删除已有文件:dist.zip" --force http://192.168.102.10/svn/PCMSZ/SCL/15_BUILD/%versionDir%/%version%/dist.zip --username=huanghwh
#上传文件到svn
svn import -m "jenkins自动发布-dist.zip" G:\项管\测试版\lasted\MunicipalWeb http://192.168.102.10/svn/PCMSZ/SCL/15_BUILD/%versionDir%/%version% --username=huanghwh
完整示例:
三、后端build
3.1新建maven工程
3.2前置配置
同2.1前置配置
3.3拉取代码
同2.2拉取代码,修改SVN路径即可
3.4构建
选择主Pom文件位置;选择执行pom的指令
clean install -Dmaven.test.skip=true -U -Ptestjt
3.5Post-Steps
选择构建后的操作:
#复制jar包到中转用的文件夹(上传svn中转用)
copy D:\jenkins\workspace\test_pcmjt\pcmsz-client\target\pcmjt.jar G:\项管\测试版\lasted\pcmjt
#根据Jenkins参数化构建来判断是否先删除svn上的文件(避免重复上传报错的问题)
IF NOT %firstPublish%==true svn delete -m "jenkins自动发布-删除已有文件:pcmjt.jar" --force http://192.168.102.10/svn/PCMSZ/SCL/15_BUILD/%versionDir%/%version%/pcmjt.jar --username=huanghwh
#上传到SVN
svn import -m "jenkins自动发布-pcmjt.jar" G:\项管\测试版\lasted\pcmjt http://192.168.102.10/svn/PCMSZ/SCL/15_BUILD/%versionDir%/%version% --username=huanghwh
完整截图示例:
四、通知配置
4.1邮件通知
4.2qq通知
基于goCqHttp实现qq通知功能,需要独立部署goCqhttp:https://github.com/Mrs4s/go-cqhttp
-
修改配置文件,开放http端口
# 连接服务列表 servers: # 添加方式,同一连接方式可添加多个,具体配置说明请查看文档 - http: # http 通信 address: 0.0.0.0:5700 # HTTP监听地址 timeout: 5 # 反向 HTTP 超时时间, 单位秒,<5 时将被忽略 #- ws: # 正向 Websocket #- ws-reverse: # 反向 Websocket #- pprof: #性能分析服务器 # 反向WS设置 - ws-reverse: # 反向WS Universal 地址 # 注意 设置了此项地址后下面两项将会被忽略 universal: ws://127.0.0.1:8566/ws # 反向WS API 地址 api: ws://your_websocket_api.server # 反向WS Event 地址 event: ws://your_websocket_event.server # 重连间隔 单位毫秒 reconnect-interval: 3000 middlewares: <<: *default # 引用默认中间件
-
启动gocqhttp
-
jenkins配置构建成功后通知
中文要进行转码,放到浏览器中再复制出来
curl "http://192.168.100.66:5700/send_group_msg?group_id=798665972&message=%%E8%%87%%AA%%E5%%8A%%A8%%E5%%8F%%91%%E5%%B8%%83%%EF%%BC%%9A%%E5%%B8%%82%%E6%%94%%BF%%E5%%89%%8D%%E7%%AB%%AF%%E6%%89%%93%%E5%%8C%%85%%E5%%AE%%8C%%E6%%88%%90%%EF%%BC%%8C%%E7%%89%%88%%E6%%9C%%AC%%E5%%8F%%B7%version%"