2024最新 Jenkins + Docker 实战教程(四) - 编写自己的Springboot项目实现自动化部署

在这里插入图片描述

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志
🎐 个人CSND主页——Micro麦可乐的博客
🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战
🌺《RabbitMQ》本专栏主要介绍使用JAVA开发RabbitMQ的系列教程,从基础知识到项目实战
🌸《设计模式》专栏以实际的生活场景为案例进行讲解,让大家对设计模式有一个更清晰的理解
💕《Jenkins实战》专栏主要介绍Jenkins+Docker+Git+Maven的实战教程,让你快速掌握项目CI/CD,是2024年最新的实战教程
如果文章能够给大家带来一定的帮助!欢迎关注、评论互动~

Jenkins + Docker + Git + Maven 实战教程(四) - 编写自己的Springboot项目实现自动化部署

  • 前言
  • 构建前准备
  • 开始配置Jenkins
  • 构建测试
  • 结语

前言

上一章节中虽然我们实现了自动化的部署,但是官方的DEMO中并没有Dockerfile文件,我们还是需要手动构建,本章节我们自己编写一个简单的SpringBoot项目实现自动化部署,从代码编写到上传Gitee再到Jenkins自动化部署。

整体流程如下:

在这里插入图片描述

构建前准备

在开始Jenkins自动化部署前,我们需要执行如下操作

1、注册Gitee账号
2、创建Git仓库
3、IDEA安装Gitee插件
4、Gitee插件配置账户信息
5、IDEA创建SpringBoot项目
6、SpringBoot项目编写Dockerfile文件
7、get push项目到Gitee

注册Gitee账号以及创建仓库这里我们就忽略了

博主以Mac为例,找到 IntelliJ IDEA - Preferences - Plugins 搜索gitee安装插件
在这里插入图片描述
Gitee插件配置账户信息,可以选择授权登陆以及账号密码登陆等,大家根据情况自行选择
在这里插入图片描述
创建一个简单的SpringBoot项目
在这里插入图片描述
项目根目录创建Dockerfile文件

FROM openjdk:11
# 设置工作目录
WORKDIR /app
# 将宿主机的目录挂载到容器的/app目录
VOLUME /app
# 复制.jar文件到工作目录
COPY jenkins-demo-project-0.0.1-SNAPSHOT.jar /app/jenkins-demo.jar
# 设置容器启动时执行的命令
CMD ["java", "-jar", "jenkins-demo.jar" ,"--server.port=9090"]

调整pom.xml设置maven将Dockerfile一并打包到target目录下
在这里插入图片描述
最后通过IDEA提交代码到Gitee仓库
由于博主的仓库是公开的,小伙伴们也可以直接使用博主的demo 【仓库地址】

开始配置Jenkins

找到左侧菜单 - 新建任务 - jenkins-demo
在这里插入图片描述
创建完成后,点击对应任务进入
在这里插入图片描述
在左侧找到配置
在这里插入图片描述
配置Git Repository URL
在这里插入图片描述
找到 Post Steps 选项,,选择仅构建成功执行
在这里插入图片描述
设置我们的sell命令,需要判断对应容器是否存在,存在则需要停止并删除

# 默认操作在Jenkins工作目录下的项目名目录 即 workspace/jenkins-demo/target
cd target
#构建镜像
docker build -t jenkins-demo .
# 使用docker ps和grep来检查容器是否存在
if docker ps -a | grep "my-jenkins-demo" > /dev/null; then
    echo "容器存在"
    #容器存在则停止并删除容器
    docker stop my-jenkins-demo
    docker rm my-jenkins-demo
else
    echo "容器不存在"
fi
#运行容器
docker run -d -p 9090:9090 --name my-jenkins-demo jenkins-demo

注意
上一章节我们已经处理了将宿主机的Docker引擎挂载到Jenkins容器上,即Jenkins容器调用宿主机的Docker
如果你没有看过上一章教程 可以点击 查看上一章内容

构建测试

配置完成,点击左侧立即构建,在下方的构建历史点击对应构建编号进入查看控制台输出
在这里插入图片描述
输出如下
在这里插入图片描述
测试访问
在这里插入图片描述

结语

本章节从创建SprongBoot项目 -> 上传gitee -> Jenkins自动化部署进行演示,小伙伴们可以跟着博主的教程操作自己走一遍,过程中如果出现其它问题,欢迎留言大家一起交流!

下一章节:2024最新 Jenkins + Docker 实战教程(五) - 配置Webhooks实现自动构建及运行项目


在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

前端基础:1-2 面向对象 + Promise

面向对象 对象是什么?为什么要面向对象? 通过代码抽象,进而藐视某个种类物体的方式 特点:逻辑上迁移更加灵活、代码复用性更高、高度的模块化 对象的理解 对象是对于单个物体的简单抽象对象是容器,封装了属性 &am…

IP学习——ospf1

OSPF:开放式最短路径优先协议 无类别IGP协议:链路状态型。基于 LSA收敛,故更新量较大,为在中大型网络正常工作,需要进行结构化的部署---区域划分、ip地址规划 支持等开销负载均衡 组播更新 ---224.0.0.5 224.0.0.6 …

小程序properties默认值定义及父子组件的传值

因经常写vue,很久没写小程序,容易串频道,现记录一下小程序的组件用法、监听传入值及父子传值方式 首先小程序中传值是没有:(冒号)的,其次properties中定义默认值不需要写default 1.自定义组件中,首先json…

存储+调优:存储-IP-SAN

存储调优:存储-IP-SAN 数据一致性问题 硬盘(本地,远程同步rsync) 存储设备(网络) 网络存储 不同接口的磁盘 1.速率 2.支持连接更多设备 3.支持热拔插 存储设备什么互联 千…

iOS 17.5 release notes

文章目录 iOS 17.5 更新恢复了多年前删除的一些图片新增彩虹壁纸欧盟用户可直接从网站下载应用新增了追踪通知改进 Apple News图书应用"阅读目标"设计更新颜色匹配的播客小部件Web浏览器安全权限的访问下一代“Beats Pill”扬声器在iOS 17.5代码中得到确认店内Vision…

学硕都考11408的211院校!河北工业大学计算机考研考情分析!

河北工业大学(Hebei University of Technology),简称河北工大,坐落于天津市,由河北省人民政府、天津市人民政府与中华人民共和国教育部共建, 隶属于河北省,是国家“双一流”建设高校、国家“211…

企业微信主体机构如何修改?

企业微信变更主体有什么作用? 做过企业运营的小伙伴都知道,很多时候经常会遇到现有的企业需要注销,切换成新的企业进行经营的情况,但是原来企业申请的企业微信上面却积累了很多客户,肯定不能直接丢弃,所以这…

OpenAI宫斗剧番外篇: “Ilya与Altman联手对抗微软大帝,扫除黑恶势力”,“余华”和“莫言”犀利点评

事情是这样的。 小编我是一个重度的智谱清言用户,最近智谱清言悄悄上线了一个“划词引用”功能后,我仿佛打开了新世界的大门。我甚至用这个小功能,玩出来了即将为你上映的《OpenAI宫斗剧番外篇》。 3.5研究测试:hujiaoai.cn 4研…

Stable Diffusion vs Midjunery的区别和选择

现在网上最多的关于AI绘画的工具莫过于stable diffusion(sd)和midjunery(mj)了,最近尝试了一番,稍作总结吧算是。我们对于工具的使用通常考虑的无非就是好不好用,效果如何,当然还有费…

学习_C语言下使用ringbuffer实现任意数据类型的FIFO

思考及注意看:调试中的任意。 https://www.cnblogs.com/dreamboy2000/p/12982423.html

Mac虚拟机工具 CrossOver 24.0.0 Beta3 Mac中文版

CrossOver是一款在Mac上运行Windows应用程序的软件,无需安装虚拟机或重启计算机,简化了操作过程,提高了工作效率,为用户带来便捷体验。前往Mac青桔下载,享受前所未有的便利和高效。摘要由作者通过智能技术生成 CrossOv…

vulnhub靶场之FunBox-7

一.环境搭建 1.靶场描述 Boot2root in 6 steps for script-kiddies.Timeframe to root this box: 20 mins to never ever. Its on you.HINTS: Enum without sense, costs you too many time:Use "Daisys best friend" for information gathering. Visit "Karl…

使用决策树对金融贷款数据进行分析

使用决策树对金融贷款数据进行分析 在本篇博客中,我们将通过使用 Python、Pandas 和多种机器学习技术,对一组贷款数据进行全面分析。通过详细的步骤展示,你将学会如何进行数据预处理、可视化分析以及构建预测模型。 第一步:导入…

vscode添加代办相关插件,提高开发效率

这里写目录标题 前言插件添加添加TODO Highlight安装TODO Highlight在项目中自定义需要高亮显示的关键字 TODO Tree安装TODO Tree插件 单行注释快捷键 前言 在前端开发中,我们经常会遇到一些未完成、有问题或需要修复的部分,但又暂时未完成或未确定如何处…

专题汇编 | ChatGPT引领AIGC新浪潮(一)

ChatGPT的产生与迭代 2022年11月末,美国人工智能研究实验室OpenAI推出ChatGPT。上线的ChatGPT只用了2个月,活跃用户数就突破了1亿,创造了应用增速最快的纪录。 ChatGPT是什么 ChatGPT是一种人工智能技术驱动的自然语言处理(Natural Language Processing,NLP)工具,使用的…

多线程(八)

一、wait和notify 等待 通知 机制 和join的用途类似,多个线程之间随机调度,引入 wait notify 就是为了能够从应用层面上,干预到多个不同线程代码的执行顺序.( 这里说的干预,不是影响系统的线程调度策略 内核里的线程调度,仍然是无序的. 相当于是在应用程序…

RA-RISK ANALYSIS

文章目录 一、期刊简介二、征稿信息三、期刊表现四、投稿须知五、咨询 一、期刊简介 Risk Analysis代表风险分析学会出版,在ISI期刊引文报告中的社会科学、数学方法类别中排名前10位,为风险分析领域的新发展提供了焦点。这本国际同行评审期刊致力于发表…

VC++学习(3)——认识MFC框架,新建项目,添加按钮

目录 引出第三讲 MFC框架新建项目Windows搜索【包含内容的搜索】如何加按钮添加成员变量添加成功 添加按钮2杂项 总结 引出 VC学习(3)——认识MFC框架,新建项目,添加按钮 MFC(Microsoft Foundation Classes),是微软公…

基于springboot+vue的学生考勤管理系统

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

【HarmonyOS4学习笔记】《HarmonyOS4+NEXT星河版入门到企业级实战教程》课程学习笔记(九)

课程地址: 黑马程序员HarmonyOS4NEXT星河版入门到企业级实战教程,一套精通鸿蒙应用开发 (本篇笔记对应课程第 16 节) P16《15.ArkUI-状态管理-任务统计案例》 1、实现任务进度卡片 怎么让进度条和进度展示文本堆叠展示&#xff1…