项目工具:Jenkins自动打包部署

项目现状

由于项目一开始时间比较紧,没有考虑项目工程发布的问题,都是人工打包编译后端代码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

最近的文章

项目源码:使用AOP完成长任务轮询

AOP(AspectOrientedProgramming),即面向切面编程,可以说是OOP(ObjectOrientedProgramming,面向对象编程)的补充和完善。需求背景有一个接口实现合并文件,当文件过多时,预计要三分钟或者更长时间,这个时候前端调用的时候,就会出现接口的超时的问题,于是…

继续阅读
更早的文章

项目重构:设计模式(模板方法模式)

在模板模式(TemplatePattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。最近,在项目中,需要调用用户提供的接口发送微信模板信息,然后提供了信息模板{"Personnel…

继续阅读