当前位置: 首页 > news >正文

【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.818(用于运行Jenkins)、1.8(用于运行jar包)

一、创建一个maven项目

1.1 安装必要的插件【必须】*

  • maven
  • git
  • ssh
  • svn

一般在部署完成,访问的时候选择默认安装插件基本都会装 – git。

点击 Manage Jenkin –> Plugins(插件) --> Available plugins(商店)

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

  • 搜索gitmavensshsvn 进行安装;

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 shellInvoke 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 方式;
sshshell 其实都一样,都是写命令的;
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 月精彩分享直达 👇 直播主题及内容介绍 一&#xff1…...

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)&#xff0c…...

POWERBI==官网教程

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

自然语言处理(NLP)技术有哪些运用?

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

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都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...

Java 语言特性(面试系列2)

一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...

C++实现分布式网络通信框架RPC(3)--rpc调用端

目录 一、前言 二、UserServiceRpc_Stub 三、 CallMethod方法的重写 头文件 实现 四、rpc调用端的调用 实现 五、 google::protobuf::RpcController *controller 头文件 实现 六、总结 一、前言 在前边的文章中,我们已经大致实现了rpc服务端的各项功能代…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

MySQL 8.0 OCP 英文题库解析(十三)

Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...

有限自动机到正规文法转换器v1.0

1 项目简介 这是一个功能强大的有限自动机(Finite Automaton, FA)到正规文法(Regular Grammar)转换器,它配备了一个直观且完整的图形用户界面,使用户能够轻松地进行操作和观察。该程序基于编译原理中的经典…...

如何在网页里填写 PDF 表格?

有时候,你可能希望用户能在你的网站上填写 PDF 表单。然而,这件事并不简单,因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件,但原生并不支持编辑或填写它们。更糟的是,如果你想收集表单数据&#xff…...

适应性Java用于现代 API:REST、GraphQL 和事件驱动

在快速发展的软件开发领域,REST、GraphQL 和事件驱动架构等新的 API 标准对于构建可扩展、高效的系统至关重要。Java 在现代 API 方面以其在企业应用中的稳定性而闻名,不断适应这些现代范式的需求。随着不断发展的生态系统,Java 在现代 API 方…...