Jenkins自动化部署SpringBoot项目的实现

news2024/11/17 4:34:16

本文主要介绍了Jenkins自动化部署SpringBoot项目的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

1、Jenkins介绍

1.1、概念

  • Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具

  • Jenkins是一个可扩展的持续集成引擎

  • 用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能

持续集成:

  • 就是通常所说的CI(Continues Integration),可以说是现代软件技术开发的基础

  • 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员至少集成一次,也意味着每天可能会发生多次集成。

每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。许多团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件

1.2、优势

  • Jenkins是一个自包含的基于java的程序,可以开箱即用,包含Windows、Linux等操作系统的软件包

  • Jenkins可以通过其web界面轻松设置和配置,其中包括动态错误检查和内置帮助

  • 在插件中心中有数百个插件,Jenkins集成了持续集成和持续交付工具链中的几乎所有工具

  • Jenkins可以轻松地跨多台机器分配工作,帮助更快地跨多个平台进行构建、测试和部署

  • Jenkins可以通过其插件架构进行扩展,为Jenkins所能做的事情提供了几乎无限的可能性

  • 作为可扩展的自动化服务器,Jenkins可以用作简单的CI服务器,也可以变成任何项目的持续交付中心

1.3、Jenkins目的

  • Jenkins 主要是监控软件开发流程,快速显示问题。所以能保证开发人员以及相关人员省时省力提高开发效率

  • CI系统在整个开发过程中的主要作用是控制:当系统在代码存储库中探测到修改时,它将运行构建的任务委托给构建过程本身

  • 如果构建失败了,那么CI系统将通知相关人员,然后继续监视存储库。它的角色看起来是被动的;但它确能快速反映问题

2、环境准备

我们本文主要介绍在windows系统中安装和使用Jenkins,那么在此之前,请先保证你电脑上有如下环境:

  • JDK8(我这里就是JDK8的环境)

  • git(我这里使用的版本是:2.37.1.windows.1)

  • maven(我这里使用的版本是:3.8.6)

  • 一个保存SpringBoot项目代码的git仓库(注意:该项目的启动端口不能与Jenkins相同!Jenkins默认为8080)

我这里的SpringBoot项目git地址是:https://gitee.com/colinWu_java/JenkinsTest.git,项目启动端口是:8001

3、Jenkins下载

3.1、下载

下载网址:https://get.jenkins.io/war-stable

下载war包即可,如下:


注意JDK的版本,你下载的版本太高的话,需要JDK的版本也会很高,所以看清楚了再下载,下载需要时间很久。我这里选择的是【2.346.3】,然后下载:


下载的包如下:

3.2、运行

然后用cmd进入目录后,运行jenkins:

java -jar jenkins.war

如下:

如果你的JDK版本不支持的话就会报错了,如下:


时,你要么就升级你的JDK,要么就换一个低版本的jenkins,推荐换一个低版本的jenkins,因为JDK版本升级的话影响太广泛了

然后访问jenkins,在浏览器输入:http://localhost:8080,如下:


3.3、问题解决
如果上面界面等待几秒,还是这个界面,那就是jenkins镜像有问题,按照下面步骤解决

1、第一次运行jenkins后,会在C盘的用户目录中,生成一个.jenkins文件夹,进入到该文件夹

在这里插入图片描述
2、找到文件:hudson.model.UpdateCenter.xml


3、编辑这个文件


镜像有很多种,大家可以自行百度一下

4、重启jenkins,再访问http://localhost:8080,就会进入到密码认证界面:


cmd窗口中,会打印密码,直接复制填入即可

在这里插入图片描述
然后加载一会之后出现如下配置界面了:

在这里插入图片描述
点击【安装推荐的插件】即可:

4、Jenkins配置

4.1、用户配置
上面页面可能花的时间会比较久,安装完成后是这样的界面:


我这里设置到账号是:wjb,密码是:itsource123,然后点击【保存并完成】:


然后:


点击【开始使用Jenkins】按钮即可


4.2、系统配置


4.3、全局工具配置-最重要
下面几项必须配置:

  • maven

  • git

  • JDK

在这里插入图片描述


然后继续配置JDK:


最后配置maven:


安装maven插件:


然后重启一下Jenkins

5、新建项目

新建Item:



在源码管理设置模块,选择Git,然后输入Gitee项目仓库地址

继续往下翻,构建触发器处,勾选Poll SCM,并输入如下信息:* * * * *

如下:


5个星号这是什么意思? 这5个符号的位置,分别表示分、时、日、月、周 上图中的五个*,其含义已由黄色字体显示,表示每分钟轮询一次Gitee仓库,如果仓库有更新,则重新拉取项目,进行持续集成与持续部署。 如果输入H/5 * * * *,则表示每5分钟轮询一次。

继续下翻,Build处,添加如下格式的Goals and options:


继续往下翻,POST Steps 处,勾选 Run regardless of build result,然后添加构建步骤(Add post-build step),选择执行Windows批处理命令(Execute Windows batch command),然后输入下面内容:


@echo off
set BUILD_ID=DONTKILLME
set port=8001
for /f "tokens=1-5" %%i in ('netstat -ano^|findstr ":%port%"') do taskkill /pid %%m -t -f

xcopy C:\Users\it206\.jenkins\workspace\JenkinsTest\target\sp-test.jar F:\jenkins\workspace\JenkinsTest\ /Y
echo 复制jar包完成
echo 执行【sp-test.jar】---开始
start javaw -jar F:\jenkins\workspace\JenkinsTest\sp-test.jar >> springboot.log 2>&1 &
echo 执行【sp-test.jar】---结束

exit

相关参数介绍:


1、set BUILD_ID=DONTKILLME
Jenkins默认会在Build结束后Kill掉所有的衍生进程,设置不要kill

2、xcopy 源文件 目的文件
将源文件复制到目标文件夹下
为什么要复制一份?
下次构建的时候,需要删除现有的jar,重新构建新的jar;如果直接运行生成的jar,下次构建的时候,无法删除,构建失败。

3、echo xxx
这里只是在jenkins的控制台输出日志信息

4、start javaw -jar xxx.jar &    这里是告诉系统,我的jar文件是后台执行,最后的符号 & 一定要加,否则jenkins会认为任务结束,会把我们的jar强制kill掉

如下:


最后点击【保存】按钮,然后开始构建:


这样查看日志:


然后就可以看到日志详情了:


也可以在首页进行构建:


然后看本地磁盘,jar包已经复制到我指定目录了:


但是我指定的日志文件还是回生成在Jenkins的默认目录,如下:

7、测试

我Gitee上的SpringBoot项目地址是:https://gitee.com/colinWu_java/JenkinsTest.git

测试接口代码如下:

package cn.itsource.controller;

import org.springframework.web.bind.annotation.*;

/**
 * <p>TestController</p>
 *
 * @author 
 */
@RestController
public class TestController {

    @GetMapping("/test")
    public String test(){
        return "欢迎来到SpringBoot奇妙世界!";
    }

}

然后Jenkins构建后就访问页面,如下:


完美,可以正常显示接口的返回数据,部署成功了,然后我们修改一下接口的返回数据,改成下面这样:

package cn.itsource.controller;

import org.springframework.web.bind.annotation.*;

/**
 * <p>TestController</p>
 *
 * @author 波波老师(微信 : javabobo0513)
 */
@RestController
public class TestController {

    @GetMapping("/test")
    public String test(){
        return "欢迎来到SpringBoot奇妙世界!Jenkins学习";
    }

}

然后代码提交到gitee,等一分钟后,再刷新页面,看页面如下:


内容是我们修改后的值,说明Jenkins确实重新拉取项目重新部署了,nice啊,以后我们修改完代码后直接提交就可以了,部署就不用管了,是不是很香

8、错误解决

如果你Jenkins的控制台中出现如下日志信息:


在全局安全配置里面,勾选上这个参数即可:


到此这篇关于Jenkins自动化部署SpringBoot项目的实现的文章就介绍到这


最后

如果你想学习自动化测试,那么下面这套视频应该会帮到你很多

如何逼自己1个月学完自动化测试,学完即就业,小白也能信手拈来,拿走不谢,允许白嫖....

最后我这里给你们分享一下我所积累和整理的一些文档和学习资料,有需要直接领取就可以了!


以上内容,对于软件测试的朋友来说应该是最全面最完整的备战仓库了,为了更好地整理每个模块,我也参考了很多网上的优质博文和项目,力求不漏掉每一个知识点,很多朋友靠着这些内容进行复习,拿到了BATJ等大厂的offer,这个仓库也已经帮助了很多的软件测试的学习者,希望也能帮助到你。

​​

​​​​

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

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

相关文章

shell算术运算符学习笔记

文章目录 算术运算符&#xff1a;算术运算扩展算术运算指令expr算术运算指令let自增自减运算符 算术运算符&#xff1a; 加法 - 减法 * 乘法 / 除法 % 取余 ** 幂运算算术运算扩展 算术运算扩展的运算数只能是整数 [rootlocalhost tmp]# num1$[41] [rootlocalhost tmp]# echo …

子类的构造与析构过程

一、简介 父类&#xff0c;也称基类&#xff0c;其构造方法和析构方法不能被继承&#xff1b; 子类&#xff0c;也称派生类&#xff0c;继承父类的方法和属性&#xff0c;但要加入新的构造和析构函数。 二、构造与析构过程 构造&#xff1a;先调用父类——>再调用子类 析构&…

STM32 HAL高级定时器正交编码模式案例

STM32 HAL高级定时器正交编码模式案例 &#x1f516;基于stm32F030RBT6单片机采用高级定时器1&#xff0c;编码器模式&#xff0c;测试EC11编码器。 &#x1f3ac;EC11测试效果&#xff1a; &#x1f33f;STM32定时器编码器有3种映射模式: ✨本次采用的是上面的模式3&#x…

同城外卖跑腿小程序开发的关键步骤

随着快节奏的生活方式和数字化技术的不断发展&#xff0c;外卖和跑腿服务变得越来越受欢迎。为了满足这一需求&#xff0c;越来越多的创业者和企业开始着手开发同城外卖跑腿小程序。本文将详细介绍同城外卖跑腿小程序开发的关键步骤&#xff0c;帮助您了解如何成功创建一个具有…

【Cesium】绘制线、面、体

文章目录 墙矩形长方体不规则图形椭圆椭圆柱正圆圆柱圆锥不规则多边形柱一串糖葫芦&#xff1f;带洞的矩形一系列矩形、圆形贴地的线围墙宽线宽线的体复杂线状体一根水管 墙 entities.add({wall: {id:"wall",positions: Cesium.Cartesian3.fromDegreesArray([-95.0,5…

java智慧工地云平台源码,以物联网、移动互联网技术为基础,结合大数据、云计算等,实现工程管理绿色化、数字化、精细化、智能化的效果

智慧工地将更多人工智能、传感技术、虚拟现实等高科技技术植入到建筑、机械、人员穿戴设施、场地进出关口等各类物体中&#xff0c;围绕人、机、料、法、环等各方面关键因素&#xff0c;彻底改变传统建筑施工现场参建各方现场管理的交互方式、工作方式和管理模式&#xff0c;智…

结构体内存分配与编译器对齐数

一、编译器对齐数 先说一个编译器的概念&#xff1a;对齐数。 1、对于基本类型的数据成员&#xff1a; 结构体的成员的对齐数min&#xff08;编译器对齐数&#xff0c;成员占内存大小&#xff09; 例如VS编译器对齐数位8&#xff0c;那么int型数据对齐数就为4&#xff0c;doubl…

如何理解OSI七层模型?

一、是什么 OSI &#xff08;Open System Interconnect&#xff09;模型全称为开放式通信系统互连参考模型&#xff0c;是国际标准化组织 ( ISO ) 提出的一个试图使各种计算机在世界范围内互连为网络的标准框架 OSI 将计算机网络体系结构划分为七层&#xff0c;每一层实现各自…

20T算力打造轻地图方案,这家智驾公司持续内卷

作者 | 张祥威 编辑 | 德新 行泊一体的话题热度不减。 近日&#xff0c;宏景智驾核心产品单SoC行泊一体解决方案已全场景跑通&#xff0c;可实现高速导航辅助驾驶。 在推进量产的同时&#xff0c;宏景智驾也在布局BEV感知、轻高精地图甚至去高精地图的智驾方案&#xff0c;同…

IPv6基础

1. IPv6概述 基本概念 IPv6&#xff08;Internet Protocol Version 6&#xff09;也被称为IPng&#xff08;IP Next Generation&#xff09;。它是Internet工程任务组IETF&#xff08;Internet Engineering Task Force&#xff09;设计的一套规范&#xff0c;是IPv4&#xff…

influxDB学习记录

一、官网 influxdb官方英文文档&#xff1a;https://docs.influxdata.com/influxdb/v1.8/query_language/spec/influxdb中文文档&#xff1a;https://jasper-zhang1.gitbooks.io/influxdb/content/ 二、centos安装与基本配置 influxdb安装与基本配置&#xff08;centos) 三…

iPhone上的闹钟不工作的原因不单一,可能多达十种

这篇文章将带你了解如何让iPhone闹钟重新工作。 调大音量 这听起来可能很明显&#xff0c;但不要跳过这一步。使用手机侧面的按钮可以在不增加闹钟音量的情况下提高音量。这是因为iPhone可以让你用相同的按钮控制两组完全不同的声音。 例如&#xff0c;如果你打开了音乐流媒…

CMMI V2.2模型介绍

1、CMMI模型内容编排 模型内容主要由三篇组成&#xff0c;包括概述、实践域&#xff08;PA&#xff09;和附录&#xff0c;共分为6个章节。 章节 标题说明篇章&#xff1a;概述第1章关于CMMI V2.0概述CMMI V2.0产品套件&#xff0c;包括模型的执行摘要。第2章 成…

mysql—面试50题—1

注&#xff1a;面试50题将分为5个部分&#xff0c;每部分10题 一、查询数据 学生表 Student create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10)); insert into Student values(01 , 赵雷 , 1990-01-01 , 男); insert into Student …

S-Clustr(影子集群)新增Nets3e插件,实现一对多主机拍照

公告 项目地址:https://github.com/MartinxMax/S-Clustr 项目地址:https://github.com/MartinxMax/Nets3e 环境 这里有一台Windows主机,我们拿到了Webshell 依赖安装 根据你的主机类型选择依赖安装程序。 配置Nets3e 安装完成后,我们需要启动Nets3e服务端&#xff08;这边…

学习git博客

git新建分支并且提交代码过程 1. git pull <codeBaseAddress> [分支名(默认是master)] 2. cd <projectName> 3. git branch <newBranchName> // 创建分支 4. git checkout <newBranchName> // 切换到新分支 // 开始写你的新代码 5. git add . //…

在Windows下Edge浏览器OA发起流程问题

在Edge浏览器中发起流程 如上图所示&#xff0c;不能正常打开Excel&#xff0c;自动将Excel表格转为了PDF 怎么处理&#xff1f;还得使用IE浏览器来访问&#xff0c;但打开IE后又自动跳转到Edge&#xff0c;根本就不给使用&#xff0c;在Edge下使用IE模式也解决不了这个问题。…

Aocoda-RC F405V2 FC(STM32F405RGT6 v.s. AT32F435RGT7) IO Definitions

[TOC](Aocoda-RC F405V2 FC(STM32F405RGT6 v.s. AT32F435RGT7) IO Definitions) 1. 源由 Aocoda-RC F405V2飞控支持betaflight/inav/Ardupilot固件&#xff0c;是一款固件兼容性非常不错的开源硬件。 之前我们对比过STM32F405RGT6 v.s. AT32F435RGT7 Comparison for Flight …

架构案例分析重点

架构案例分析重点 信息系统架构架构图 层次式架构&#xff08;可能考点&#xff09;表现层框架设计中间层架构设计数据访问层数据访问层工厂模式的设计&#xff08;一个考点&#xff09; 物联网三层 云原生架构面向服务架构(SOA)SOA设计模式 嵌入式系统架构鸿蒙操作系统&#x…

为什么索引要用B+树来实现呢,而不是B树

首先&#xff0c;常规的数据库存储引擎&#xff0c;一般都是采用 B 树或者 B树来实现索引的存储。 B树 因为 B 树是一种多路平衡树&#xff0c;用这种存储结构来存储大量数据&#xff0c;它的整个高度会相比二叉树来说&#xff0c;会矮很多。 而对于数据库来说&#xff0c;所有…