Jenkins自动部署后端maven项目、前端vue项目,包含在远程服务器的部署方法_jenkins execute nodejs script-程序员宅基地

技术标签: java  Linux  运维  开发工具  jenkins  项目架构  

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

1、新建任务

在这里插入图片描述
在这里插入图片描述

2、配置General

在这里插入图片描述

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

在这里插入图片描述

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

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

在这里插入图片描述

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默认会在Build结束后Kill掉所有的衍生进程,包括我们刚才启动的项目进程。

如果不加设置,就会遇到这种情况,看着任务构建完成了、项目启动命令也执行了,但是访问是确发现“没有启动”!
其实不是没有启动,而是刚启动、进程就被kill掉了,日志如下图
在这里插入图片描述解决方式就是像我上面一样,在执行启动命令(或者运行启动脚本)前,标记这个进程不要杀

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

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

在这里插入图片描述

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

1、新建任务

2、配置General

3、配置源码地址

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

这前4步完全一样

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

通过ssh把jar传到指定服务器,然后运行启动命令;需要安装Publish over SSH这个插件。
添加一个Send files or execute commands over ssh,并完成下图配置
在这里插入图片描述
通过上面的配置,将文件传到指定文件夹下除
在这里插入图片描述
0)补充:如何配置sshserver
Configure System中找SSH Servers,新增完成配置
在这里插入图片描述
注: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、配置完成,启动任务、完成自动部署(启动前记得提交代码)

在这里插入图片描述

三、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、新建任务

在这里插入图片描述

2、配置General

在这里插入图片描述

3、配置源码地址

在这里插入图片描述

4、配置构建

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

在这里插入图片描述

2)新增一个Execute shell,打包

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

在这里插入图片描述

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

在这里插入图片描述
和后端类似

# 参考
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、配置完成,启动任务、完成自动部署(启动前记得提交代码)

在这里插入图片描述

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

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

在这里插入图片描述
我的这个问题,是由于我们这个项目前端只有一套代码,前端开发也没有作生产、测试两套配置;又由于生产、测试的路径不一样,所以平时他们打包都是先改成测试的路径、打包好再改回去。上图的问题是由于路径不对引起的错误,这个不是jenkins配置的问题。

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

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Derek7117/article/details/127073160

智能推荐

Ubuntu 系统中通过火狐OS模拟器轻松体验 Firefox OS-程序员宅基地

文章浏览阅读128次。西班牙已经发布了基于Firefox OS的手机,但是不是任何人能体验到,很都人都在苦苦等待,现在我们有另一种方法,不需要任何命令,没有纷繁复杂的安装步骤,在该文中,会教大家在ubuntu系统中一种轻松体验 Firefox OS。只需在火狐浏览器中就可是实现:firefoxosvs4火狐OS模拟器是为开发者使用的,用来测试他们的程序的的火狐浏览..._基于ubuntu的firefox os

单元测试的重要性【转自”至简李云“博客】_单元测试有利于重构-程序员宅基地

文章浏览阅读755次。本文出自 “至简李云” 博客,http://yunli.blog.51cto.com/831344/168865,作者:李云,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明  单元测试(Unit Test, UT)是一个老生常谈的话题,在对这篇文章进行博客归类时,我还是将其归类为开发技术,尽管其带有测试两个字。如何做单元测试不是我这里想说的,而是业界对其认识的认识及重视是我想指出的。_单元测试有利于重构

SparkSQL常用聚合函数_sparksql 聚合函数-程序员宅基地

文章浏览阅读949次,点赞2次,收藏7次。聚合函数Aggregations一、简单聚合 1.1 数据准备 1.2 count 1.3 countDistinct 1._sparksql 聚合函数

Ubuntu远程连接MySQL_ubuntu 连接远程mysql-程序员宅基地

文章浏览阅读308次。Mysql 想要远程客户端链接,必须给root修改可以远程访问的权限一、在连接服务器后,操作mysql系统数据库mysql -u root -puse mysql;查询用户表命令:select User,authentication_string,Host from user这里也可以看出host默认都是localhost访问权限二、接下来就是最重要的部分了:..._ubuntu 连接远程mysql

graylog使用总结这一篇就够了-程序员宅基地

文章浏览阅读1.3w次,点赞38次,收藏70次。graylog使用 graylog报警配置 graylog接springboot graylog使用总结 graylog邮件通知_graylog

用python的opencv库打开ip摄像头_opencv打开ip摄像头 [tcp @ 0x5586bdf2cbc0] connection to-程序员宅基地

文章浏览阅读1.6k次。使用IP摄像头,需要在手机上下载一个网络摄像头app,之后在app上开启云服务,就可以把手机摄像头当做电脑的另外一个摄像头。下载支持网络摄像头的app首先下载任意款网络摄像头,我的手机是华为mate20,我下载的软件是IP摄像头。打开app后,点击开启云服务就会出现以下内容了这里出现192.168..:8080等字样,把手机作为摄像头。点击开启服务器运行如下代码:拿到192..._opencv打开ip摄像头 [tcp @ 0x5586bdf2cbc0] connection to

随便推点

那么作为一名技术er,你是如何系统的学习it技术的呢?-程序员宅基地

文章浏览阅读60次。学习IT技术需要有系统化的学习计划和良好的学习方法,需要选择合适的学习资料,保持持续学习状态,并营造良好的学习环境。大家可以结合自己的实际情况,制定适合自己的学习计划,利用各种学习工具提升自己的技术水平。IT技术是一个不断更新、不断发展的领域,学习IT技术需要保持持续的学习状态。安排休息时间 :休息时间同样很重要,适当地安排休息时间,既可以缓解学习压力,同时,对于记忆新事物和技能的帮助也是巨大的。制定学习计划表:分别制定每周、每月、与学习目的有关的计划,这可以帮助我们有效地安排时间,提升学习效率。

HTML在线文本编辑器实现原理,富文本编辑器的简单实现原理-程序员宅基地

文章浏览阅读466次。DOCTYPE html>富文本编辑器实现原理title>#edit{height:260px;width:100%;overflow:scroll;border:solid 1px black}style>head>div>居中button>左对齐button>右对齐button>添加缩进button>去掉缩进button>宋体button>大字体button>红色字体button>..._html标签在线转富文本

13个免费的开源GIS软件_开源 gis-程序员宅基地

文章浏览阅读6.7w次,点赞18次,收藏159次。GIS派文章地址:13个免费的开源GIS软件QGISQGIS是一个开放源码的地理信息系统。该项目诞生于2002年5月,并于同年6月作为SourceForge上的一个项目建立。我们一直在努力使GIS软件(传统上是昂贵的专有软件)成为任何人都可以使用个人电脑的可行前景。QGIS目前运行在大多数Unix平台、Windows和macOS上。QGIS是使用Qt工具包(https://www.qt.io)..._开源 gis

Tomcat Manager App--403 Access Denied You are not authorized to view this page_you are not authorized to view this page.-程序员宅基地

文章浏览阅读5.3k次,点赞4次,收藏8次。报错:Tomcat Manager App--403 Access Denied You are not authorized to view this page解决办法:1.关闭Tomcat(安装目录下bin文件下shutdown批处理文件)2.找到安装目录下conf文件夹tomcat-users.xml文件3.在xml文件<tomcat-users>&l..._you are not authorized to view this page.

Javascript之BOM与DOM讲解_element.lastchild返回元素的最后一个子元素。element.namespaceuri-程序员宅基地

文章浏览阅读8w次,点赞438次,收藏1.8k次。一.Javascript组成JavaScript的实现包括以下3个部分:ECMAScript(核心)描述了JS的语法和基本对象。文档对象模型 (DOM)处理网页内容的方法和接口浏览器对象模型(BOM)与浏览器交互的方法和接口javascript 有三部分构成,ECMAScript,DOM和BOM,根据宿主(浏览器)的不同,具体的表现形式也不尽相同,ie和其他的浏览器风格迥异,IE 扩展了 BOM,..._element.lastchild返回元素的最后一个子元素。element.namespaceuri返回元素的nam

主键生成策略--native,assigned,uuid的区别(Hibernate)_hibernate id生成器配置uuid和assign有什么区别-程序员宅基地

文章浏览阅读1.1k次。第一种:native为id自动生成策略,生成的是数字id,添加数据到MySQL数据库时不需要设置id的值,hibernate框架会帮你生成,但是会给框架执行时间造成压力。第二种:assigned(手动委派)主键策略需要在添加数据时自己设置id,因为它不能自动生成id,不麻烦别人,自己动手。第三种:uuid.hex程序会自动生成16进制uuid主键,添加数据到MySQL数据库时不..._hibernate id生成器配置uuid和assign有什么区别

推荐文章

热门文章

相关标签