使用Jenkins完成springboot项目快速更新

✨重磅!盹猫的个人小站正式上线啦~诚邀各位技术大佬前来探秘!✨

这里有:

 

  • 硬核技术干货:编程技巧、开发经验、踩坑指南,带你解锁技术新姿势!
  • 趣味开发日常:代码背后的脑洞故事、工具测评,让技术圈不再枯燥~
  • 独家资源分享:开源项目、学习资料包,助你打怪升级快人一步!

👉 点击直达→ 盹猫猫的个人小站 👈
🌟 来逛逛吧,说不定能挖到你正在找的技术宝藏哦~

目录

一、简介

二、什么是Jenkins

三、环境准备

3.1 Jenkins

3.2 WinSW

3.3 bat启动脚本

四、配置步骤


欢迎来到 盹猫(>^ω^<)的博客

本篇文章主要介绍了

[使用Jenkins完成springboot项目快速更新​]
❤博主广交技术好友,喜欢文章的可以关注一下❤

一、简介

        在应用程序开发过程中,作为进行JAVA开发的后端,在window10系统服务器上(别问,我也不知道为啥装win10)上部署和更新文件时需要频繁的上传和运行脚本指令,这会浪费项目开发的具体时间,而且会增加项目管理的难度。本篇文章就介绍如何使用Jenkins和WinSw配合git完成SpringBoot项目的快速更新,也是对部署流程进行记录。

二、什么是Jenkins

        Jenkins 是一个开源的自动化服务器(原名为 Hudson),核心功能是通过自动化流程简化软件开发中的持续集成(CI)和持续交付(CD)过程。它支持跨平台部署(Windows/macOS/Linux),并通过插件机制扩展功能,几乎可适配任何软件开发流程。

三、环境准备

3.1 Jenkins

        通过官方的下载链接 进行下载,我们选择War包进行下载,一定要注意,官网提供的是最新版的jenkins,他只能在JDK17和JDK21环境中运行。那如果编码时使用的是JDK8版本或其它版本怎么办呢?

        我们可以通过在系统中安装多个JDK版本,但要注意不要安装在相同的目录,这样会进行JDK版本覆盖,然后就可以直接通过直接定位文件的方式进行启动。
 

E:\jdk21\bin>java -jar -Dfile.encoding=UTF-8 C:\Users\Administrator\Desktop\jar包\jenkins.war --prefix=/vjenkins/

比如这里直接在bin文件夹内输入(也可以在其它位置输入全路径方式启动),启动后会出现下述界面。

如果你是刚刚安装后的启动,会显示一段密钥,在第一次访问时进行输入,然后设置登录密码。

3.2 WinSW

从GitHub上下载适合系统架构WinSW程序和

sample-minimal.xmlhttps://github.com/winsw/winsw/releases/download/v2.12.0/sample-minimal.xml(下载链接),将其放到SpringBoot项目根目录下,然后将其更改为你想使用的名字(比如(test.exe)),将sample-minimal.xml修改为和test.exe名称一致(test.exe就修改为test.xml),将test.xml内容修改为以下内容:

<service><id>test</id><name>test</name><executable>java</executable><!-- 指定JAR的绝对路径 --><arguments>-jar "./target/test-1.0-SNAPSHOT.jar" --server.port=8187</arguments><!-- 日志目录配置 --><logpath>./logs</logpath><description>This is a test service</description>
</service>
  • id:服务的ID
  • name:服务名称
  • executable:命令,这是jar包所以用jar。(也可是npm或其它启动)
  • arguments:命令参数
  • logpath:日志文件位置
  • description:服务介绍

上述命令根据实际需要进行编写,这样WinSW就配置好了。

其它环境如JDK、GIT命令是肯定要有的,相关教程很多,这里不进行安装配置流程介绍。

3.3 bat启动脚本

我们需要一个run.bat脚本来执行服务的停止,重新打包,安装服务,启动服务操作,同样可以放在springboot项目根目录之下,内容如下:

@echo off
setlocal enabledelayedexpansion:: Configuration parameters
set SERVICE_NAME=test
set WINSW_EXE=test.exe
set MAVEN_HOME=E:\maven\apache-maven-3.8.9
set LOG_FILE=deploy_log.log:: Record start time
echo [%time%] Deployment process started >> %LOG_FILE%:: Stop existing service
echo [%time%] Stopping the service... >> %LOG_FILE%
net stop %SERVICE_NAME% 2>nul
if %errorlevel% equ 0 (echo [%time%] Service stopped successfully >> %LOG_FILE%
) else (echo [%time%] Service not running or failed to stop >> %LOG_FILE%
):: Uninstall old service
echo [%time%] Uninstalling old service... >> %LOG_FILE%
%WINSW_EXE% uninstall
if %errorlevel% neq 0 (echo [%time%] Warning: Failed to uninstall old service (possibly not installed) >> %LOG_FILE%
):: Maven package
echo [%time%] Executing Maven package... >> %LOG_FILE%
call @%MAVEN_HOME%\bin\mvn clean package
if %errorlevel% neq 0 (echo [%time%] Error: Maven package failed! >> %LOG_FILE%exit /b 1
)
echo [%time%] Maven package successful >> %LOG_FILE%:: Install new service
echo [%time%] Installing new service... >> %LOG_FILE%
%WINSW_EXE% install
if %errorlevel% neq 0 (echo [%time%] Error: Service installation failed! >> %LOG_FILE%exit /b 1
)
echo [%time%] Service installed successfully >> %LOG_FILE%:: Start service
echo [%time%] Starting the service... >> %LOG_FILE%
net start %SERVICE_NAME%
if %errorlevel% neq 0 (echo [%time%] Error: Service failed to start! >> %LOG_FILE%exit /b 1
)
echo [%time%] Service started successfully >> %LOG_FILE%:: Completion
echo [%time%] Deployment process completed >> %LOG_FILE%
exit /b 0

这里的需要和实际部署的操作系统路径对应,应为是Springboot项目所以使用Maven进行打包操作。
set SERVICE_NAME=test
set WINSW_EXE=test.exe
set MAVEN_HOME=E:\maven\apache-maven-3.8.9
set LOG_FILE=deploy_log.log 

上述参数可以根据实际配置进行修改。

四、配置步骤

然后登录jenkins进行系统流程配置,首先需要新建一个Item进行管理,可以直接创建一个Freestyle Project,如下图:

在新建的项目中点击配置按钮进行配置界面,在源码管理中可以对项目的git地址进行配置(如果有是似有项目则需要创建Credentials认证),输入需要进行自动化部署的分支。效果如下:

 在Build Steps(机构步骤中)创建一个Execute Windows batch command(bat脚本)步骤,我们需要调用我们上面已经在项目根目录中的启动脚本。内容如下:

@echo off
setlocal enabledelayedexpansion./run.batexit /b 0

点击应用和保存。在项目页面中点击Build按钮Jenkins就会从仓库拉取我们的项目,然后运行脚本打包部署运行了。

        这样以后的开发工作就简单多了,只需要将项目在推送到git上,然后通过jenkins(可以进行端口访问)进行打包运行。

而且idea还可以安装Jenkins插件(上图插件)在IDEA中进行控制远程打包和运行,简直是后端开发部署必备工具。

赶紧去试一下吧,如果在部署过程中有什么问题欢迎在评论区留言。

如果你对区块链内容感兴趣可以查看我的专栏:小试牛刀-区块链

感谢您的关注和收藏!!!!!!


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/diannao/90347.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/90347.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HDLBits刷题笔记和一些拓展知识(九)

文章目录HDLBits刷题笔记CircuitsFsm1Fsm1sFsm2Fsm3onehotExams/ece241 2013 q4Lemmings1Lemmings2Lemmings3Lemmings4Fsm onehotFsm ps2Fsm ps2dataFsm serialFsm serialdataFsm serialdpFsm hdlc未完待续HDLBits刷题笔记 以下是在做HDLBits时的一些刷题笔记&#xff0c;截取一…

CD46.【C++ Dev】list的模拟实现(1)

目录 1.STL库的list 2.模拟实现 节点结构体 list类 无参构造函数 尾插函数 迭代器★ begin() operator 前置 后置 operator-- 前置-- 后置-- operator! operator end() operator* const修饰的迭代器的设计 1.STL库的list 模拟实现list之前,先看看STL库里的…

数据结构——二叉树的基本介绍

————————————本文旨在讨论与学习计算机知识&#xff0c;欢迎交流————————————上一章&#xff0c;我们讲解了树结构的综述导论&#xff0c;那么&#xff0c;现在我们来深入了解一下树结构中最常用研究的结构——二叉树结构&#xff08;上一章的扩展——…

英伟达发布 Llama Nemotron Nano 4B:专为边缘 AI 和科研任务优化的高效开源推理模型

英伟达推出了 Llama Nem)otron Nano 4B&#xff0c;这是一款专为在科学任务、编程、符号运算、函数调用和指令执行方面提供强大性能与效率而设计的开源推理模型&#xff0c;其紧凑程度足以支持边缘部署。该模型仅包含 40 亿参数&#xff0c;却在内部基准测试中实现了比其他多达…

论文阅读笔记——Autoregressive Image Generation without Vector Quantization

MAR 论文 基于 VQ&#xff08;向量量化&#xff09;的图像生成方法具有显著优势&#xff0c;它通过离散化压缩将原始图像映射到有限的 codebook 空间&#xff0c;从而缩小学习范围、降低建模难度&#xff0c;同时这种离散表示更易于与自回归&#xff08;AG&#xff09;生成方式…

【科普】关于C 语言日志系统实战:如何同时输出到终端和文件?

1.概述 c语言没有现成的日志库&#xff0c;如果要记录日志&#xff0c;需要自己封装一个日志库。如果要实现日志级别和参数打印&#xff0c;还是比较麻烦的&#xff0c;正好在github找到了一个c语言开源日志库&#xff0c;可以实现日志级别打印&#xff0c;参数打印&#xff0…

2025,数字人借直播场景迈过“真假线”丨数智化观察

作者 | 曾响铃文 | 响铃说一夜带货超5500万GMV、观看人次1300万&#xff0c;罗永浩数字人在百度电商的直播首秀正在掀起新的行业浪潮——2025&#xff0c;数字人直播带货成功出圈&#xff0c;加速进入大众视野&#xff0c;被更多的消费者所认可。成就这场热潮的关键点之一&…

HTML表格导出为Excel文件的实现方案

1、前端javascript可通过mime类型、blob对象或专业库&#xff08;如sheetjs&#xff09;实现html表格导出excel&#xff0c;适用于中小型数据量&#xff1b;2、服务器端方案利用后端语言&#xff08;如python的openpyxl、java的apache poi&#xff09;处理复杂报表和大数据&…

企业微信iPad协议端强制拉群漏洞深度分析

正常一次最多邀请40人进群 超过40人的拉群&#xff0c;会变成邀请&#xff0c;需要对方同意 新版本修复了漏洞&#xff0c;但还是可以用老版本进行强制拉群 虽然官方也做了版本过低的限制&#xff0c;但还是有办法绕过 要么修改版本号或者登录几天新版本&#xff0c;之后就可以…

Python编译器(Pycharm Jupyter)

Pycharm下载不过多赘述pycharm导入anaconda创建的python环境选择想要的环境 Jupyter Jupyter 是一个开源的交互式计算环境&#xff0c;能够让用户将代码、文本&#xff08;包括 Markdown&#xff09;、可视化结果等内容整合在一个文档中&#xff0c;非常适合进行数据分析、科学…

漏洞修复与Fiddler抓包工具的使用

漏洞描述 1. 短信轰炸漏洞 Type:存在三个不同的值。Login是登录处,register是注册账号处的短信验证码获取值,还有一个update值。未注册的用户也可以进行发送短信。 2. 手机号绕过,修改密码漏洞(逻辑漏洞) 目前注册使用手机号与忘记密码的手机号验证测试都可以绕过, …

对象存储-OSS

目录 对象存储背景 阿里云OSS 对象存储背景 单节点环境下&#xff0c;文件往往存储在tomcat服务器内&#xff0c;随着业务需求的增多&#xff0c;单节点已不能满足需求&#xff0c;项目架构需要扩展到多节点&#xff08;见下图&#xff09;&#xff0c;此时文…

C语言函数的声明

1定义&#xff1a;在C语言中&#xff0c;函数是一段具有特定功能的独立代码块&#xff0c;它可以接收输入参数、执行相关操作并返回结果。2为什么需要函数&#xff08;1&#xff09;代码复用&#xff1a;避免重复编写相同功能的代码&#xff0c; &#xff08;2&#xff09;模块…

AI人工智能名片小程序源码系统,名片小程序+分销商城+AI客服,包含完整搭建教程

智能名片核心功能AI人工智能名片小程序的核心功能设计旨在彻底改变传统商务交流方式&#xff0c;为用户提供前所未有的智能化体验。个性化名片展示是系统的基础功能&#xff0c;用户可以通过丰富的模板库和自定义设计工具&#xff0c;创建独具特色的电子名片。系统提供多种预设…

React 教程:井字棋游戏

React 教程&#xff1a;井字棋游戏 使用 React 实现一个交互式的井字棋游戏&#xff0c;并配上好看的样式 // 导入必要的CSS样式和React库 import "./App.css"; import { useState } from "react";// Square组件 - 表示棋盘上的一个格子 function Square({…

React源码2 React中的工厂函数:createRoot()

#React V18.2 源码前置基础知识&#xff1a;工厂函数工厂函数是一种设计模式&#xff0c;用于动态创建对象或函数实例。其核心思想是通过封装对象创建的细节&#xff0c;提供统一的接口&#xff0c;从而增强代码的灵活性和可维护性&#xff0c;有一些核心作用&#xff1a;解耦创…

《UE5_C++多人TPS完整教程》学习笔记42 ——《P43 瞄准(Aiming)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P43 瞄准&#xff08;Aiming&#xff09;》 的学习笔记&#xff0c;该系列教学视频为计算机工程师、程序员、游戏开发者、作家&#xff08;Engineer, Programmer, Game Developer, Author&#xff09; Stephen Ulibarri…

SQL Server 临时表、表变量与WITH语句的用法与区别

引言 在SQL Server数据处理中,临时表、表变量和WITH语句(CTE)是关键的中间结果集管理工具。临时表适合大数据量操作,表变量优化小数据量场景,而CTE则简化复杂查询逻辑。三者选择需综合考量数据量级、事务需求及代码可读性。本文将深入解析其工作机制,通过实测对比指导场…

【Android】组件及布局介绍

一&#xff1a;代码分析 1&#xff1a;Android界面开发方式 &#xff08;1&#xff09;JavaView&#xff08;传统视图系统&#xff09; 这是 Android 早期的开发方式&#xff0c;用 Java 或 Kotlin 代码配合 XML 布局文件 来构建界面。&#xff08;简单了解即可&#xff09; 分…

Android 音视频 IPC序列化工具-Flattenable

Android Binder与AIDL与Service使用案例及分析-CSDN博客 讲讲这个类,被用在Android音视频中,跨进程序列化反序列化用。与Binder驱动有很强的联系。位于: feameworks/native/utils/Flattenable.h Flattenable, 译为令人满意的。可能是作者十分满意自己的这些作品吧,起了这…