Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解
1. 准备工作
本文的前后端分离项目,技术框架是:
Springboot + Vue + Maven + SVN + Redis + Mysql + Nginx + JDK
所以首先需要安装以下:
在腾讯云服务器OpenCLoudOS系统中安装jdk(有图详解)
在腾讯云服务器OpenCLoudOS系统中安装mysql(有图详解)
在腾讯云服务器OpenCLoudOS系统中安装nginx(有图详解)
在腾讯云服务器OpenCLoudOS系统中安装redis(有图详解)
在腾讯云服务器OpenCLoudOS系统中安装svn(有图详解)
在腾讯云服务器OpenCLoudOS系统中安装maven(有图详解)
在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)
用svn上传前后端代码参考:
用svn上传idea和webstorm代码(有图详解)
2. 全局工具配置
登录Jenkins,在上篇文章中讲过
在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)
自己服务器的IP+端口
maven配置如下:
文中画框的地方,就是上篇文章中的maven安装地址
在腾讯云服务器OpenCLoudOS系统中安装maven(有图详解)
JDK配置如下:
上文中的路径,就是服务器中jdk的安装路径,文章在腾讯云服务器OpenCLoudOS系统中安装jdk(有图详解)中有讲过
也可以 echo $JAVA_HOME找出
maven地址配置:
3. 插件安装
安装Public over SSH
Public over SSH: jenkins远程服务器发送文件,此插件作用是将svn上的代码自动打包部署到其他服务器上去
配置Publish Over SSH
拉到最底下,新增
备注:
这里的Remote Directory也可以不写,为空。因为新建的项目中也有配置jar上传的路径
不然两个地方到时候都配置了,maven打包生成的jar放置的路径就会叠加
配置目标主机密码并测试连接:
点击运用、保存
安装SVN:
每次安装完插件,可能不会生效,所以需要重启Jenkins
具体重启方法和重启路径请看这篇文章:
在腾讯云服务器OpenCLoudOS系统中安装Jenkins(有图详解)
cd /etc/init.d./jenkins stop./jenkins start
4. 部署SpringBoot后端项目
选择你刚刚添加的svn用户:
增加构建步骤:
增加构建后操作步骤:
Source files:源文件。就是maven打包后生成的哪个文件要打包到目标服务器
Remove prefix:移除前缀。因为maven打包后,会有几层文件夹,我们只需要把要部署的jar之前的文件夹都删除即可
Remote directory:远程文件夹。maven打包后形成的jar要部署到哪个路径下
Exec command:部署包jar文件到了目标路径下后,需要启动的shell脚本
参考:
对于maven有多个子工程的,本地maven打包后,形成的jar文件是这个:
fabricate-admin.jar
这个jar就是我们要部署到目标服务器并要启动文件fabricate.sh启动的jar
把jar启动文件上传至该路径下:
给文件夹赋权:
chmod -R 777 /usr/local/nginx/fabricate/
这里赋权两个作用:
- 给文件夹赋权,自动化部署时,生成的jar文件可以通过SSH传输到这边,不赋权读写权限的话,到时候写不进来
- 给fabricate.sh赋予启动权限,jar文件传输过来,可以启动这shell脚本
启动文件如下:
export JAVA_HOME PATH CLASSPATH
JAVA_HOME=/app/soft/jdk/jdk1.8.0_341 #你自己的jdk路径
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$CLASSPATH
APP_HOME=`pwd`
AppName=fabricate-admin.jar #你自己的部署包jar的名字
echo " =====关闭Java应用======"
PROCESS=`ps -ef |grep java |grep -v grep|grep $APP_HOME/$AppName|awk '{print $2}'`
for i in $PROCESS
doecho "Kill the $1 process [ $i ]"kill -9 $i
done
echo " =====启动Java应用======"
nohup JAVA_HOME/bin/java -jar $APP_HOME/$AppName > $APP_HOME/$AppName.log 2>&1 &
echo $! > savePid.txt
cat savePid.txt
rm savePid.txt
保存:
点击构建:
可看控制台日志:
如果构建失败,可以从控制台日志看错误信息,以下三个步骤也可排查:
自动化部署有三步:
1. svn下载代码到workspace,并用maven打包形成target文件夹,底下有项目部署包jar
一般默认的工作空是**/var/lib/jenkins/workspace**
在这个路径下看自己的代码是否通过svn下载到了工作空间
代码路径下是否经过了maven打包形成target文件夹,产生部署包jar
2. 推送jar到目标路径
可观察上一步产生的jar,有没有推过来
这个就是你配置的推送SSH的jar部署路径
3. 启动shell脚本
只需观察上文启动脚本中的输出日志文件是否实时生成:
out.log日志文件生成
5. 部署vue前端项目
相关文章:
![](https://img-blog.csdnimg.cn/f4acfea6767b4c7e8475fe13f6d63fd7.png)
Jenkins自动化部署前后端分离项目 (svn + Springboot + Vue + maven)有图详解
1. 准备工作 本文的前后端分离项目,技术框架是: Springboot Vue Maven SVN Redis Mysql Nginx JDK 所以首先需要安装以下: 在腾讯云服务器OpenCLoudOS系统中安装jdk(有图详解) 在腾讯云服务器OpenCLoudOS系统…...
![](https://img-blog.csdnimg.cn/0ce38284fa3241af92295092054b33ab.png)
【ELK】日志系统部署
一、ELK日志分析系统 1、ELK的组成 ElasticSearchLogStashKibana ELK基于这三个开源日志的收集、存储、检索和可视化的解决方案;可帮助用户快速定位和分析应用程序的故障,监控应用程序性能和安全,以及提供丰富的数据分析和展示功能。 2、完…...
![](https://img-blog.csdnimg.cn/713de93a61f74b2b813666c3e6c32683.gif)
【算法挨揍日记】day08——30. 串联所有单词的子串、76. 最小覆盖子串
30. 串联所有单词的子串 30. 串联所有单词的子串 题目描述: 给定一个字符串 s 和一个字符串数组 words。 words 中所有字符串 长度相同。 s 中的 串联子串 是指一个包含 words 中所有字符串以任意顺序排列连接起来的子串。 例如,如果 words ["…...
![](https://img-blog.csdnimg.cn/img_convert/2b6e247434f915e4cfc54f9485a0de0e.png)
SpringCloud Gateway--网关服务基本介绍和基本原理
😀前言 本篇博文是关于SpringCloud Gateway的基本介绍,希望你能够喜欢 🏠个人主页:晨犀主页 🧑个人简介:大家好,我是晨犀,希望我的文章可以帮助到大家,您的满意是我的动力…...
![](https://img-blog.csdnimg.cn/7ed67728a4024652ab01528c2bb029eb.png)
使用Vue-cli构建spa项目及结构解析
一,Vue-cli是什么? 是一个官方发布的Vue脚手架工具,用于快速搭建Vue项目结构,提供了现代前端开发所需要的一些基础功能,例如:Webpack打包、ESLint语法检查、单元测试、自动化部署等等。同时,Vu…...
![](https://img-blog.csdnimg.cn/999212284f2243068cf6273157d2c945.png)
自定义Unity组件——AudioManager(音频管理器)
需求描述 在游戏开发中,音频资源是不可或缺的,通常情况下音频资源随机分布,各个音频的操作和管理都是各自负责,同时对于音频的很多操作逻辑都是大同小异的,这就造成了许多冗余代码的堆叠,除此之外在获取各类…...
![](https://www.ngui.cc/images/no-images.jpg)
leetcode 558 设计内存文件系统
题目 Design an in-memory file system to simulate the following functions: ls: Given a path in string format. If it is a file path, return a list that only contains this files name. If it is a directory path, return the list of file and directory namesin th…...
![](https://img-blog.csdnimg.cn/df0f8b98e8f2402db9150ce443c2a0f5.png)
Haproxy负载均衡群集
HAproxy搭建Web群集一、Web集群调度器1、常见的Web集群调度器2、常用集群调度器的优缺点(LVS ,Nginx,Haproxy)2.1 Nginx2.2 LVS2.3 Haproxy 3、LVS、Nginx、HAproxy的区别 二、Haproxy1、简介2、Haproxy应用分析3、HAProxy的主要特性4、Haproxy调度算法(…...
![](https://www.ngui.cc/images/no-images.jpg)
什么是面包屑导航?
面包屑导航(Breadcrumb Navigation)这个概念来自童话故事“汉赛尔和格莱特”,当汉赛尔和格莱特穿过森林时,不小心迷路了,但是他们发现沿途走过的地方都撒下了面包屑,让这些面包屑来帮助他们找到回家的路。 在网站应用中࿰…...
![](https://img-blog.csdnimg.cn/4d5f8b2a044a4e8d9f10a2619b0d0732.png)
VS2019创建GIt仓库时剔除文件或目录
假设本地有解决方案“SomeSolution” 1、首先”团队资源管理器“-“创建Git存储库”,选择“仅限本地”、“创建” VS会在解决方案目录下自动生成.gitattributes、.gitignore 2、编辑gitignore,直接拖到VS里或者用记事本打开。添加要剔除的文件或文件夹…...
![](https://img-blog.csdnimg.cn/08513f325abd489ea832ee272e6174d7.png)
计算机等级考试—信息安全三级真题六
目录 一、单选题 二、填空题 三、综合题 一、单选题...
![](https://www.ngui.cc/images/no-images.jpg)
vue循环滚动字幕
在Vue.js中创建一个循环滚动字幕的效果通常需要使用一些CSS和JavaScript来实现。以下是一个简单的示例,展示如何使用Vue.js创建一个循环滚动字幕的效果: 首先,在HTML中创建一个Vue实例,并添加一个包含滚动字幕的容器元素ÿ…...
![](https://img-blog.csdnimg.cn/f16529809b544e619efad382ae515adc.gif)
扩展pytest接口自动化框架-MS数据解析功能
【软件测试行业现状】2023年了你还敢学软件测试?未来已寄..测试人该何去何从?【自动化测试、测试开发、性能测试】 开篇 MeterSphere的数据源通过html页面上传后,需要将请求方式进行拆分。 get接口的参数,常以params的方式进行传…...
![](https://img-blog.csdnimg.cn/74cbd8308b9d4026a0d772c50279e70d.png)
docker容器安装MongoDB数据库
一:MongoDB数据库 1.1 简介 MongoDB是一个开源、高性能、无模式的文档型数据库,当初的设计就是用于简化开发和方便扩展,是NoSQL数据库产品中的一种。是最 像关系型数据库(MySQL)的非关系型数据库。 它支持的数据结构…...
![](https://img-blog.csdnimg.cn/607103b7cd9e4acb8f13ddb4d14d4342.png)
Python机器学习实战-特征重要性分析方法(3):迭代删除法:Leave-one-out(附源码和实现效果)
实现功能 迭代地每次删除一个特征并评估准确性 实现代码 from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestClassifier from sklearn.metrics import accuracy_score impo…...
![](https://img-blog.csdnimg.cn/img_convert/8918fb19e63472c55aebbcbbff8b978b.png)
Go的error接口
从本书的开始,我们就已经创建和使用过神秘的预定义error类型,而且没有解释它究竟是什么。实际上它就是interface类型,这个类型有一个返回错误信息的单一方法: type error interface { Error() string } 创建一个error最简单的方…...
![](https://img-blog.csdnimg.cn/0870fdbc56104b5da6c6bc79306c1809.gif)
RabbitMQ 集群 - 普通集群、镜像集群、仲裁队列
目录 一、RabbitMQ 集群 1.1、前言 1.2、普通集群 1.3、镜像集群 1.4、仲裁队列 一、RabbitMQ 集群 1.1、前言 前面我们已经解决了消息可靠性问题,以及延迟消息问题 和 消息堆积问题. 这最后一章,我们就来解决以下 mq 的可用性 和 并发能力. 1.2、…...
![](https://img-blog.csdnimg.cn/52952e784d86464590857dabc4db3e62.png)
高项新版教程(第四版)解读+学习指导
第四版主要内容 技术部分 信息化教程、软件工程、网络技术是原来的,学习原来的录播。 新基建、工业互联网、车联网、农业现代化、数字化转型、元宇宙等是新增,以直播讲。 管理部分 变化不是太大 。 整合管理、人力变为资源管理、风险管理新增内容。 …...
![](https://www.ngui.cc/images/no-images.jpg)
【Debian】Debian10.0.0安装选项问答
debian的LXQT是什么? LXQT是一套轻量级的桌面环境,主要基于Qt框架开发。 LXQT在debian中的具体特点包括: - 使用Openbox作为窗口管理器,提供平铺式窗口布局。 - 文件管理器为PCManFM-Qt。 - 设置中心集成 debconf 配置界面。 - 支持GTK和Qt应用程序。 - 资源消耗较低…...
![](https://www.ngui.cc/images/no-images.jpg)
【基于React-Native做位置信息获取,并展示出来】
基于React-Native做位置信息获取 在这个里面最重要的是两个部分,一个是位置定位的权限获取,一个是实时位置的监听,在安卓项目中,在 android/app/src/main/AndroidManifest.xml该文件下,在< manifest > 标签内写…...
![](https://img-blog.csdnimg.cn/1e6b8fac3ab84d469e799c2bae4e2664.png)
ansible安装、点对点Ad-Hoc、模块、剧本Playbook
DevOps: 官网:https://docs.ansible.com 自动化运维工具对比 C/S 架构:客户端/服务端 Puppet:基于 Ruby 开发,采用 C/S 架构,扩展性强,基于 SSL,远程命令执行相对较弱 SaltStack:基于 Python 开发,采用 C/S 架构,YAML使得配置脚本更简单.需要配置客户端及服务器…...
![](https://www.ngui.cc/images/no-images.jpg)
Ceph入门到精通-ceph pool 删除导致 misplaced 的原因
misplaced 的原因 Ceph中的misplaced对象是指将对象(或对象的副本)存储在错误的位置上,这可能会导致性能下降或数据不一致的问题。在删除Ceph池时,可能会导致misplaced的原因有以下几个: 删除过程中的操作失误&#x…...
![](https://img-blog.csdnimg.cn/9adfe86f288747a6b7e3a5d274b37925.png)
计算机组成原理课程设计
操作控制和顺序控制 操作控制就是由各种微命令来构成的顺序控制就是由P测试和后续微地址构成的 这就构成了整个微指令的三个部分 访存指令就是实现对主存中的数据进行访问或存储 一、 操作控制字段是由各种微命令来构成的,这些微命令怎么来设计? 一个萝卜…...
![](https://img-blog.csdnimg.cn/img_convert/fe47633d2cdc560493fc83d237e82921.png)
《从菜鸟到大师之路 MySQL 篇》
《从菜鸟到大师之路 MySQL 篇》 数据库是什么 数据库管理系统,简称为DBMS(Database Management System),是用来存储数据的管理系统。 DBMS 的重要性 无法多人共享数据 无法提供操作大量数据所需的格式 实现读取自动化需要编程…...
![](https://img-blog.csdnimg.cn/9ccbd1845143406fbbaff069387f1efe.png)
使用qt完善对话框功能
1、 完善登录框 点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两…...
![](https://img-blog.csdnimg.cn/373b6190136d401197124caf75c47ca8.png)
Day 03 python学习笔记
位运算 基于二进制的运算(计算机的底层基于位运算) 计算机最小单位:bit (比特/位/二进制) 1byte(字节) 8bit ( 0000 0000) &:与 (全真为真,一假则…...
![](https://img-blog.csdnimg.cn/555153adfd5e46ee908ad4f581a36ef5.png)
优化类问题概述
数学建模系列文章: 以下是个人在准备数模国赛时候的一些模型算法和代码整理,有空会不断更新内容: 评价模型(一)层次分析法(AHP),熵权法,TOPSIS分析 及其对应 PYTHON 实现代码和例题…...
![](https://img-blog.csdnimg.cn/img_convert/1635b50e05d013da1890bf0cc47e314d.png)
第一个 Go 程序“hello,world“ 与 main 函数
第一个 Go 程序"hello,world" 与 main 函数 文章目录 第一个 Go 程序"hello,world" 与 main 函数一.创建“hello,world”示例程序二. “hello,world” 程序结构拆解三、main 函数四、Go 语言中程序是怎么编译…...
![](https://www.ngui.cc/images/no-images.jpg)
MySQL缓冲池Buffer Pool
前言 在应用系统中,为加速数据访问,会把高频的数据放在「缓存」(Redis、MongoDB)里,减轻数据库的压力。在操作系统中,为了减少磁盘IO,同时为了快速响应,引入了「缓冲池」(buffer pool)机制。 MySQL…...
![](https://img-blog.csdnimg.cn/3bb96ff50aaa4dc9b3119aeb63782f38.png)
springboot实现发送邮箱验证码
准备工作 在邮箱官网开放SMTP授权,获取相应密钥,才可以进行发送邮件 这里以网易163邮箱为例,登录邮箱后,依次点击“设置-POP3/SMTP/IMAP” ,然后开启SMTP服务。这时候会提示一个授权码,例如:H…...
![](/images/no-images.jpg)
做网站的职位叫什么/百度 官网
作者:gnuhpc 出处:http://www.cnblogs.com/gnuhpc/ public class DynamicParameters {public static void main(String[] args) {add(1,2,3);add(1,2,3,4);}public static void add(int... arr) {//支持可变数目的参数,实际就是一个数组&…...
![](/images/no-images.jpg)
广州公司注册名字查询/海口百度seo公司
reduction_indices表示按照某个维度进行操作,经常用到2维以内的,三维以上的比较复杂暂不讨论 array np.array([[1,2,3],[4,5,6]]) with tf.Session() as sess:print(sess.run(tf.reduce_sum(array, reduction_indices1)))print(sess.run(tf.reduce_sum…...
![](https://img-blog.csdnimg.cn/img_convert/4d0ef2f3a71d1575f4e2a68058666866.png)
wordpress主题屋/进入百度app查看
E此浏览器不支持画布C G Am G F梨花香 缠着衣角掠过熙攘 复悄入红帘深帐C F G听枝头黄鹂逗趣儿 细风绕指淌C G Am G F坐船舫 兰桨拨开雾霭迷茫 不觉已一日过半C G C过眼的葱郁风光 悉数泛了黄Dm G Em褪尽温度的风 无言牵引中 便清晰了在此的眉目F Dm Em暮色的消融 隐约了晦朔葱…...
![](https://img-blog.csdnimg.cn/442973c205ac43b58f5fa77b24a9d2d3.png)
58同城网站建设推广/网站建设网站推广
PO VO DTO 1. MapStruct简介2.0 MapStruct入门2.0.1 简易demo2.1. 引入依赖2.2. 需要转换的对象2.3. 创建转换器2.4. 验证2.5. 自动生成的实现类3.0 MapStruct进阶4.0 扩展(网上项目参考)4.1 扩展 dozer使用5.0 本地测试DEMO加深理解DEMO2:实…...
![](/images/no-images.jpg)
wordpress大学教程/百度软件下载安装
JDBC(Java DataBase Connectivity) 称为:java访问数据库的解决方案,希望以相同的方式访问不同的数据库 目的:以实现与具体数据库无关的java操作。JDBC定义了一整套的标准接口,即访问数据库通用的API&#x…...
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
婚纱网站排行/免费seo优化工具
题意:给个矩阵,矩阵里有一些人和房子(人数和房子数相等),一个人只进一个房子(可以路过房子而不进),每走一步花费1美金,求所有人都进入房子的最小花费,这是典型…...