一个springboot项目的jenkins持续集成配置

news2024/11/18 10:37:37

目录

1.项目基本情况

2.jenkins的下载

1)  安装jdk

2)下载、启动和配置jenkins

3. 启动Jenkins

4. 安装Jenkins插件

5. 重启jenkins

6.jenkins工具的配置

1) jdk的路径配置

7.创建springboot项目的持续集成任务

1)  新建项目

2)代码拉取

3)  打包项目

4)启动jar程序

5)解决jenkins构建结束后终止所有它启动进程的问题

6)再次build now,验证是否正常


1.项目基本情况

该项目是  zhangjianfen 同学的软件配置管理期末的项目

项目存储在gitee上,路径:

软件配置管理期末: 1111111111111https://gitee.com/zjf18664209766/project.git

2.jenkins的下载

可请自行百度。或者参考超星班级资料中的详细步骤

1)  安装jdk

请先确保安装了jdk,我安装的是JDK1.8

2)下载、启动和配置jenkins

下载路径:

清华镜像  Index of /jenkins/war/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror  

下载想要的版本,建议:2.364.1 LTS

注意,jenkins的版本和jdk版本

Jenkins是java程序,需要和jdk的版本匹配。学校计算机机房jdk版本1.8,所以jenkins建议选择2.364.1,否则版本太高的jenkins不支持

3. 启动Jenkins

jenkins jar包所在的文件夹下 打开命令行窗口执行如下命令启动jenkins并指定jenkins端口号为8899:大家也可以根据需要修改端口号

java -jar jenkins_2.346.war --httpPort=8899 

4. 安装Jenkins插件

大家可以启动jenkins后,通过jenkins安装插件。也可以将下载的插件放到jenkins主目录的plugins目录下,

在这里为了大家能快速安装插件,大家可以将我的plugins压缩包里的内容复制到你的jenkins

链接:https://pan.baidu.com/s/1NvVoJUsgK1Zc438kQ-kTCw?pwd=6666 
提取码:6666

5. 重启jenkins

安装插件后需要重启才能使用插件,在jenkins运行的命令窗口中输入 ctrl+c终止程序,然后再次运行

java -jar jenkins_2.346.war --httpPort=8899 

6.jenkins工具的配置

1) jdk的路径配置

7.创建springboot项目的持续集成任务

1)  新建项目

设置项目名称、任务类型(选择自由风格)

  

2)代码拉取

拉取代码的仓库路径:软件配置管理期末: 1111111111111https://gitee.com/zjf18664209766/project.git

 点击 builid now,尝试一下,看能否正常拉取代码

 

查看控制台详情

3)  打包项目

 本项目是maven项目。我们可以用 mvn clean package命令来编译打包

但是需要注意的是,该命令需要在pom.xml文件所在路径执行,所以我们需要在编译打包前切换到该路径

 jenkins添加一个 Excute windows batch command的步骤:

 输入windows 批处理命令如下,期中 .\表示当前路径,jenkins默认路径就是当前工作区目录:

cd  .\04开发\module_campus
mvn clean package

 再次构建。确认可否构建出jar包

4)启动jar程序

可以用 java -jar  xxxx.jar  --server.port=端口号  包的方式来启动程序

但是这样,构建过程将一直处于执行中的状态。所以我们可以增加 start /B  以后台方式运行

当然为了找到jar包,我们需要切换到jar文件所在的路径

excute windows batch command步骤,输入的内容如下

cd  .\04开发\module_campus\target
start /B cmd /c "java -jar  module_campus-0.0.1-SNAPSHOT.jar   --server.port=8181  "

具体含义如下:

cd命令用于切换当前目录到 当前目录的 子目录04开发\module_campus\target中

  • start:启动一个新的命令行窗口,以异步方式运行下面的命令。
  • /B:以后台模式运行新命令行窗口,即不在当前命令行窗口输出新窗口的信息。
  • cmd:运行cmd.exe(Windows命令行解释器)。
  • /c:运行完命令后关闭命令行窗口。
  • "java -jar  module_campus-0.0.1-SNAPSHOT.jar   --server.port=8181":要在新命令行窗口中运行的命令。这是一个Java命令,用于启动指定的jar文件,并设置应用程序的运行参数为--server.port=8181。

 再次构建。确认构建是否成功,可否通过localhost:8181来访问程序

这时你会发现构建进度到2/3时, localhost:8181可以访问到系统,但构建完成后,又不能再访问了。

这是由于jenkins构建完成后,会终止掉所由它启动的程序。

5)解决jenkins构建结束后终止所有它启动进程的问题

为了解决该问题,在 Manage Jenkins -> Configure System -> Global properties 全局属性 页面 ,我们可以为jenkins添加一个全局BUILD_ID,值为allow_to_run_as_daemon

如下图所示,再运行配置,就不会出现应用服务不能访问的问题了 

此时若再次build now,程序可以正常访问。

 6)解决再次build now时,由于jar包正在运行,无法构建新包的问题

为了解决此问题,我们需要在构建之前终止应用程序,

之前我们启动程序时设置了端口8181,现在我们可以通过端口8181来找到进程,从而关闭它

其中,输入的命令为:

FOR /F "tokens=5" %%P IN ('netstat -ano ^| findstr :8181') DO taskkill /F /PID %%P  || exit 0

具体含义是:

FOR /F "tokens=5" %%P IN ('netstat -ano ^| findstr :8181') :这个命令使用了FOR循环和netstat命令,通过管道符将netstat的输出传递给findstr命令,找到在本地8181端口上监听的进程ID。

DO taskkill /F /PID %%P :这个命令使用了DO关键字,执行taskkill命令,并强制结束找到的进程ID。

 || exit 0:这个命令是一个错误处理语句,如果上一个命令执行失败,则退出程序,否则返回0表示执行成功。
总之,该命令的作用是强制结束在本地8181端口上监听的进程。

6)再次build now,验证是否正常

构建后程序运行正常。再次构建,程序还是能正常运行,而且是最新的构建的jar包奥

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

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

相关文章

倒闭了

前两天在群里听到有人发消息,说是「有陪」倒闭了,然后我去看了相应的消息,看到了下面的图。 一些老的读者可能知道我之前有一段创业经历,这段创业经历就是有陪,我从恒大的时候就开始给有陪做事,那时候我一个…

stm32 滑膜观测器+PLL 锁相环 FOC 无感无刷电机控制

上一期为大家介绍了滑膜观测器正反切的应用案例,收到不少小伙伴的反馈是否有PLL的案例,大概看了一下网上的资料,讲理论的很多,能转化成源码的几乎没有。前半年工作和家里的事情都比较多,一拖再拖,终于在6月…

Attention U-Net:Learning Where to Look for the Pancreas论文总结和代码实现

论文: https://arxiv.org/abs/1804.03999 中文版:https://blog.csdn.net/hhw999/article/details/110134398 源码: https://github.com/ozan-oktay/Attention-Gated-Networks 目录 一、论文背景和出发点 二、创新点 三、Attention U-Net的…

【5G MAC】5G中传输块(TBS)大小的计算方式

博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 本人就职于国际知名终端厂商,负责modem芯片研发。 在5G早期负责终端数据业务层、核心网相关的开发工作,目前牵头6G算力网络技术标准研究。 博客…

【学习日记2023.6.18】之 分布式缓存redis持久化_redis主从_reids哨兵_redis分片集群

文章目录 分布式缓存1. Redis持久化1.1 RDB持久化1.1.1 执行时机1.1.2 RDB原理1.1.3 小结 1.2 AOF持久化1.2.1 AOF原理1.2.2 AOF配置1.2.3 AOF文件重写 1.3 RDB与AOF对比 2 Redis主从2.1 搭建主从架构2.1.1 准备实例和配置2.1.2 启动2.1.3 开启主从关系2.1.4 测试 2.2 主从数据…

计算服务资源调度管理

文章目录 前言总体架构“ULT”和“KLT”抽象“内核”“容器”“虚容器” 内存抽象虚拟存储(容器调用) 多机器调度 前言 今天复习了一下操作系统,系统过了一下,感觉还有点时间,那么顺便来讨论一下,关于我的…

.maloxx勒索病毒数据怎么处理|数据解密恢复,malox/mallox

导语: 随着科技的快速发展,数据成为了企业和个人不可或缺的财富。然而,网络安全威胁也日益增多,其中Mallox勒索病毒家族的最新变种.maloxx勒索病毒的出现给我们带来了巨大的困扰。但不要担心!91数据恢复研究院将为您揭…

一、Docker介绍

学习参考:尚硅谷Docker实战教程、Docker官网、其他优秀博客(参考过的在文章最后列出) 目录 前言一、Docker是什么?二、Docker能干撒?三、容器虚拟化技术 和 虚拟机有啥区别?1.虚拟机2.容器虚拟化技术3.对比 四、Docker组成4.1 镜像…

python自动化办公——定制化将电子签名批量签写到PDF文件

python自动化办公——定制化将电子签名批量签写到PDF文件 文章目录 python自动化办公——定制化将电子签名批量签写到PDF文件1、安装依赖2、需求分析3、代码 1、安装依赖 首先需要下载所需要的库 pip install pdf2image pip install img2pdf pip install opencv-python此外还…

【工作记录】基于可视化爬虫spiderflow实战天气数据爬取@20230618

前言 之前写过一篇关于可视化爬虫spiderflow的文章,介绍了基本语法并实战了某校园新闻数据的爬取。 还有一篇文章介绍了基于docker-compose快速部署spiderflow的过程,需要部署的话可参考该文章。 文章链接如下: 可视化爬虫框架spiderflow入门及实战【…

基于SpringBoot+Vue+微信小程序的电影平台

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 研究背景:…

【通过Data Studio连接openGauss---快速入门】

【通过Data Studio连接openGauss---快速入门】 🔻 一、访问openGauss🔰 1.1 确认连接信息(单节点)🔰 1.2 使用gsql访问openGauss(本地连接数据库)🔰 1.3 使用gsql访问openGauss&…

多道程序设计(操作系统)

目录 1 单道程序设计的缺点 2 多道程序设计的提出 3 多道程序设计的问题 多道程序设计目标: 多道程序设计是操作系统所采用最基本、最重要的技术,其根本目标是提高整个计算机系统的效率。衡量系统效率有一个尺度,那就是吞吐量。 提高系统…

clDice-一种新的分割标准-能够促进管状结构分割的连接性

clDice-a Novel Topology-Preserving Loss Function for Tubular StructureSegmentation论文总结 论文:clDice-A Novel Topology-Preserving Loss Function for Tubular Structure 源码:GitHub - jocpae/clDice 目录 一、论文背景和出发点 二、创新点 …

动态规划III (买股票-121、122、123、188、309)

CP121 买股票的最佳时机 题目描述: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利…

Advanced-C.04.函数

函数 函数的定义 包括两个部分,“函数头"和"函数体” 返回值类型 函数名(形参1,形参2,...)//函数头{}//函数体 函数类型决定返回值类型,执行函数需要调用 函数的返回值和参数可以是任何类型,包括空类型!!函…

Android adb shell命令捕获systemtrace

Android adb shell命令捕获systemtrace (1)抓取trace文件: adb shell perfetto -o /data/misc/perfetto-traces/trace_file.perfetto-trace -t 20s sched freq idle am wm gfx view binder_driver hal dalvik camera input res memory -t 时长,20s&a…

Java学习笔记23——集合进阶

集合进阶 集合进阶CollectionCollection集合常用方法Collection集合的遍历Iterator中的常用方法集合的使用步骤 List集合概述和特点List集合的特点List集合的特有方法并发修改异常ListIterator 列表迭代器常用方法增强for循环 数据结构栈队列数组链表 Set集合Set特点实现类Hash…

Presto(Trino)的逻辑执行计划和Fragment生成过程

文章目录 1. 前言2. 从SQL提交到Fragment计划生成全过程2.1 Statement生成2.2 对结构化的Statement进行分析2.3 生成未优化的逻辑执行计划2.4 基于Visitor模型对逻辑执行计划进行优化2.4.1 Visitor模型介绍2.4.2 Presto中常见的逻辑执行计划优化器常规OptimizerIterativeOptimi…

阿里月薪23k软件测试工程师:必备的6大技能(建议收藏)

随着软件开发行业的日益发展,岗位需求量和行业薪资都不断增长,想要入行的人也是越来越多,但不知道从哪里下手,今天,就给大家分享一下,软件测试行业都有哪些必会的方法和技术知识点,作为小白该从…