项目工具:Jenkins自动打包部署
项目现状
由于项目一开始时间比较紧,没有考虑项目工程发布的问题,都是人工打包编译后端代码JAR包,然后FTP上传至服务器,手动执行脚本,KILL进程,再重启服务,随着,项目后期测试频繁,这样手工发布就觉得繁琐,于是,在本地虚拟机搞个Jenkins自动编译打包,上传至服务器,然后重启服务
Jenkins是一个开源自动化服务器,可以自动执行持续集成和交付软件所涉及的重复技术任务。
流程图
环境要求
- JDK
由于Jenkins是基于Java的,需要安装JDK
虚拟机安装 Java 8
指令$ sudo apt install openjdk-8-jdk
- 本地虚拟机的操作系统为
ubuntu20.04.1
,安装操作可以参考
如何在Ubuntu 18.04上安装Jenkins
打包环境
1.maven
我们项目基于maven管理项目的依赖,所以虚拟机需要安装maven环境
指令 sudo apt install maven
查看maven的信息
2.Jenkins安装maven 工具
3.Jenkins安装SHH 工具
配置环境
1.配置打包环境的JDK
2.配置环境的maven
3.配置SSH信息(属于全局变量)
这里有个Remote Directory需要注意,比如我目标地址是
/usr/local/A
,但是我有个两个地方都需要用到ssh配置
但是另一个是/usr/local/B
,这里就配置成/usr/local
即可,在发布任务的配置的,可以继续配置个性化的路径
新建任务
配置源码
配置构建后的SSH任务
1.选择构建完成后任务
2.配置SSH
由于我们项目有三个pom.xml,Jenkins会将每个pom.xml都进行编译,我们只需要其中一个JAR上传服务器
**/jeecg-boot-module-system/target/*.jar
这句话的意思就是找到项目中jeecg-boot-module-system文件夹下,target中的jar上传
其中**/
表示是目前项目的工作空间路径,比如我们项目工作空间是jeecg-boot
,那么**/jeecg-boot-module-system/target/*.jar
代表真实路径就是/jeecg-boot/jeecg-boot-module-system/target/*.jar
Remove prefix 过滤路径
比如上传的文件路径为**/jeecg-boot-module-system/target/*.jar
,但是上传到服务器之后,不需要将其他路径也一起新建,如果不填写这个项目就会在目标路径文件夹下,新建jeecg-boot-module-system、target这件文件夹
Remote directory 目标路径
这里会与配置的SSH中Remote Directory
路径结合,比如我在SSH配置中写了/usr/local
,实际路径就是
/usr/local
+Remote directory
Exec command 执行脚本
这里配置目标文件上传到服务器之后,需要直接的shell命令。
cd /usr/local/sztj
sh stop.sh
sh start.sh
1.停止服务的脚本
#!/bin/sh
pid=`ps -ef|grep jeecg-boot-module-system-2.2.0.jar|grep -v grep|awk '{print $2}'`
kill -9 $pid
2.启动服务脚本
$ nohup java -jar jeecg-boot-module-system-2.2.0.jar &