Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法

一、后端maven项目在当前服务器部署(在安装jenkins的服务器部署)

1、新建任务

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第1张图片
Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第2张图片

2、配置General

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第3张图片

3、配置“源码管理”,这里用的是svn

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第4张图片

4、配置“maven构建”,就是打包等操作

clean package -U -Dmaven.test.skip=true

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第5张图片

5、配置打包后要执行的命令

#删除之前的jar包
rm -rf /webserver/javashop/lib/hys-nhms-admin.jar
#把jar包移动到指定目录,这里要注意:默认所处位置是在workspace下的当前项目文件夹下,即在xxx项目下
cp -rf /root/.jenkins/workspace/xxx项目/xxx模块/target/xxx.jar /webserver/javashop/lib
#进入指定目录
cd /webserver/javashop/lib
#阻止jenkins杀死项目进程
export BUILD_ID=dontKillMe
#执行启动脚本(没有脚本可以执行启动命令:nohup java -jar xxx.jar &./start-nobackup.sh

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第6张图片

【小坑】这里有一个坑,就是Jenkins默认会在Build结束后Kill掉所有的衍生进程,包括我们刚才启动的项目进程。

如果不加设置,就会遇到这种情况,看着任务构建完成了、项目启动命令也执行了,但是访问是确发现“没有启动”!
其实不是没有启动,而是刚启动、进程就被kill掉了,日志如下图
Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第7张图片解决方式就是像我上面一样,在执行启动命令(或者运行启动脚本)前,标记这个进程不要杀

#阻止jenkins杀死项目进程
export BUILD_ID=dontKillMe

6、配置完成,启动任务、完成自动部署(启动前记得提交代码)

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第8张图片

二、后端maven项目远程部署(不在安装jenkins的服务器部署,发布到其他服务器)

1、新建任务

2、配置General

3、配置源码地址

4、配置maven构建操作(打包)

这前4步完全一样

5、配置SSH,传输jar包、并在其他服务器启动

通过ssh把jar传到指定服务器,然后运行启动命令;需要安装Publish over SSH这个插件。
添加一个Send files or execute commands over ssh,并完成下图配置
Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第9张图片
通过上面的配置,将文件传到指定文件夹下除
Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第10张图片
0)补充:如何配置sshserver
Configure System中找SSH Servers,新增完成配置
Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第11张图片
注:name用中文会变成16进制,最好用英文、数字

1)但这里还是有问题,我其实想传到/webserver/nuohua/lib下;但是它默认传到/root下,jar包就到了/root/webserver/nuohua/lib下;可能是当前服务器用户的权限问题,也可能是jenkins配置问题,不知道怎么解决,就先放到这儿了,有知道的同学麻烦留言指导一下。

2)另外还有一点需要注意,在Exec command中配置jar传输完成要执行的命令。
我这里是要执行启动脚本,放在/root/webserver/nuohua/lib文件夹下;因此,需要先进入指定文件夹,再执行命令

cd /root/webserver/nuohua/lib/
./start-nobackup.sh

6、配置完成,启动任务、完成自动部署(启动前记得提交代码)

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第12张图片

三、Maven构建项目时遇到的问题

总的来说还是版本问题。

1、就是maven打包时,报错

java.lang.ClassNotFoundException: org.apache.commons.digester.Digester

这是因为jenkins以前的digester早就不维护了,在新版本中已将它移除;需要升级subversion插件,到新版本(2.15.4及以后),就好了。

2、在本地打包正常,但是用jenkins、即用这个服务器上的maven打包时,就报错说找不到某个jar包。

我这里报

Could not find artifact:jdk.tools:jdk.tools:jar:1.8 at .../com/alibaba/druid/1.2.11/lib/openjdk-1.8-tools.jar

我时通过降低druid版本解决的这个问题,从1.2.11降到了1.2.5。

【个人感想】有时候就会出现各种莫名其妙的错误,见招拆招即可,没办法提前全部预估到。

四、远程部署前端vue项目

1、新建任务

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第13张图片

2、配置General

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第14张图片

3、配置源码地址

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第15张图片

4、配置构建

1)新增一个Execute NodeJS script(如果没有这个选项,说明nodejs插件没安装好)

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第16张图片

2)新增一个Execute shell,打包

# 参考
npm install 
rm -rf ./dist/*
npm run build:prod
rm -rf uipc.tar.gz
tar -zcvf uipc.tar.gz dist/*
echo '打包完毕'

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第17张图片

3、新增一个Send files or execute commands over SSH,传输前端包、完成远程部署

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第18张图片
和后端类似

# 参考
rm -rf /webserver/javashop/ui/admin/*
cd /root/webserver/nhms/ui/pc
tar -zxvf uipc.tar.gz
cp -rf ./dist/* /webserver/javashop/ui/admin
rm -rf uipc.tar.gz
rm -rf dist
echo '部署完毕'

5、配置完成,启动任务、完成自动部署(启动前记得提交代码)

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第19张图片

6、自动部署vue项目遇到的问题

1)项目启动后访问页面报错

Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_第20张图片
我的这个问题,是由于我们这个项目前端只有一套代码,前端开发也没有作生产、测试两套配置;又由于生产、测试的路径不一样,所以平时他们打包都是先改成测试的路径、打包好再改回去。上图的问题是由于路径不对引起的错误,这个不是jenkins配置的问题。

结语、本文是对,使用Jenkins自动部署前后端项目的讲解,部署的前提是已经安装好jenkins,并配置好环境,这部分的内容请看我的上一篇

Jenkins在Linux环境下的安装与配置

你可能感兴趣的:(Linux,项目架构,开发工具,jenkins,运维,java)