【Linux】使用Jenkins + svn + springboot自动构建jar包并自动打包在服务器上运行
👨🎓博主简介
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
文章目录
- 运行环境说明
- 一、创建一个maven项目
- 1.1 安装必要的插件【必须】*
- 1.2 创建maven任务
- 二、配置maven项目
- 2.1 maven项目中的配置项详解
- 2.1.1 General
- 2.1.2 源码管理
- 2.1.3 构建触发器
- 2.1.4 构建环境
- 2.1.5 Pre Steps(准备步骤)
- 2.1.6 Build(构建)
- 2.1.7 Post Steps(发布步骤)
- 2.1.8 构建设置
- 2.2 配置maven项目
- 2.2.1 服务器需要提前安装:
- 2.2.2 配置全局系统配置
- 2.2.3 配置全局工具配置
- 2.2.4 先写一个描述(可写可不写)
- 2.2.5 创建源码管理(svn方式)
- 2.2.6 保存配置
- 三、构建maven项目
- 3.1 build(构建)项目
- 3.2 构建完成
- 3.3 构建报错总结:
- 3.3.1 关于maven版本问题报错
- 3.3.2 关于jdk版本配置的问题
- 四、构建完自动在服务器中运行
- 4.1 在项目中配置Post Steps(发布步骤)
- 4.2 自动构建jar包并运行
- 五、动构建打包jar包并运行完成
运行环境说明
运行环境 | 运行版本 | 作用 |
---|---|---|
操作系统 | centos 7.8 | 运行Jenkins的基础环境 |
jenkins版本 | 2.419 | 用于构建项目及其他自动化 |
maven版本 | 3.8.6 | 用于构建jar包 |
jdk版本 | 18、1.8 | 18(用于运行Jenkins)、1.8(用于运行jar包) |
一、创建一个maven项目
1.1 安装必要的插件【必须】*
- maven
- git
- ssh
- svn
一般在部署完成,访问的时候选择默认安装插件基本都会装 – git。
点击 Manage Jenkin
–> Plugins(插件)
--> Available plugins(商店)
- 搜索
git
和maven
和ssh
和svn
进行安装;
git 和 ssh 我这里已经有了,需要更新就更新一下;
maven、svn 我这里没有,就安装一下吧;
安装完成之后,在新建Item
那块就可以看到maven了。如下↓
svn
1.2 创建maven任务
- 新建
Item
– > 选择maven项目,起一个任务名称。
创建完之后,就到了这个页面
二、配置maven项目
下面来讲解一下maven项目里的配置项。
2.1 maven项目中的配置项详解
2.1.1 General
项目描述,可以在这块写一些项目的描述。
2.1.2 源码管理
主要是拉取源码用的,这里有两种,一种是
git
,一种是svn
方式。等下我们创建项目使用的是svn方式。
这个不仅Jenkins项目上要安装git插件,在服务器上也需要安装git。
yum -y install git
2.1.3 构建触发器
默认勾选上的是下面的选项:Jenkins将会去寻找之前已经构建过的pom依赖(如果有之前构建过的相同的pom文件),直接使用之前的镜像,便不会再去重新的解析了
2.1.4 构建环境
在这里面,勾选上对应的内容,将去做一些额外的处理,在这里保持默认的,什么都不去勾选
这是翻译后的,可根据实际情况来使用。
2.1.5 Pre Steps(准备步骤)
准备步骤,一般会选择Execute shell
和 Invoke Gradle script
。
2.1.6 Build(构建)
2.1.7 Post Steps(发布步骤)
这个配置,说明的是:在项目构建完成之后,接下来需要做的内容
在这里,我们需要将构建完的项目,打成的包传到我们的测试服务器上,也是在这里去进行配置的
2.1.8 构建设置
这里可以配置电子邮件通知
。比如失败,成功,都可以进行发送邮件来通知提醒。
2.2 配置maven项目
2.2.1 服务器需要提前安装:
如果是使用git部署,服务器上也需要安装git;
-
jdk1.8
-
maven
-
jdk:根据自己的项目选择所需的jdk版本,我的项目是需要
jdk11以上,用的是jdk18
才可以;
如果是需要jdk1.8,并且Jenkins是按照我的部署文档部署的,那么默认就会有jdk1.8,可以使用find / -name java
找一下java的安装路径,将绝对路径配置到全局工具配置里就行;如果没有安装,需要安装一下;可参考:Linux中安装jdk1.8和配置环境变量 -
maven:根据自己的项目选择所需的mvn版本,我的项目是需要
maven3.8
才可以;
maven环境默认是没有的,也需要在服务器安装一下,可参考:【Linux】Centos安装mvn命令(maven),建议使用maven3.8,下载地址:https://pan.baidu.com/s/1drjw-sQ5JKFukamVSsLqtw?pwd=b1a0
2.2.2 配置全局系统配置
Manage Jenkins --> System
- 配置ssh环境
提示:如果找不到ssh在哪,可以使用
ctrl+f
搜索一下;
2.2.3 配置全局工具配置
Manage Jenkins --> Tools
- maven配置
在项目开始前,我们安装了maven,所以maven使用默认的配置就行,所以这块不用改。
如果服务器有多个maven,需要用到这时候就需要重新配置一下了,配置的时候到maven的setting.xml路径,比如/usr/local/maven/apache-maven-3.8.6/conf/setting.xml
。
然后我们拉到最下面可以看到还有一个maven,这个需要配置一下;
找到Maven安装 --> 点击新增Maven --> 配置maven路径即可;
- jdk配置
找到JDK安装 --> 点击新增JDK --> 配置jdk路径即可;
配置完之后保存。
2.2.4 先写一个描述(可写可不写)
进入刚刚创建的maven项目,选择配置
,跳到这个页面;
2.2.5 创建源码管理(svn方式)
2.2.6 保存配置
配置完之后,点击保存
三、构建maven项目
3.1 build(构建)项目
保存完之后,看到左边有一个build now
,然后点击build(构建)就可以了;
构建的时候可以查看构建过程,F5
刷新一下页面
往下拉,看到这个,点进去,然后点击控制台输出,就可以看到构建过程了。
3.2 构建完成
出现Finished: SUCCESS
就是构建完成了。
同时,最上面也会变成一个绿色的对号;
构建完之后就可以在服务器上查看了,以下是存放到服务器的路径。
3.3 构建报错总结:
3.3.1 关于maven版本问题报错
如果在build的时候遇到此报错,是因为maven版本的问题;
3.3.2 关于jdk版本配置的问题
如果在build的时候遇到此报错,是因为jdk版本配置的问题;
四、构建完自动在服务器中运行
4.1 在项目中配置Post Steps(发布步骤)
这就是在build完之后,需要进行什么操作,在这里写。
可以使用ssh
方式或者shell
方式;
ssh
和shell
其实都一样,都是写命令的;
ssh还需要配置全局变量,虽然上面已经配置了,但是我一般经常用shell
方式,看自己选择吧。
这里以shell
方式举例。
首先,需要返回刚刚的项目中进行配置;
- 找到
Post Steps
- 选择执行shell,写个shell脚本(也可以使用ssh方式,自己定义)
- shell 脚本内容
提示:如果要运行jar包的话,必须在脚本里添加:BUILD_ID=DONTKILLME
环境变量,防止执行完自动化构建jar包程序自动停止问题。
#!/bin/bash# (必须)配置一个环境变量,防止执行完自动化构建jar包程序自动停止问题
BUILD_ID=DONTKILLME# 源jar包及路径
src_jar="/root/.jenkins/workspace/mytest_maven/target/cs.jar"
# 目标jar及包路径
dest_jar="/application/cs.jar"
# 目标jar包路径
dest_path="/application/"# 创建目标路径
mkdir -p /application/# 将打包完的jar包复制过去
## 先判断jar包是否存在,如果存在则备份,如果不存在,则直接复制过去运行。
if [ -e $dest_jar ];thenecho "存在此文件,开始备份,重新复制:$(date +"%Y-%m-%d")"mv $dest_jar $dest_jar-$(date +"%Y-%m-%d")cp -ar $src_jar $dest_jar
elseecho "目标路径没有这个文件,直接复制过去"cp -ar $src_jar $dest_jar
ficd $dest_path
# 检测jar包进程,这里直接写jar包名称,因为如果引用上面的环境变量,是路径加jar包名,如果在服务器上但启动的话,可能会找不到,所以需要直接写jar包名称。
jar_jin=$(ps -ef | grep -v grep | grep -ic cs.jar)if [ "$jar_jin" -ge "1" ];thenecho "检测到进程,先杀掉,后启动"ps -ef | grep -v grep | grep cs.jar | awk -F " " '{print $2}' | xargs kill -9java -jar $dest_jar --server.port=9999 >> app.log &
elseecho "未检测到jar包进程,直接启动"java -jar $dest_jar --server.port=9999 >> app.log &
fi
配置完之后,点击保存;
4.2 自动构建jar包并运行
- 点击构建(Build Now)
F5
刷新一下,可看到最新的构建运行
- 点击进入,查看控制台输出。
输出Finished: SUCCESS
则为执行成功。
执行成功之后我们进入到服务器中,查看一下服务是否启动,可以查看端口是否启动或者jar包进程是否启动
ps -ef | grep cs.jarnetstat -anput | grep 9999
端口和jar包进程都存在,则可以去做访问页面之类的操作了。
如果访问不到,需要确认服务是否正常启动或防火墙端口是否开启。
这样自动构建打包jar包并运行就完成了。
五、动构建打包jar包并运行完成
相关文章:

【Linux】使用Jenkins + svn + springboot自动构建jar包并自动打包在服务器上运行
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...

数据库、OS内核安全等精彩继续!龙蜥大讲堂 5 月直播预告来袭
「龙蜥大讲堂」5 月精彩预告来了,点击下方海报抢先了解。本月又是满满的技术干货分享,多位大咖带你共享技术盛宴!直播地址:http://live.bilibili.com/24798267 5 月精彩分享直达 👇 直播主题及内容介绍 一࿱…...

ubuntu20文件安装和卸载cuda11.6
搜索cuda 11.6 nvidia,进入官网https://developer.nvidia.com/cuda-11-6-0-download-archive 选择linux --> runfile 用安装包安装 wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda_11.6.0_510.39.01_linux.run sudo s…...
如何备份firewalld的配置信息?
要备份Firewalld的配置信息,您可以通过以下步骤进行: 备份配置文件: Firewalld的配置文件位于/etc/firewalld/目录下。您可以使用cp命令来备份这些文件到其他位置,例如: cp -r /etc/firewalld/zones /path/to/backup…...
我们该如何看待AIGC(人工智能)
引言 人工智能(AI)是当今世界科技发展的前沿领域之一,它正在以前所未有的速度和规模影响着我们的生活、工作和思考方式。AIGC,即人工智能生成内容(Artificial Intelligence Generated Content),…...

POWERBI==官网教程
地址 COVID-19 tracking sample for US state and local governments - Power BI | Microsoft Learn 已经非常全面了...

自然语言处理(NLP)技术有哪些运用?
目录 一、自然语言处理(NLP)技术有哪些运用? 二、Python进行文本的情感分析 1、NLTK库: 2、TextBlob库: 三、错误排除 一、自然语言处理(NLP)技术有哪些运用? 自然语言处理(NLP)…...

java spring 09 Bean的销毁过程 上 在docreatebean中登记要销毁的bean
1.Bean销毁是发送在Spring容器关闭过程中的 AnnotationConfigApplicationContext context new AnnotationConfigApplicationContext(AppConfig.class);UserService userService (UserService) context.getBean("userService");userService.test();// 容器关闭cont…...
杰发科技AC7801——支持的纠错功能
1. 复位寄存器保留复位类型 低压检测复位(LVD Reset) 集成了一个低压保护系统,以便在电源电压发生变化期间保护存储器内容和控制 MCU 系统状态。该系统由上电复位(POR)电路和 LVD 电路组成,LVD 可以配置为不同的复位基准&#x…...

spring boot运行过程中动态加载Controller
1.被加载的jar代码 package com.dl;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication public class App {public static void main(String[] args) {SpringApplication.run(A…...

学习软考----数据库系统工程师25
关系规范化 1NF(第一范式) 2NF(第二范式) 3NF(第三范式) BCNF(巴克斯范式) 4NF(第四范式) 总结...

RTMP 直播推流 Demo(一)—— 项目配置与视频预览
音视频编解码系列目录: Android 音视频基础知识 Android 音视频播放器 Demo(一)—— 视频解码与渲染 Android 音视频播放器 Demo(二)—— 音频解码与音视频同步 RTMP 直播推流 Demo(一)—— 项目…...

安卓获取SHA
1:安卓通过签名key获取SHA 方式有两种, 1、电脑上来存在eclipse的用户或正在使用此开发工具的用户就简单了,直接利用eclipse 走打包流程,再打包的时候选择相应的签名,那么在当前面板的下面便会出现签名的相关信息。 2、…...

【Qt 学习笔记】Qt常用控件 | 输入类控件 | Dial的使用及说明
博客主页:Duck Bro 博客主页系列专栏:Qt 专栏关注博主,后期持续更新系列文章如果有错误感谢请大家批评指出,及时修改感谢大家点赞👍收藏⭐评论✍ Qt常用控件 | 输入类控件 | Dial的使用及说明 文章编号:Qt…...

【C语言】项目实践-贪吃蛇小游戏(Windows环境的控制台下)
一.游戏要实现基本的功能: • 贪吃蛇地图绘制 • 蛇吃食物的功能 (上、下、左、右方向键控制蛇的动作) • 蛇撞墙死亡 • 蛇撞自身死亡 • 计算得分 • 蛇身加速、减速 • 暂停游戏 二.技术要点 C语言函数、枚举、结构体、动态内存管…...

在做题中学习(50):搜索插入位置
35. 搜索插入位置 - 力扣(LeetCode) 解法:二分查找 思路:题目是有序的,时间复杂度O(logN),二分没跑了,题目说如果找不到target,返回它应该被插入位置的下标,所以可以分析一下示例2&…...

【mysql】mysql单表查询、多表查询、分组查询、子查询等案例详细解析
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...

【Gateway远程开发】0.5GB of free space is necessary to run the IDE.
【Gateway远程开发】0.5GB of free space is necessary to run the IDE. 报错 0.5GB of free space is necessary to run the IDE. Make sure that there’s enough space in following paths: /root/.cache/JetBrains /root/.config/JetBrains 原因 下面两个路径的空间不…...

普通组件的注册-局部注册和全局注册
目录 一、局部注册和全局注册-概述 二、局部注册的使用示例 三、全局注册的使用示例 一、局部注册和全局注册-概述 组件注册有两种方式: 局部注册:只能在注册的组件内使用。使用方法:创建.vue文件,在使用的组件内导入并注册。…...
Apache Dubbo知识点表格总结
Dubbo是一个高性能的Java RPC框架,它提供了一系列的功能来支持分布式系统的开发。通常用于微服务之间的服务调用,顺便提一下也是用于微服务之间调用的OpenFeign,OpenFeign是Spring Cloud体系中的一个声明式HTTP客户端,用于简化HTT…...

idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

2021-03-15 iview一些问题
1.iview 在使用tree组件时,发现没有set类的方法,只有get,那么要改变tree值,只能遍历treeData,递归修改treeData的checked,发现无法更改,原因在于check模式下,子元素的勾选状态跟父节…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...

ElasticSearch搜索引擎之倒排索引及其底层算法
文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...