当前位置: 首页 > 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…...

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明

LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...

Vue记事本应用实现教程

文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

uniapp 字符包含的相关方法

在uniapp中,如果你想检查一个字符串是否包含另一个子字符串,你可以使用JavaScript中的includes()方法或者indexOf()方法。这两种方法都可以达到目的,但它们在处理方式和返回值上有所不同。 使用includes()方法 includes()方法用于判断一个字…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

什么是VR全景技术

VR全景技术,全称为虚拟现实全景技术,是通过计算机图像模拟生成三维空间中的虚拟世界,使用户能够在该虚拟世界中进行全方位、无死角的观察和交互的技术。VR全景技术模拟人在真实空间中的视觉体验,结合图文、3D、音视频等多媒体元素…...

Vue 模板语句的数据来源

&#x1f9e9; Vue 模板语句的数据来源&#xff1a;全方位解析 Vue 模板&#xff08;<template> 部分&#xff09;中的表达式、指令绑定&#xff08;如 v-bind, v-on&#xff09;和插值&#xff08;{{ }}&#xff09;都在一个特定的作用域内求值。这个作用域由当前 组件…...

SQL Server 触发器调用存储过程实现发送 HTTP 请求

文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...

C++--string的模拟实现

一,引言 string的模拟实现是只对string对象中给的主要功能经行模拟实现&#xff0c;其目的是加强对string的底层了解&#xff0c;以便于在以后的学习或者工作中更加熟练的使用string。本文中的代码仅供参考并不唯一。 二,默认成员函数 string主要有三个成员变量&#xff0c;…...