项目现状

由于项目一开始时间比较紧,没有考虑项目工程发布的问题,都是人工打包编译后端代码JAR包,然后FTP上传至服务器,手动执行脚本,KILL进程,再重启服务,随着,项目后期测试频繁,这样手工发布就觉得繁琐,于是,在本地虚拟机搞个Jenkins自动编译打包,上传至服务器,然后重启服务

Jenkins是一个开源自动化服务器,可以自动执行持续集成和交付软件所涉及的重复技术任务。

流程图

image.png

环境要求

  1. JDK
    由于Jenkins是基于Java的,需要安装JDK
    虚拟机安装 Java 8
    指令 $ sudo apt install openjdk-8-jdk
  2. 本地虚拟机的操作系统为 ubuntu20.04.1,安装操作可以参考
    如何在Ubuntu 18.04上安装Jenkins

打包环境

1.maven
我们项目基于maven管理项目的依赖,所以虚拟机需要安装maven环境
指令 sudo apt install maven
查看maven的信息
image
2.Jenkins安装maven 工具
image.png
3.Jenkins安装SHH 工具
image.png

配置环境

1.配置打包环境的JDK
image.png
2.配置环境的maven
image.png
3.配置SSH信息(属于全局变量)
image.png
这里有个Remote Directory需要注意,比如我目标地址是
/usr/local/A,但是我有个两个地方都需要用到ssh配置
但是另一个是/usr/local/B,这里就配置成/usr/local即可,在发布任务的配置的,可以继续配置个性化的路径

新建任务

配置源码

image.png

配置构建后的SSH任务

1.选择构建完成后任务
image.png
2.配置SSH
image.png
由于我们项目有三个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 &

构建任务

image.png